%%% @doc fuse_stats_prometheus - use prometheus counters for fuse stats. %%% Assumes that you have already arranged to start prometheus. -module(fuse_stats_prometheus). -behaviour(fuse_stats_plugin). -export([init/1, increment/2]). -define(RESPONSES_COUNTER_NAME(NameBin), <>). -define(MELTS_COUNTER_NAME(NameBin), <>). %% @doc Initializes prometheus counters for `Name'. %% Exports the following metrics: %% %% Uses `default' registry. %% @end %% init/1 -spec init(Name :: atom()) -> ok. init(Name) -> NameBin = atom_to_binary(Name, utf8), prometheus_counter:new([{name, ?RESPONSES_COUNTER_NAME(NameBin)}, {help, <>}, {labels, [type]}]), prometheus_counter:new([{name, ?MELTS_COUNTER_NAME(NameBin)}, {help, <>}]), ok. %% @doc Increments `Name''s `Counter'. %% @end %% increment/2 -spec increment(Name :: atom(), Counter :: ok | blown | melt) -> ok. increment(Name, Counter) -> NameBin = atom_to_binary(Name, utf8), case Counter of ok -> prometheus_counter:inc(?RESPONSES_COUNTER_NAME(NameBin), [ok]); blown -> prometheus_counter:inc(?RESPONSES_COUNTER_NAME(NameBin), [blown]); melt -> prometheus_counter:inc(?MELTS_COUNTER_NAME(NameBin)) end, ok.