- NodeIDBin = node_id_to_bin(NodeID),
- 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) ->
- [memory_component_to_statsd_msg(MC) || MC <- 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 = <<"memory.", MemTypeBin/binary>>
- , value = MemSize
- , type = gauge
- }.
-
--spec statsd_msg_add_name_prefix(statsd_msg(), binary()) ->
- statsd_msg().
-statsd_msg_add_name_prefix(#statsd_msg{name=Name1}=Msg, <<NodeID/binary>>) ->
- Prefix = <<?PATH_PREFIX, ".", NodeID/binary, ".">>,
- Name2 = <<Prefix/binary, Name1/binary>>,
- Msg#statsd_msg{name=Name2}.
-
--spec statsd_msg_to_bin(statsd_msg()) ->
- binary().
-statsd_msg_to_bin(
- #statsd_msg
- { name = <<Name/binary>>
- , value = Value
- , type = Type = gauge
- }
-) when Value >= 0 ->
- TypeBin = metric_type_to_bin(Type),
- ValueBin = integer_to_binary(Value),
- << Name/binary
- , ":"
- , ValueBin/binary
- , "|"
- , TypeBin/binary
- , "\n"
- >>.
-
--spec metric_type_to_bin(metric_type()) ->
- binary().
-metric_type_to_bin(gauge) ->
- <<"g">>.