Packages
prometheus
3.0.0-rc1
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
%% @doc
%% A registry of Collectors.
%%
%% The majority of users should use the `default', rather than their own.
%%
%% Creating a registry other than the default is primarily useful for
%% unit tests, or pushing a subset of metrics to the
%% <a href="https://github.com/prometheus/pushgateway">Pushgateway</a> from
%% batch jobs.
%% @end
-module(prometheus_registry).
-export([collect/2,
collectors/1,
register_collector/1,
register_collector/2,
register_collectors/1,
register_collectors/2,
deregister_collector/1,
deregister_collector/2,
clear/0,
clear/1,
collector_registeredp/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
%%====================================================================
%% @doc
%% Calls `Callback' for each collector with two arguments:
%% `Registry' and `Collector'.
%% @end
-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.
%% @doc
%% Returns collectors registered in `Registry'.
%% @end
-spec collectors(Registry :: prometheus_registry:registry())
-> [Collector :: prometheus_collector:collector()].
collectors(Registry) ->
[Collector || {_, Collector} <- ets:lookup(?TABLE, Registry)].
%% @equiv register_collector(default, Collector)
-spec register_collector(Collector :: prometheus_collector:collector()) -> ok.
register_collector(Collector) ->
register_collector(default, Collector).
%% @doc Register a collector.
-spec register_collector(Registry :: prometheus_registry:registry(),
Collector :: prometheus_collector:collector()) -> ok.
register_collector(Registry, Collector) ->
ets:insert(?TABLE, {Registry, Collector}),
ok.
-spec register_collectors(Collectors :: [prometheus_collector:collector()])
-> ok.
%% @equiv register_collectors(default, Collectors)
register_collectors(Collectors) ->
register_collectors(default, Collectors).
%% @doc Registers collectors list.
-spec register_collectors(Registry :: prometheus_registry:registry(),
Collectors :: [prometheus_collector:collector()])
-> ok.
register_collectors(Registry, Collectors) ->
[register_collector(Registry, Collector) || Collector <- Collectors],
ok.
%% @equiv deregister_collector(default, Collector)
-spec deregister_collector(Collector :: prometheus_collector:collector()) -> ok.
deregister_collector(Collector) ->
deregister_collector(default, Collector).
%% @doc Unregisters a collector.
-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).
%% @doc Unregisters all collectors.
-spec clear(Registry :: prometheus_registry:registry()) -> ok.
clear(Registry) ->
[Collector:deregister_cleanup(Registry) ||
{_, Collector} <- ets:take(?TABLE, Registry)],
ok.
%% @equiv collector_registeredp(default, Collector)
-spec collector_registeredp(Collector) -> boolean() when
Collector :: prometheus_collector:collector().
collector_registeredp(Collector) ->
collector_registeredp(default, Collector).
%% @doc Checks whether `Collector' is registered.
-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.