From 4d10bb34e8458525469f3a8bddcca75fe5adf9eb Mon Sep 17 00:00:00 2001 From: Kristof Hetzl Date: Wed, 10 Dec 2025 12:54:57 +0000 Subject: [PATCH 1/2] Add new Ranch metrics --- apps/arweave/src/ar_metrics_collector.erl | 31 ++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/apps/arweave/src/ar_metrics_collector.erl b/apps/arweave/src/ar_metrics_collector.erl index aa90bfd0a3..261b078d04 100644 --- a/apps/arweave/src/ar_metrics_collector.erl +++ b/apps/arweave/src/ar_metrics_collector.erl @@ -36,6 +36,7 @@ add_metric_family({Name, Type, Help, Metrics}, Callback) -> Callback(create_mf(?METRIC_NAME(Name), Help, Type, Metrics)). metrics() -> + RanchInfo = ranch:info(), [ {storage_blocks_stored, gauge, "Blocks stored", @@ -56,7 +57,13 @@ metrics() -> {ar_header_sync_bytes_total, gauge, "ar_header_sync process memory", get_process_memory(ar_header_sync)}, {ar_wallets_bytes_total, gauge, "ar_wallets process memory", - get_process_memory(ar_wallets)} + get_process_memory(ar_wallets)}, + {ar_http_iface_listener_ranch_active_connections, gauge, "Currently active Ranch connections", + get_ranch_active_connections(RanchInfo, ar_http_iface_listener)}, + {ar_http_iface_listener_ranch_all_connections, gauge, "Currently active Ranch connections", + get_ranch_all_connections(RanchInfo, ar_http_iface_listener)}, + {ar_http_iface_listener_ranch_acceptors, gauge, "Currenly live Ranch acceptor processes", + get_ranch_acceptors(ar_http_iface_listener)} ]. get_process_memory(Name) -> @@ -67,3 +74,25 @@ get_process_memory(Name) -> {memory, Memory} = erlang:process_info(PID, memory), Memory end. + +get_ranch_active_connections(RInfo, Name) -> + get_ranch_info_value(RInfo, Name, active_connections). + +get_ranch_all_connections(RInfo, Name) -> + get_ranch_info_value(RInfo, Name, all_connections). + +get_ranch_info_value(RInfo, Name, Key) -> + PoolDetails = proplists:get_value(Name, RInfo, []), + %% Signal error condition with -1 + proplists:get_value(Key, PoolDetails, -1). + +get_ranch_acceptors(Name) -> + Sups = ranch_server:get_listener_sups(), + ListenerSup = proplists:get_value(Name, Sups), + ListenerChildren = supervisor:which_children(ListenerSup), + case lists:keyfind(ranch_acceptors_sup, 1, ListenerChildren) of + {_, AcceptorsSup, _, _} when is_pid(AcceptorsSup) -> + length(supervisor:which_children(AcceptorsSup)); + {_, _Atom, _, _} -> + -1 + end. From 5ee6d05e51dac51c8fde0c96f7a01cb82e93bdea Mon Sep 17 00:00:00 2001 From: Kristof Hetzl Date: Wed, 10 Dec 2025 15:00:07 +0000 Subject: [PATCH 2/2] Remove message_queue_len metrics --- apps/arweave/src/ar_metrics_collector.erl | 6 ------ 1 file changed, 6 deletions(-) diff --git a/apps/arweave/src/ar_metrics_collector.erl b/apps/arweave/src/ar_metrics_collector.erl index 261b078d04..c19322d6f2 100644 --- a/apps/arweave/src/ar_metrics_collector.erl +++ b/apps/arweave/src/ar_metrics_collector.erl @@ -41,12 +41,6 @@ metrics() -> {storage_blocks_stored, gauge, "Blocks stored", case ets:lookup(ar_header_sync, synced_blocks) of [] -> 0; [{_, N}] -> N end}, - {arnode_queue_len, gauge, - "Size of message queuee on ar_node_worker", - element(2, erlang:process_info(whereis(ar_node_worker), message_queue_len))}, - {arbridge_queue_len, gauge, - "Size of message queuee on ar_bridge", - element(2, erlang:process_info(whereis(ar_bridge), message_queue_len))}, {ignored_ids_len, gauge, "Size of table of Ignored/already seen IDs:", ets:info(ignored_ids, size)},