From 1ba8d71e7e21e2ddd46000ccc3f66d883927d880 Mon Sep 17 00:00:00 2001 From: JianBo He Date: Tue, 11 May 2021 14:10:49 +0800 Subject: [PATCH] fix(metrics): set the retained/delayed metrics to counter type The metrics for messages.* shows the number of times such messages are received, and it should be a counter rather than a gauge type. --- src/emqx.appup.src | 18 ++++++++++++------ src/emqx_metrics.erl | 21 +++++++++++++++++++-- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/emqx.appup.src b/src/emqx.appup.src index 5b6a5a4d5..b10c14a9c 100644 --- a/src/emqx.appup.src +++ b/src/emqx.appup.src @@ -1,14 +1,20 @@ %% -*-: erlang -*- {VSN, - [ {"4.3.0", - [ {load_module, emqx_logger_jsonfmt, brutal_purge, soft_purge, []} - ]}, + [ + {"4.3.0", [ + {load_module, emqx_logger_jsonfmt, brutal_purge, soft_purge, []}, + {load_module, emqx_metrics, brutal_purge, soft_purge, []}, + {apply, {emqx_metrics, upgrade_retained_delayed_counter_type, []}} + ]}, {<<".*">>, []} ], [ - {"4.3.0", - [ {load_module, emqx_logger_jsonfmt, brutal_purge, soft_purge, []} - ]}, + {"4.3.0", [ + {load_module, emqx_logger_jsonfmt, brutal_purge, soft_purge, []}, + %% Just load the module. We don't need to change the 'messages.retained' + %% and 'messages.retained' counter type. + {load_module, emqx_metrics, brutal_purge, soft_purge, []} + ]}, {<<".*">>, []} ] }. diff --git a/src/emqx_metrics.erl b/src/emqx_metrics.erl index 44009d4e2..3b96bfbad 100644 --- a/src/emqx_metrics.erl +++ b/src/emqx_metrics.erl @@ -65,6 +65,10 @@ , code_change/3 ]). +%% BACKW: v4.3.0 +-export([ upgrade_retained_delayed_counter_type/0 + ]). + -export_type([metric_idx/0]). -compile({inline, [inc/1, inc/2, dec/1, dec/2]}). @@ -145,8 +149,8 @@ {counter, 'messages.dropped.expired'}, % QoS2 Messages expired {counter, 'messages.dropped.no_subscribers'}, % Messages dropped {counter, 'messages.forward'}, % Messages forward - {gauge, 'messages.retained'}, % Messages retained - {gauge, 'messages.delayed'}, % Messages delayed + {counter, 'messages.retained'}, % Messages retained + {counter, 'messages.delayed'}, % Messages delayed {counter, 'messages.delivered'}, % Messages delivered {counter, 'messages.acked'} % Messages acked ]). @@ -195,6 +199,19 @@ start_link() -> -spec(stop() -> ok). stop() -> gen_server:stop(?SERVER). +%% BACKW: v4.3.0 +upgrade_retained_delayed_counter_type() -> + case ets:info(?TAB, name) of + ?TAB -> + [M1] = ets:lookup(?TAB, 'messages.retained'), + [M2] = ets:lookup(?TAB, 'messages.delayed'), + true = ets:insert(?TAB, M1#metric{type = counter}), + true = ets:insert(?TAB, M2#metric{type = counter}), + ok; + _ -> + ok + end. + %%-------------------------------------------------------------------- %% Metrics API %%--------------------------------------------------------------------