Current section

Files

Jump to
fuse src fuse_stats_folsom.erl
Raw

src/fuse_stats_folsom.erl

%%% @doc fuse_stats_folsom - use folsom_metrics spirals for fuse stats.
%%% Assumes that you have already arranged to start folsom.
-module(fuse_stats_folsom).
-behaviour(fuse_stats_plugin).
-export([init/1, increment/2]).
%% @doc Initialize folsom for `Name'.
-spec init(Name :: atom()) -> ok.
init(Name) ->
_ = folsom_metrics:new_spiral(metric(Name, ok)),
_ = folsom_metrics:new_spiral(metric(Name, blown)),
_ = folsom_metrics:new_spiral(metric(Name, melt)),
ok.
%% @doc Increment `Name's `Counter' spiral.
-spec increment(Name :: atom(), Counter :: ok | blown | melt) -> ok.
increment(Name, Counter) ->
_ = folsom_metrics:notify({metric(Name, Counter), 1}),
ok.
%% Internal.
metric(Name, Counter) ->
B = iolist_to_binary([atom_to_list(Name), $., atom_to_list(Counter)]),
binary_to_atom(B, utf8).