beam_stats_to_bins(#beam_stats
{ node_id = NodeID
, memory = Memory
+ , io_bytes_in = IOBytesIn
+ , io_bytes_out = IOBytesOut
+ , context_switches = ContextSwitches
+ , reductions = Reductions
+ , run_queue = RunQueue
}
) ->
NodeIDBin = node_id_to_bin(NodeID),
- Msgs1 = memory_to_msgs(Memory),
+ Msgs1 =
+ [ io_bytes_in_to_msg(IOBytesIn)
+ , io_bytes_out_to_msg(IOBytesOut)
+ , context_switches_to_msg(ContextSwitches)
+ , reductions_to_msg(Reductions)
+ , run_queue_to_msg(RunQueue)
+ | memory_to_msgs(Memory)
+ ],
Msgs2 = [statsd_msg_add_name_prefix(M, NodeIDBin) || M <- Msgs1],
[statsd_msg_to_bin(M) || M <- Msgs2].
+-spec run_queue_to_msg(non_neg_integer()) ->
+ statsd_msg().
+run_queue_to_msg(RunQueue) ->
+ #statsd_msg
+ { name = <<"run_queue">>
+ , value = RunQueue
+ , type = gauge
+ }.
+
+-spec reductions_to_msg(non_neg_integer()) ->
+ statsd_msg().
+reductions_to_msg(Reductions) ->
+ #statsd_msg
+ { name = <<"reductions">>
+ , value = Reductions
+ , type = gauge
+ }.
+
+-spec context_switches_to_msg(non_neg_integer()) ->
+ statsd_msg().
+context_switches_to_msg(ContextSwitches) ->
+ #statsd_msg
+ { name = <<"context_switches">>
+ , value = ContextSwitches
+ , type = gauge
+ }.
+
+-spec io_bytes_in_to_msg(non_neg_integer()) ->
+ statsd_msg().
+io_bytes_in_to_msg(IOBytesIn) ->
+ #statsd_msg
+ { name = <<"io.bytes_in">>
+ , value = IOBytesIn
+ , type = gauge
+ }.
+
+-spec io_bytes_out_to_msg(non_neg_integer()) ->
+ statsd_msg().
+io_bytes_out_to_msg(IOBytesOut) ->
+ #statsd_msg
+ { name = <<"io.bytes_out">>
+ , value = IOBytesOut
+ , type = gauge
+ }.
+
-spec memory_to_msgs([{atom(), non_neg_integer()}]) ->
[statsd_msg()].
memory_to_msgs(Memory) ->
-spec memory_component_to_statsd_msg({atom(), non_neg_integer()}) ->
statsd_msg().
memory_component_to_statsd_msg({MemType, MemSize}) when MemSize >= 0 ->
+ MemTypeBin = atom_to_binary(MemType, latin1),
#statsd_msg
- { name = atom_to_binary(MemType, latin1)
+ { name = <<"memory.", MemTypeBin/binary>>
, value = MemSize
, type = gauge
}.