From: Siraaj Khandkar Date: Wed, 23 Sep 2015 13:35:26 +0000 (-0400) Subject: feat: implement beam_stats_msg_graphite:of_memory/3 X-Git-Tag: 0.10.0^2~11 X-Git-Url: https://git.xandkar.net/?p=beam_stats.git;a=commitdiff_plain;h=a9ed8751fd77abc47095007370136432f773213a feat: implement beam_stats_msg_graphite:of_memory/3 --- diff --git a/include/beam_stats_msg_graphite.hrl b/include/beam_stats_msg_graphite.hrl new file mode 100644 index 0000000..56df5cc --- /dev/null +++ b/include/beam_stats_msg_graphite.hrl @@ -0,0 +1,5 @@ +-record(beam_stats_msg_graphite, + { path :: [binary()] + , value :: integer() + , timestamp :: erlang:timestamp() + }). diff --git a/src/beam_stats_msg_graphite.erl b/src/beam_stats_msg_graphite.erl new file mode 100644 index 0000000..1592549 --- /dev/null +++ b/src/beam_stats_msg_graphite.erl @@ -0,0 +1,56 @@ +-module(beam_stats_msg_graphite). + +-include("include/beam_stats.hrl"). +-include("include/beam_stats_msg_graphite.hrl"). + +-export_type( + [ t/0 + ]). + +-export( + [ of_beam_stats/1 + %, to_bin/1 + ]). + +-define(T, #?MODULE). + +-type t() :: + ?T{}. + +-spec of_beam_stats(beam_stats:t()) -> + [t()]. +of_beam_stats(#beam_stats{node_id=NodeID}=BeamStats) -> + NodeIDBin = node_id_to_bin(NodeID), + of_beam_stats(BeamStats, NodeIDBin). + +-spec of_beam_stats(beam_stats:t(), binary()) -> + [t()]. +of_beam_stats(#beam_stats + { timestamp = Timestamp + , node_id = _ + , memory = Memory + % TODO: Handle the rest of data point + }, + <> +) -> + of_memory(Memory, NodeID, Timestamp). + +-spec of_memory([{atom(), non_neg_integer()}], binary(), erlang:timestamp()) -> + [t()]. +of_memory(Memory, <>, Timestamp) -> + ComponentToMessage = + fun ({Key, Value}) -> + KeyBin = atom_to_binary(Key, latin1), + ?T + { path = [NodeID, <<"memory">>, KeyBin] + , value = Value + , timestamp = Timestamp + } + end, + lists:map(ComponentToMessage, Memory). + +-spec node_id_to_bin(node()) -> + binary(). +node_id_to_bin(NodeID) -> + NodeIDBin = atom_to_binary(NodeID, utf8), + re:replace(NodeIDBin, "[\@\.]", "_", [global, {return, binary}]).