Explorar o código

fix(prometheus): Don't add DS metrics when feature is disabled

ieQu1 hai 1 ano
pai
achega
f14c253dea

+ 20 - 5
apps/emqx_prometheus/src/emqx_prometheus.erl

@@ -212,14 +212,30 @@ collect_mf(?PROMETHEUS_DEFAULT_REGISTRY, Callback) ->
 
     ok = add_collect_family(Callback, cert_metric_meta(), ?MG(cert_data, RawData)),
     ok = add_collect_family(Callback, mria_metric_meta(), ?MG(mria_data, RawData)),
-    ok = add_collect_family(
-        Callback, emqx_ds_builtin_metrics:prometheus_meta(), ?MG(ds_data, RawData)
-    ),
+    ok = maybe_add_ds_collect_family(Callback, RawData),
     ok = maybe_license_add_collect_family(Callback, RawData),
     ok;
 collect_mf(_Registry, _Callback) ->
     ok.
 
+maybe_add_ds_collect_family(Callback, RawData) ->
+    case emqx_persistent_message:is_persistence_enabled() of
+        true ->
+            add_collect_family(
+                Callback, emqx_ds_builtin_metrics:prometheus_meta(), ?MG(ds_data, RawData)
+            );
+        false ->
+            ok
+    end.
+
+maybe_collect_ds_data(Mode) ->
+    case emqx_persistent_message:is_persistence_enabled() of
+        true ->
+            #{ds_data => emqx_ds_builtin_metrics:prometheus_collect(Mode)};
+        false ->
+            #{}
+    end.
+
 %% @private
 collect(<<"json">>) ->
     RawData = emqx_prometheus_cluster:raw_data(?MODULE, ?GET_PROM_DATA_MODE()),
@@ -254,7 +270,7 @@ add_collect_family(Name, Data, Callback, Type) ->
 
 %% behaviour
 fetch_from_local_node(Mode) ->
-    {node(), #{
+    {node(), (maybe_collect_ds_data(Mode))#{
         stats_data => stats_data(Mode),
         vm_data => vm_data(Mode),
         cluster_data => cluster_data(Mode),
@@ -267,7 +283,6 @@ fetch_from_local_node(Mode) ->
         emqx_olp_data => emqx_metric_data(olp_metric_meta(), Mode),
         emqx_acl_data => emqx_metric_data(acl_metric_meta(), Mode),
         emqx_authn_data => emqx_metric_data(authn_metric_meta(), Mode),
-        ds_data => emqx_ds_builtin_metrics:prometheus_collect(Mode),
         mria_data => mria_data(Mode)
     }}.
 

+ 1 - 3
apps/emqx_prometheus/test/emqx_prometheus_SUITE.erl

@@ -89,9 +89,7 @@ init_per_group(new_config, Config) ->
     Apps = emqx_cth_suite:start(
         [
             %% coverage olp metrics
-            {emqx,
-                "overload_protection.enable = true\n"
-                "session_persistence.enable = true"},
+            {emqx, "overload_protection.enable = true"},
             {emqx_license, "license.key = default"},
             {emqx_prometheus, #{config => config(default)}}
         ],