summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Lebedeff <binarin@binarin.info>2021-09-28 19:35:02 +0200
committermergify-bot <noreply@mergify.io>2021-09-30 11:46:09 +0000
commitc70ae15b4d51c79dd27260b23fe1ecf9c6514aab (patch)
treefedf9f638c07627d620514d43a8952d59b2a2ff1
parenta9763087f1c81cd2e8ae53f8089bd423f08a2150 (diff)
downloadrabbitmq-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.erl10
-rw-r--r--deps/rabbitmq_prometheus/test/rabbit_prometheus_http_SUITE.erl9
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).