Current section

Files

Jump to
prometheus src prometheus_instrumenter.erl
Raw

src/prometheus_instrumenter.erl

-module(prometheus_instrumenter).
-compile({parse_transform, prometheus_pt}).
-export([enabled_instrumenters/0, setup/1]).
-export_type([instrumenter/0]).
-type instrumenter() :: atom().
-callback setup_instrumenter() -> ok.
-doc false.
-spec enabled_instrumenters() -> [instrumenter()].
enabled_instrumenters() ->
case application:get_env(prometheus, instrumenters) of
undefined -> all_known_instrumenters();
{ok, Instrumenters} -> Instrumenters
end.
-doc false.
-spec setup(Instrumenter) -> Result when
Instrumenter :: instrumenter(),
Result :: ok.
setup(Instrumenter) ->
ok = Instrumenter:setup_instrumenter().
all_known_instrumenters() ->
prometheus_misc:behaviour_modules(prometheus_instrumenter).