Kaynağa Gözat

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.
JianBo He 4 yıl önce
ebeveyn
işleme
1ba8d71e7e
2 değiştirilmiş dosya ile 31 ekleme ve 8 silme
  1. 12 6
      src/emqx.appup.src
  2. 19 2
      src/emqx_metrics.erl

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

+ 19 - 2
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
 %%--------------------------------------------------------------------