From 7bc59969eb9c0f8245d3e4a3a48feb415ef88986 Mon Sep 17 00:00:00 2001 From: DDDHuang <44492639+DDDHuang@users.noreply.github.com> Date: Tue, 4 Jan 2022 11:01:14 +0800 Subject: [PATCH] fix(prometheus): update config in cluster --- .../src/emqx_prometheus_api.erl | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/apps/emqx_prometheus/src/emqx_prometheus_api.erl b/apps/emqx_prometheus/src/emqx_prometheus_api.erl index 9e8904a4e..f849589f4 100644 --- a/apps/emqx_prometheus/src/emqx_prometheus_api.erl +++ b/apps/emqx_prometheus/src/emqx_prometheus_api.erl @@ -67,16 +67,22 @@ prometheus(get, _Params) -> {200, emqx:get_raw_config([<<"prometheus">>], #{})}; prometheus(put, #{body := Body}) -> - {ok, Config} = emqx:update_config([prometheus], Body), - case maps:get(<<"enable">>, Body) of - true -> - _ = emqx_prometheus_sup:stop_child(?APP), - emqx_prometheus_sup:start_child(?APP, maps:get(config, Config)); - false -> - _ = emqx_prometheus_sup:stop_child(?APP), - ok - end, - {200, emqx:get_raw_config([<<"prometheus">>], #{})}. + case emqx:update_config([prometheus], + Body, + #{rawconf_with_defaults => true, override_to => cluster}) of + {ok, #{raw_config := NewConfig, config := Config}} -> + case maps:get(<<"enable">>, Body) of + true -> + _ = emqx_prometheus_sup:stop_child(?APP), + emqx_prometheus_sup:start_child(?APP, Config); + false -> + _ = emqx_prometheus_sup:stop_child(?APP) + end, + {200, NewConfig}; + {error, Reason} -> + Message = list_to_binary(io_lib:format("Update config failed ~p", [Reason])), + {500, 'INTERNAL_ERROR', Message} + end. stats(get, #{headers := Headers}) -> Type =