Awesome
Statman -> Graphite
This library pushes your metrics collected with statman to a graphite host over TCP.
For statman histograms only the percentiles are pushed as data points to graphite.
Using it
You need to set the host
and port
application variables before starting
the app. After that you just need to record some metrics with statman.
application:set_env(statman_graphite, host, "graphite.example.com").
application:set_env(statman_graphite, port, 2003).
application:start(statman_graphite).
statman_aggregator:start_link().
record_some_statman_stats().
You can use the prefix
application variable to set a global prefix that will
be prepended to all metrics before they are send to graphite. This is useful
in a multi-node scenario or when using something like hostedgraphite.com.
application:set_env(statman_graphite, prefix, <<"my-api-key">>).
application:set_env(statman_graphite, prefix, <<"my-api-key.", (list_to_binary(atom_to_list(node())))/binary>>).
Filtering/rewriting
There are two ways to filter what statman metrics are sent to graphite. By
default all metrics are sent. The easy way to filter is to define the
whitelist
application variable, it should be a list of statman keys that you
want to send to graphite.
application:set_env(statman_graphite, whitelist, [foo, {bar, baz}]).
If you want to do dynamic filtering and/or rewrite the metrics before sending
them you can set the filtermapper
application variable, it should be a fun
that matches the docs for lists:filtermap
. This option precedes the
whitelist
option.
application:set_env(statman_graphite, filtermapper, {mymodule, myfunction}).
%% Or as a fun
application:set_env(statman_graphite, filtermapper,
fun (Metric) ->
case proplists:get_value(key, Metric) of
foo ->
false;
bar ->
{true, lists:keystore(key, 1, Metric, {key, baz})};
baz ->
true
end
end).