Packages
prometheus
2.0.0
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_registry.erl
-module(prometheus_registry).
-export([collect/2,
collectors/1,
register_collector/2,
deregister_collector/2,
clear/0,
clear/1,
collector_registeredp/2]).
-export_type([registry/0,
collect_callback/0]).
-include("prometheus.hrl").
%%====================================================================
%% Types
%%====================================================================
-type registry() :: atom().
-type collect_callback() ::
fun((registry(), prometheus_collector:collector()) -> any()).
%%====================================================================
%% Macros
%%====================================================================
-define(TABLE, ?PROMETHEUS_REGISTRY_TABLE).
%%====================================================================
%% Public API
%%====================================================================
-spec collect(Registry, Callback) -> ok when
Registry :: prometheus_registry:registry(),
Callback :: collect_callback().
collect(Registry, Callback) ->
[Callback(Registry, Collector) ||
{_, Collector} <- ets:lookup(?TABLE, Registry)],
ok.
-spec collectors(Registry :: prometheus_registry:registry())
-> [Collector :: prometheus_collector:collector()].
collectors(Registry) ->
[Collector || {_, Collector} <- ets:lookup(?TABLE, Registry)].
-spec register_collector(Registry :: prometheus_registry:registry(),
Collector :: prometheus_collector:collector()) -> ok.
register_collector(Registry, Collector) ->
ets:insert(?TABLE, {Registry, Collector}),
ok.
-spec deregister_collector(Registry :: prometheus_registry:registry(),
Collector :: prometheus_collector:collector()) -> ok.
deregister_collector(Registry, Collector) ->
ets:delete_object(?TABLE, {Registry, Collector}),
Collector:deregister_cleanup(Registry),
ok.
%% @equiv clear(default)
-spec clear() -> ok.
clear() ->
clear(default).
-spec clear(Registry :: prometheus_registry:registry()) -> ok.
clear(Registry) ->
[Collector:deregister_cleanup(Registry) ||
{_, Collector} <- ets:take(?TABLE, Registry)],
ok.
-spec collector_registeredp(Registry, Collector) -> boolean() when
Registry :: prometheus_registry:registry(),
Collector :: prometheus_collector:collector().
collector_registeredp(Registry, Collector) ->
case ets:match(?TABLE, {Registry, Collector}) of
[] -> false;
_ -> true
end.