Packages
prometheus
3.0.0-alpha1
6.1.3
6.1.2
6.1.1
6.1.0
6.0.3
6.0.2
6.0.1
6.0.0
5.1.1
5.1.0
5.0.0
4.13.0
retired
4.12.0
4.11.0
4.10.0
4.9.1
4.9.0
4.8.2
4.8.1
4.8.0
4.6.0
4.5.0
4.4.1
4.4.0
4.3.0
4.2.2
4.2.0
4.1.0
4.0.1
4.0.0
3.5.1
3.5.0
3.4.6
3.4.5
3.4.4
3.4.3
3.4.2
3.4.1
3.4.0
3.3.2
3.3.1
3.3.0
3.2.3
3.2.2
3.2.1
3.1.1
3.1.0
3.0.1
3.0.0
3.0.0-rc1
3.0.0-alpha9
3.0.0-alpha8
3.0.0-alpha7
3.0.0-alpha6
3.0.0-alpha5
3.0.0-alpha4
3.0.0-alpha3
3.0.0-alpha2
3.0.0-alpha10
3.0.0-alpha1
2.2.0
2.1.0
2.0.0
1.7.0
1.6.0
1.5.0
1.0.2
1.0.1
1.0.0
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
Prometheus.io client in Erlang
Current section
Files
Jump to
Current section
Files
src/prometheus_collector.erl
-module(prometheus_collector).
-export([enabled_collectors/0,
register/1,
register/2,
deregister/1,
deregister/2,
collect_mf/3]).
-export_type([collector/0,
data/0,
collect_mf_callback/0]).
-compile({no_auto_import, [register/2]}).
%%====================================================================
%% Types
%%====================================================================
-type collector() :: atom().
-type data() :: any().
-type collect_mf_callback() ::
fun((prometheus_model:'MetricFamily'()) -> any()).
%%====================================================================
%% Callbacks
%%====================================================================
-callback collect_mf(Callback, Registry) -> Metrics | ok when
Callback :: collect_mf_callback(),
Registry :: prometheus_registry:registry(),
Metrics :: [prometheus_model:'Metric'()].
-callback collect_metrics(Name, Data) -> Metrics when
Name :: prometheus_metric:name(),
Data :: data(),
Metrics :: prometheus_model:'Metric'() | [prometheus_model:'Metric'()].
-callback deregister_cleanup(Registry) -> ok when
Registry :: prometheus_registry:registry().
%%====================================================================
%% Public API
%%====================================================================
-spec enabled_collectors() -> [collector()].
enabled_collectors() ->
case application:get_env(prometheus, default_collectors) of
undefined -> all_known_collectors();
Collectors -> Collectors
end.
%% @equiv register(Collector, default)
register(Collector) -> register(Collector, default).
-spec register(Collector, Registry) -> ok when
Collector :: collector(),
Registry :: prometheus_registry:registry().
register(Collector, Registry) ->
ok = prometheus_registry:register_collector(Registry, Collector).
%% @equiv deregister(Collector, default)
deregister(Collector) -> deregister(Collector, default).
-spec deregister(Collector, Registry) -> ok when
Collector :: collector(),
Registry :: prometheus_registry:registry().
deregister(Collector, Registry) ->
prometheus_registry:deregister_collector(Registry, Collector).
-spec collect_mf(Collector, Callback, Registry) -> list() when
Collector :: collector(),
Callback :: collect_mf_callback(),
Registry :: prometheus_registry:registry().
collect_mf(Collector, Callback, Registry) ->
Collector:collect_mf(Callback, Registry).
%%====================================================================
%% Private Parts
%%====================================================================
all_known_collectors() ->
prometheus_misc:behaviour_modules(prometheus_collector).