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.
This commit is contained in:
JianBo He 2021-05-11 14:10:49 +08:00 committed by turtleDeng
parent 09fb1461b7
commit 1ba8d71e7e
2 changed files with 31 additions and 8 deletions

View File

@ -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, []}
]},
{<<".*">>, []}
]
}.

View File

@ -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
%%--------------------------------------------------------------------