Current section

Files

Jump to
prometheus src prometheus_instrumenter.erl
Raw

src/prometheus_instrumenter.erl

-module(prometheus_instrumenter).
-export([enabled_instrumenters/0,
setup/1]).
-export_type([instrumenter/0]).
%%====================================================================
%% Types
%%====================================================================
-type instrumenter() :: atom().
%%====================================================================
%% Callbacks
%%====================================================================
-callback setup_instrumenter() -> ok.
%%====================================================================
%% Public API
%%====================================================================
-spec enabled_instrumenters() -> [instrumenter()].
enabled_instrumenters() ->
case application:get_env(prometheus, default_instrumenters) of
undefined -> all_known_instrumenters();
Instrumenters -> Instrumenters
end.
-spec setup(Instrumenter) -> Result when
Instrumenter :: instrumenter(),
Result :: ok.
setup(Instrumenter) ->
ok = Instrumenter:setup_instrumenter().
%%====================================================================
%% Private Parts
%%====================================================================
all_known_instrumenters() ->
prometheus_misc:behaviour_modules(prometheus_instrumenter).