From 6e1a5b001c3d8248a52c76405238699a55feb92e Mon Sep 17 00:00:00 2001 From: Siraaj Khandkar Date: Wed, 23 Sep 2015 17:53:49 -0400 Subject: [PATCH] feat: handle ETS tables in graphite_msg --- src/beam_stats_msg_graphite.erl | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/beam_stats_msg_graphite.erl b/src/beam_stats_msg_graphite.erl index b423e63..bc08353 100644 --- a/src/beam_stats_msg_graphite.erl +++ b/src/beam_stats_msg_graphite.erl @@ -1,6 +1,7 @@ -module(beam_stats_msg_graphite). -include("include/beam_stats.hrl"). +-include("include/beam_stats_ets_table.hrl"). -include("include/beam_stats_msg_graphite.hrl"). -export_type( @@ -35,7 +36,7 @@ of_beam_stats(#beam_stats , context_switches = ContextSwitches , reductions = Reductions , run_queue = RunQueue - , ets = _ETS + , ets = ETS , processes = _Processes }, <> @@ -48,7 +49,9 @@ of_beam_stats(#beam_stats , cons([N, <<"reductions">> ], Reductions , Ts) , cons([N, <<"run_queue">> ], RunQueue , Ts) | of_memory(Memory, NodeID, Ts) - ]. + ] + ++ of_ets(ETS, NodeID, Ts) + . -spec of_memory([{atom(), non_neg_integer()}], binary(), erlang:timestamp()) -> [t()]. @@ -60,6 +63,31 @@ of_memory(Memory, <>, Timestamp) -> end, lists:map(ComponentToMessage, Memory). +-spec of_ets(beam_stats_ets_table:t(), binary(), erlang:timestamp()) -> + [t()]. +of_ets(PerTableStats, <>, Timestamp) -> + OfEtsTable = fun (Table) -> of_ets_table(Table, NodeID, Timestamp) end, + NestedMsgs = lists:map(OfEtsTable, PerTableStats), + lists:append(NestedMsgs). + +-spec of_ets_table(beam_stats_ets_table:t(), binary(), erlang:timestamp()) -> + [t()]. +of_ets_table(#beam_stats_ets_table + { id = ID + , name = Name + , size = Size + , memory = Memory + }, + <>, + Timestamp +) -> + IDBin = beam_stats_ets_table:id_to_bin(ID), + NameBin = atom_to_binary(Name, latin1), + NameAndID = [NameBin, IDBin], + [ cons([NodeID, <<"ets_table">>, <<"size">> | NameAndID], Size , Timestamp) + , cons([NodeID, <<"ets_table">>, <<"memory">> | NameAndID], Memory, Timestamp) + ]. + -spec cons([binary()], integer(), erlang:timestamp()) -> t(). cons(Path, Value, Timestamp) -> -- 2.20.1