diff options
author | Alexey Lebedeff <binarin@binarin.info> | 2021-09-28 19:35:02 +0200 |
---|---|---|
committer | mergify-bot <noreply@mergify.io> | 2021-09-30 11:46:09 +0000 |
commit | c70ae15b4d51c79dd27260b23fe1ecf9c6514aab (patch) | |
tree | fedf9f638c07627d620514d43a8952d59b2a2ff1 | |
parent | a9763087f1c81cd2e8ae53f8089bd423f08a2150 (diff) | |
download | rabbitmq-server-git-c70ae15b4d51c79dd27260b23fe1ecf9c6514aab.tar.gz |
Emit identity info in prometheus /metrics/detailed endpoint
This is needed to make filtering metrics on a cluster name possible.
(cherry picked from commit 989a2997209045b0093e967ded1aa973303ca907)
-rw-r--r-- | deps/rabbitmq_prometheus/src/collectors/prometheus_rabbitmq_core_metrics_collector.erl | 10 | ||||
-rw-r--r-- | deps/rabbitmq_prometheus/test/rabbit_prometheus_http_SUITE.erl | 9 |
2 files changed, 14 insertions, 5 deletions
diff --git a/deps/rabbitmq_prometheus/src/collectors/prometheus_rabbitmq_core_metrics_collector.erl b/deps/rabbitmq_prometheus/src/collectors/prometheus_rabbitmq_core_metrics_collector.erl index bd1cd9067f..2e46eae4fd 100644 --- a/deps/rabbitmq_prometheus/src/collectors/prometheus_rabbitmq_core_metrics_collector.erl +++ b/deps/rabbitmq_prometheus/src/collectors/prometheus_rabbitmq_core_metrics_collector.erl @@ -233,15 +233,19 @@ deregister_cleanup(_) -> ok. collect_mf('detailed', Callback) -> collect(true, ?DETAILED_METRIC_NAME_PREFIX, vhosts_filter_from_pdict(), enabled_mfs_from_pdict(), Callback), + %% identity is here to enable filtering on a cluster name (as already happens in existing dashboards) + emit_identity_info(Callback), ok; collect_mf('per-object', Callback) -> collect(true, ?METRIC_NAME_PREFIX, false, ?METRICS_RAW, Callback), totals(Callback), + emit_identity_info(Callback), ok; collect_mf(_Registry, Callback) -> PerObjectMetrics = application:get_env(rabbitmq_prometheus, return_per_object_metrics, false), collect(PerObjectMetrics, ?METRIC_NAME_PREFIX, false, ?METRICS_RAW, Callback), totals(Callback), + emit_identity_info(Callback), ok. collect(PerObjectMetrics, Prefix, VHostsFilter, IncludedMFs, Callback) -> @@ -255,8 +259,12 @@ totals(Callback) -> Size = ets:info(Table, size), mf_totals(Callback, Name, Type, Help, Size) end || {Table, Name, Type, Help} <- ?TOTALS], + ok. + +emit_identity_info(Callback) -> add_metric_family(build_info(), Callback), - add_metric_family(identity_info(), Callback). + add_metric_family(identity_info(), Callback), + ok. %% Aggregated `auth``_attempt_detailed_metrics` and %% `auth_attempt_metrics` are the same numbers. The former is just diff --git a/deps/rabbitmq_prometheus/test/rabbit_prometheus_http_SUITE.erl b/deps/rabbitmq_prometheus/test/rabbit_prometheus_http_SUITE.erl index a8c80afd98..e2380932de 100644 --- a/deps/rabbitmq_prometheus/test/rabbit_prometheus_http_SUITE.erl +++ b/deps/rabbitmq_prometheus/test/rabbit_prometheus_http_SUITE.erl @@ -515,14 +515,15 @@ parse_response(Body) -> || L = [C|_] <- Lines, C /= $# ], lists:foldl(fun ({Metric, Label, Value}, MetricMap) -> - case string:prefix(atom_to_list(Metric), "telemetry") of - nomatch -> + case re:run(atom_to_list(Metric), "^(telemetry|rabbitmq_identity_info|rabbitmq_build_info)", [{capture, none}]) of + match -> + MetricMap; + _ -> OldLabelMap = maps:get(Metric, MetricMap, #{}), OldValues = maps:get(Label, OldLabelMap, []), NewValues = [Value|OldValues], NewLabelMap = maps:put(Label, NewValues, OldLabelMap), - maps:put(Metric, NewLabelMap, MetricMap); - _ -> MetricMap + maps:put(Metric, NewLabelMap, MetricMap) end end, #{}, Metrics). |