Skip to content

Commit 5fdfe22

Browse files
michaelklishinmergify[bot]
authored andcommitted
Prometheus: expose memory breakdown metrics
Closes #11743. (cherry picked from commit 5dad0f8) (cherry picked from commit d1a7167) # Conflicts: # deps/rabbitmq_prometheus/src/collectors/prometheus_rabbitmq_core_metrics_collector.erl
1 parent 65cfeee commit 5fdfe22

File tree

1 file changed

+66
-1
lines changed

1 file changed

+66
-1
lines changed

deps/rabbitmq_prometheus/src/collectors/prometheus_rabbitmq_core_metrics_collector.erl

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,35 @@
8989
{2, ?MILLISECOND, erlang_uptime_seconds, gauge, "Node uptime", uptime}
9090
]},
9191

92+
{node_memory, [
93+
{2, undefined, memory_code_module_bytes, gauge, "Code module memory footprint", code},
94+
{2, undefined, memory_client_connection_reader_bytes, gauge, "Client connection reader processes footprint in bytes", connection_readers},
95+
{2, undefined, memory_client_connection_writer_bytes, gauge, "Client connection writer processes footprint in bytes", connection_writers},
96+
{2, undefined, memory_client_connection_channel_bytes, gauge, "Client connection channel processes footprint in bytes", connection_channels},
97+
{2, undefined, memory_client_connection_other_bytes, gauge, "Client connection other processes footprint in bytes", connection_other},
98+
{2, undefined, memory_classic_queue_erlang_process_bytes, gauge, "Classic queue processes footprint in bytes", queue_procs},
99+
{2, undefined, memory_quorum_queue_erlang_process_bytes, gauge, "Quorum queue processes footprint in bytes", quorum_queue_procs},
100+
{2, undefined, memory_quorum_queue_dlx_erlang_process_bytes, gauge, "Quorum queue DLX worker processes footprint in bytes", quorum_queue_dlx_procs},
101+
{2, undefined, memory_stream_erlang_process_bytes, gauge, "Stream processes footprint in bytes", stream_queue_procs},
102+
{2, undefined, memory_stream_replica_reader_erlang_process_bytes, gauge, "Stream replica reader processes footprint in bytes", stream_queue_replica_reader_procs},
103+
{2, undefined, memory_stream_coordinator_erlang_process_bytes, gauge, "Stream coordinator processes footprint in bytes", stream_queue_coordinator_procs},
104+
{2, undefined, memory_plugin_bytes, gauge, "Total plugin footprint in bytes", plugins},
105+
{2, undefined, memory_modern_metadata_store_bytes, gauge, "Modern metadata store footprint in bytes", metadata_store},
106+
{2, undefined, memory_other_erlang_process_bytes, gauge, "Other processes footprint in bytes", other_proc},
107+
{2, undefined, memory_metrics_bytes, gauge, "Metric table footprint in bytes", metrics},
108+
{2, undefined, memory_management_stats_db_bytes, gauge, "Management stats database footprint in bytes", mgmt_db},
109+
{2, undefined, memory_classic_metadata_store_bytes, gauge, "Classic metadata store footprint in bytes", mnesia},
110+
{2, undefined, memory_quorum_queue_ets_table_bytes, gauge, "Quorum queue ETS tables footprint in bytes", quorum_ets},
111+
{2, undefined, memory_modern_metadata_store_ets_table_bytes, gauge, "Modern metadata store ETS tables footprint in bytes", metadata_store_ets},
112+
{2, undefined, memory_other_ets_table_bytes, gauge, "Other ETS tables footprint in bytes", other_ets},
113+
{2, undefined, memory_binary_heap_bytes, gauge, "Binary heap size in bytes", binary},
114+
{2, undefined, memory_message_index_bytes, gauge, "Message index footprint in bytes", msg_index},
115+
{2, undefined, memory_atom_table_bytes, gauge, "Atom table size in bytes", atom},
116+
{2, undefined, memory_other_system_bytes, gauge, "Other runtime footprint in bytes", other_system},
117+
{2, undefined, memory_runtime_allocated_unused_bytes, gauge, "Runtime allocated but unused blocks size in bytes", allocated_unused},
118+
{2, undefined, memory_runtime_reserved_unallocated_bytes, gauge, "Runtime reserved but unallocated blocks size in bytes", reserved_unallocated}
119+
]},
120+
92121
{node_persister_metrics, [
93122
{2, undefined, io_read_ops_total, counter, "Total number of I/O read operations", io_read_count},
94123
{2, undefined, io_read_bytes_total, counter, "Total number of I/O bytes read", io_read_bytes},
@@ -130,7 +159,7 @@
130159
{4, undefined, auth_attempts_detailed_failed_total, counter, "Total number of failed authentication attempts with source info"}
131160
]},
132161

133-
%%% Those metrics have reference only to a queue name. This is the only group where filtering (e.g. by vhost) makes sense.
162+
%%% These metrics only reference a queue name. This is the only group where filtering (e.g. by vhost) makes sense.
134163
{queue_coarse_metrics, [
135164
{2, undefined, queue_messages_ready, gauge, "Messages ready to be delivered to consumers"},
136165
{3, undefined, queue_messages_unacked, gauge, "Messages delivered to consumers but not yet acknowledged"},
@@ -630,7 +659,43 @@ get_data(vhost_status, _, _, _) ->
630659
false -> 0
631660
end}
632661
|| VHost <- rabbit_vhost:list() ];
662+
<<<<<<< HEAD
633663
get_data(exchange_bindings, _, _, _) ->
664+
=======
665+
get_data(node_memory, _, _) ->
666+
BreakdownPL = rabbit_vm:memory(),
667+
KeysOfInterest = [
668+
code,
669+
connection_readers,
670+
connection_writers,
671+
connection_channels,
672+
connection_other,
673+
queue_procs,
674+
quorum_queue_procs,
675+
quorum_queue_dlx_procs,
676+
stream_queue_procs,
677+
stream_queue_replica_reader_procs,
678+
stream_queue_coordinator_procs,
679+
plugins,
680+
metadata_store,
681+
other_proc,
682+
metrics,
683+
mgmt_db,
684+
mnesia,
685+
quorum_ets,
686+
metadata_store_ets,
687+
other_ets,
688+
binary,
689+
msg_index,
690+
atom,
691+
other_system,
692+
allocated_unused,
693+
reserved_unallocated
694+
],
695+
Data = maps:to_list(maps:with(KeysOfInterest, maps:from_list(BreakdownPL))),
696+
[{node_memory, Data}];
697+
get_data(exchange_bindings, _, _) ->
698+
>>>>>>> d1a7167b37 (Prometheus: expose memory breakdown metrics)
634699
Exchanges = lists:foldl(fun
635700
(#exchange{internal = true}, Acc) ->
636701
Acc;

0 commit comments

Comments
 (0)