feat: handle ETS tables in graphite_msg
authorSiraaj Khandkar <siraaj@khandkar.net>
Wed, 23 Sep 2015 21:53:49 +0000 (17:53 -0400)
committerSiraaj Khandkar <siraaj@khandkar.net>
Thu, 24 Sep 2015 01:50:31 +0000 (21:50 -0400)
src/beam_stats_msg_graphite.erl

index b423e63..bc08353 100644 (file)
@@ -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
     },
     <<NodeID/binary>>
@@ -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, <<NodeID/binary>>, Timestamp) ->
         end,
     lists:map(ComponentToMessage, Memory).
 
+-spec of_ets(beam_stats_ets_table:t(), binary(), erlang:timestamp()) ->
+    [t()].
+of_ets(PerTableStats, <<NodeID/binary>>, 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
+    },
+    <<NodeID/binary>>,
+    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) ->
This page took 0.020668 seconds and 4 git commands to generate.