Skip to content

Commit 1467231

Browse files
committed
Mark management metrics collection as deprecated
[Why] Management metrics collection will be removed in RabbitMQ 4.0. The prometheus plugin provides a better and more scalable alternative. [How] The management metrics collection is marked as deprecated in the code using the Deprecated features subsystem (based on feature flags). See pull request #7390 for a description of that subsystem. To test RabbitMQ behavior as if the feature was removed, the following configuration setting can be used: deprecated_features.permit.management_metrics_collection = false Management metrics collection can be turned off anytime, there are no conditions to do that. Once management metrics collection is turned off, the management API will not report any metrics and the UI will show empty graphs. Note that given the marketing calendar, the deprecated feature will go directly from "permitted by default" to "removed" in RabbitMQ 4.0. It won't go through the gradual deprecation process.
1 parent 7c1a7cf commit 1467231

File tree

5 files changed

+39
-9
lines changed

5 files changed

+39
-9
lines changed

deps/rabbitmq_management/src/rabbit_mgmt_app.erl

+3-3
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@
2727
{mfa, {rabbit_mgmt_load_definitions, boot, []}}]}).
2828

2929
start(_Type, _StartArgs) ->
30-
case application:get_env(rabbitmq_management_agent, disable_metrics_collector, false) of
31-
false ->
32-
start();
30+
case rabbit_mgmt_agent_config:is_metrics_collector_enabled() of
3331
true ->
32+
start();
33+
false ->
3434
rabbit_log:warning("Metrics collection disabled in management agent, "
3535
"management only interface started", []),
3636
start()

deps/rabbitmq_management/src/rabbit_mgmt_features.erl

+10-1
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,23 @@
77

88
-module(rabbit_mgmt_features).
99

10-
-export([is_op_policy_updating_disabled/0]).
10+
-export([is_op_policy_updating_disabled/0,
11+
are_stats_enabled/0]).
1112

1213
is_op_policy_updating_disabled() ->
1314
case get_restriction([operator_policy_changes, disabled]) of
1415
true -> true;
1516
_ -> false
1617
end.
1718

19+
are_stats_enabled() ->
20+
DisabledFromConf = application:get_env(
21+
rabbitmq_management, disable_management_stats, false),
22+
case DisabledFromConf of
23+
true -> false;
24+
_ -> rabbit_mgmt_agent_config:is_metrics_collector_permitted()
25+
end.
26+
1827
%% Private
1928

2029
get_restriction(Path) ->

deps/rabbitmq_management/src/rabbit_mgmt_util.erl

+3-2
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,9 @@ disable_stats(ReqData) ->
135135
<<"true">> -> true;
136136
_ -> false
137137
end,
138-
MgmtOnly orelse get_bool_env(rabbitmq_management, disable_management_stats, false)
139-
orelse get_bool_env(rabbitmq_management_agent, disable_metrics_collector, false).
138+
MgmtOnly orelse
139+
not rabbit_mgmt_agent_config:is_metrics_collector_enabled() orelse
140+
not rabbit_mgmt_features:are_stats_enabled().
140141

141142
enable_queue_totals(ReqData) ->
142143
EnableTotals = case qs_val(<<"enable_queue_totals">>, ReqData) of

deps/rabbitmq_management_agent/src/rabbit_mgmt_agent_config.erl

+20
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@
77
-module(rabbit_mgmt_agent_config).
88

99
-export([get_env/1, get_env/2]).
10+
-export([is_metrics_collector_enabled/0,
11+
is_metrics_collector_permitted/0]).
12+
13+
-rabbit_deprecated_feature(
14+
{management_metrics_collection,
15+
#{deprecation_phase => permitted_by_default,
16+
doc_url => "https://blog.rabbitmq.com/posts/2021/08/4.0-deprecation-announcements/#disable-metrics-delivery-via-the-management-api--ui"
17+
}}).
1018

1119
%% some people have reasons to only run with the agent enabled:
1220
%% make it possible for them to configure key management app
@@ -20,3 +28,15 @@ get_env(Key, Default) ->
2028
rabbit_misc:get_env(rabbitmq_management, Key,
2129
rabbit_misc:get_env(rabbitmq_management_agent, Key,
2230
Default)).
31+
32+
is_metrics_collector_enabled() ->
33+
DisabledFromConf = application:get_env(
34+
rabbitmq_management_agent, disable_metrics_collector, false),
35+
case DisabledFromConf of
36+
true -> false;
37+
_ -> is_metrics_collector_permitted()
38+
end.
39+
40+
is_metrics_collector_permitted() ->
41+
FeatureName = management_metrics_collection,
42+
rabbit_deprecated_features:is_permitted(FeatureName).

deps/rabbitmq_management_agent/src/rabbit_mgmt_agent_sup.erl

+3-3
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ start_link() ->
3434

3535

3636
maybe_enable_metrics_collector() ->
37-
case application:get_env(rabbitmq_management_agent, disable_metrics_collector, false) of
38-
false ->
37+
case rabbit_mgmt_agent_config:is_metrics_collector_enabled() of
38+
true ->
3939
ok = pg:join(?MANAGEMENT_PG_SCOPE, ?MANAGEMENT_PG_GROUP, self()),
4040
ST = {rabbit_mgmt_storage, {rabbit_mgmt_storage, start_link, []},
4141
permanent, ?WORKER_WAIT, worker, [rabbit_mgmt_storage]},
@@ -52,6 +52,6 @@ maybe_enable_metrics_collector() ->
5252
GC = {rabbit_mgmt_gc, {rabbit_mgmt_gc, start_link, []},
5353
permanent, ?WORKER_WAIT, worker, [rabbit_mgmt_gc]},
5454
[ST, MD, GC | MC ++ MGC];
55-
true ->
55+
false ->
5656
[]
5757
end.

0 commit comments

Comments
 (0)