Skip to content

Commit 3b1ff80

Browse files
committed
added segment file count to queue_metrics ets and exposed in /metrics endpoint
1 parent 90c807b commit 3b1ff80

File tree

3 files changed

+19
-8
lines changed

3 files changed

+19
-8
lines changed

deps/rabbit/src/rabbit_osiris_metrics.erl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
members,
2828
memory,
2929
readers,
30-
consumers
30+
consumers,
31+
segments
3132
]).
3233

3334
-record(state, {timeout :: non_neg_integer()}).

deps/rabbit/src/rabbit_stream_queue.erl

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
-define(INFO_KEYS, [name, durable, auto_delete, arguments, leader, members, online, state,
6767
messages, messages_ready, messages_unacknowledged, committed_offset,
6868
policy, operator_policy, effective_policy_definition, type, memory,
69-
consumers]).
69+
consumers, segments]).
7070

7171
-type appender_seq() :: non_neg_integer().
7272

@@ -769,6 +769,14 @@ i(committed_offset, Q) ->
769769
Data ->
770770
maps:get(committed_offset, Data, '')
771771
end;
772+
i(segments, Q) ->
773+
Key = {osiris_writer, amqqueue:get_name(Q)},
774+
case osiris_counters:overview(Key) of
775+
undefined ->
776+
'';
777+
Data ->
778+
maps:get(segments, Data, '')
779+
end;
772780
i(policy, Q) ->
773781
case rabbit_policy:name(Q) of
774782
none -> '';

deps/rabbitmq_prometheus/src/collectors/prometheus_rabbitmq_core_metrics_collector.erl

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,8 @@
160160
{2, undefined, queue_messages_paged_out_bytes, gauge, "Size in bytes of messages paged out to disk", message_bytes_paged_out},
161161
{2, undefined, queue_head_message_timestamp, gauge, "Timestamp of the first message in the queue, if any", head_message_timestamp},
162162
{2, undefined, queue_disk_reads_total, counter, "Total number of times queue read messages from disk", disk_reads},
163-
{2, undefined, queue_disk_writes_total, counter, "Total number of times queue wrote messages to disk", disk_writes}
163+
{2, undefined, queue_disk_writes_total, counter, "Total number of times queue wrote messages to disk", disk_writes},
164+
{2, undefined, stream_segments, counter, "Total number of stream segment files", segments}
164165
]},
165166

166167
%%% Metrics that contain reference to a channel. Some of them also have
@@ -538,7 +539,7 @@ get_data(queue_consumer_count = MF, false, VHostsFilter, QueuesFilter) ->
538539
end, empty(MF), Table),
539540
[{Table, [{consumers, A1}]}];
540541
get_data(queue_metrics = Table, false, VHostsFilter, QueuesFilter) ->
541-
{Table, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16} =
542+
{Table, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17} =
542543
ets:foldl(fun
543544
({#resource{kind = queue, virtual_host = VHost}, _, _}, Acc) when is_map(VHostsFilter), map_get(VHost, VHostsFilter) == false ->
544545
Acc;
@@ -559,7 +560,7 @@ get_data(queue_metrics = Table, false, VHostsFilter, QueuesFilter) ->
559560
{messages_bytes_persistent, A9}, {message_bytes, A10},
560561
{message_bytes_ready, A11}, {message_bytes_unacknowledged, A12},
561562
{messages_paged_out, A13}, {message_bytes_paged_out, A14},
562-
{disk_reads, A15}, {disk_writes, A16}]}];
563+
{disk_reads, A15}, {disk_writes, A16}, {segments, A17}]}];
563564
get_data(Table, false, VHostsFilter, QueuesFilter) when Table == channel_exchange_metrics;
564565
Table == queue_coarse_metrics;
565566
Table == channel_queue_metrics;
@@ -668,7 +669,7 @@ get_data(Table, _, _, _) ->
668669

669670

670671
sum_queue_metrics(Props, {T, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11,
671-
A12, A13, A14, A15, A16}) ->
672+
A12, A13, A14, A15, A16, A17}) ->
672673
{T,
673674
sum(proplists:get_value(consumers, Props), A1),
674675
sum(proplists:get_value(consumer_utilisation, Props), A2),
@@ -685,7 +686,8 @@ sum_queue_metrics(Props, {T, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11,
685686
sum(proplists:get_value(messages_paged_out, Props), A13),
686687
sum(proplists:get_value(message_bytes_paged_out, Props), A14),
687688
sum(proplists:get_value(disk_reads, Props), A15),
688-
sum(proplists:get_value(disk_writes, Props), A16)
689+
sum(proplists:get_value(disk_writes, Props), A16),
690+
sum(proplists:get_value(segments, Props), A17)
689691
}.
690692

691693
division(0, 0) ->
@@ -707,7 +709,7 @@ empty(T) when T == ra_metrics ->
707709
empty(T) when T == channel_queue_metrics; T == channel_metrics ->
708710
{T, 0, 0, 0, 0, 0, 0, 0};
709711
empty(queue_metrics = T) ->
710-
{T, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}.
712+
{T, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}.
711713

712714
sum(undefined, B) ->
713715
B;

0 commit comments

Comments
 (0)