Skip to content
This repository was archived by the owner on Nov 17, 2020. It is now read-only.

Commit c415c54

Browse files
committed
New connection churn metrics table
Rate metrics for monitoring of high connection churn scenarios [#160943831]
1 parent c0f3744 commit c415c54

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

include/rabbit_core_metrics.hrl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,13 @@
3030
{node_persister_metrics, set},
3131
{node_coarse_metrics, set},
3232
{node_metrics, set},
33-
{node_node_metrics, set}]).
33+
{node_node_metrics, set},
34+
{connection_churn_metrics, set}]).
3435

3536
-define(CORE_EXTRA_TABLES, [{gen_server2_metrics, set}]).
3637

38+
-define(CONNECTION_CHURN_METRICS, {node(), 0, 0, 0, 0, 0, 0, 0}).
39+
3740
%% connection_created :: {connection_id, proplist}
3841
%% connection_metrics :: {connection_id, proplist}
3942
%% connection_coarse_metrics :: {connection_id, recv_oct, send_oct, reductions}
@@ -53,3 +56,4 @@
5356
%% node_metrics :: {node_id, proplist}
5457
%% node_node_metrics :: {{node_id, node_id}, proplist}
5558
%% gen_server2_metrics :: {pid, buffer_length}
59+
%% connection_churn_metrics :: {node(), connection_created, connection_closed, channel_created, channel_closed, queue_declared, queue_created, queue_deleted}

src/rabbit_core_metrics.erl

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040

4141
-export([queue_stats/2,
4242
queue_stats/5,
43+
queue_declared/1,
44+
queue_created/1,
4345
queue_deleted/1,
4446
queues_deleted/1]).
4547

@@ -113,13 +115,17 @@ terminate() ->
113115

114116
connection_created(Pid, Infos) ->
115117
ets:insert(connection_created, {Pid, Infos}),
118+
ets:update_counter(connection_churn_metrics, node(), {2, 1},
119+
?CONNECTION_CHURN_METRICS),
116120
ok.
117121

118122
connection_closed(Pid) ->
119123
ets:delete(connection_created, Pid),
120124
ets:delete(connection_metrics, Pid),
121125
%% Delete marker
122126
ets:update_element(connection_coarse_metrics, Pid, {5, 1}),
127+
ets:update_counter(connection_churn_metrics, node(), {3, 1},
128+
?CONNECTION_CHURN_METRICS),
123129
ok.
124130

125131
connection_stats(Pid, Infos) ->
@@ -133,12 +139,16 @@ connection_stats(Pid, Recv_oct, Send_oct, Reductions) ->
133139

134140
channel_created(Pid, Infos) ->
135141
ets:insert(channel_created, {Pid, Infos}),
142+
ets:update_counter(connection_churn_metrics, node(), {4, 1},
143+
?CONNECTION_CHURN_METRICS),
136144
ok.
137145

138146
channel_closed(Pid) ->
139147
ets:delete(channel_created, Pid),
140148
ets:delete(channel_metrics, Pid),
141149
ets:delete(channel_process_metrics, Pid),
150+
ets:update_counter(connection_churn_metrics, node(), {5, 1},
151+
?CONNECTION_CHURN_METRICS),
142152
ok.
143153

144154
channel_stats(Pid, Infos) ->
@@ -233,8 +243,22 @@ queue_stats(Name, MessagesReady, MessagesUnacknowledge, Messages, Reductions) ->
233243
Messages, Reductions}),
234244
ok.
235245

246+
queue_declared(_Name) ->
247+
%% Name is not needed, but might be useful in the future.
248+
ets:update_counter(connection_churn_metrics, node(), {6, 1},
249+
?CONNECTION_CHURN_METRICS),
250+
ok.
251+
252+
queue_created(_Name) ->
253+
%% Name is not needed, but might be useful in the future.
254+
ets:update_counter(connection_churn_metrics, node(), {7, 1},
255+
?CONNECTION_CHURN_METRICS),
256+
ok.
257+
236258
queue_deleted(Name) ->
237259
ets:delete(queue_coarse_metrics, Name),
260+
ets:update_counter(connection_churn_metrics, node(), {8, 1},
261+
?CONNECTION_CHURN_METRICS),
238262
%% Delete markers
239263
ets:update_element(queue_metrics, Name, {3, 1}),
240264
CQX = ets:select(channel_queue_exchange_metrics, match_spec_cqx(Name)),

0 commit comments

Comments
 (0)