Prechádzať zdrojové kódy

fix(metrics): update the calls to emqx_plugin_libs_metrcis module

Shawn 4 rokov pred
rodič
commit
78aa0abd3d

+ 15 - 19
apps/emqx_plugin_libs/src/emqx_plugin_libs_metrics.erl

@@ -35,8 +35,6 @@
         ]).
 
 -export([ get_metrics/2
-        , get_matched/2
-        , inc_matched/2
         ]).
 
 %% gen_server callbacks
@@ -74,7 +72,6 @@
 -define(CntrRef(Name), {?MODULE, Name}).
 -define(SAMPCOUNT_5M, (?SECS_5M div ?SAMPLING)).
 
-%% the rate of 'matched'
 -record(rate, {
             max = 0 :: number(),
             current = 0 :: number(),
@@ -106,11 +103,11 @@ child_spec(Name) ->
      , modules => [emqx_plugin_libs_metrics]
      }.
 
--spec(create_metrics(handler_name(), metric_id(), [atom()]) -> ok).
+-spec(create_metrics(handler_name(), metric_id(), [atom()]) -> ok | {error, term()}).
 create_metrics(Name, Id, Metrics) ->
     create_metrics(Name, Id, Metrics, Metrics).
 
--spec(create_metrics(handler_name(), metric_id(), [atom()], [atom()]) -> ok).
+-spec(create_metrics(handler_name(), metric_id(), [atom()], [atom()]) -> ok | {error, term()}).
 create_metrics(Name, Id, Metrics, RateMetrics) ->
     gen_server:call(Name, {create_metrics, Id, Metrics, RateMetrics}).
 
@@ -150,12 +147,6 @@ inc(Name, Id, Metric) ->
 inc(Name, Id, Metric, Val) ->
     counters:add(get_ref(Name, Id), idx_metric(Name, Id,Metric), Val).
 
-inc_matched(Name, Id) ->
-    inc(Name, Id, 'matched', 1).
-
-get_matched(Name, Id) ->
-    get(Name, Id, 'matched').
-
 start_link(Name) ->
     gen_server:start_link({local, Name}, ?MODULE, Name, []).
 
@@ -174,14 +165,19 @@ handle_call({get_rate, Id}, _From, State = #state{rates = Rates}) ->
 
 handle_call({create_metrics, Id, Metrics, RateMetrics}, _From,
             State = #state{metric_ids = MIDs, rates = Rates}) ->
-    RatePerId = maps:from_list([{M, #rate{}} || M <- RateMetrics]),
-    Rate1= case Rates of
-        undefined -> #{Id => RatePerId};
-        _ -> Rates#{Id => RatePerId}
-    end,
-    {reply, create_counters(get_self_name(), Id, Metrics),
-     State#state{metric_ids = sets:add_element(Id, MIDs),
-                 rates = Rate1}};
+    case RateMetrics -- Metrics of
+        [] ->
+            RatePerId = maps:from_list([{M, #rate{}} || M <- RateMetrics]),
+            Rate1 = case Rates of
+                undefined -> #{Id => RatePerId};
+                _ -> Rates#{Id => RatePerId}
+            end,
+            {reply, create_counters(get_self_name(), Id, Metrics),
+                State#state{metric_ids = sets:add_element(Id, MIDs),
+                            rates = Rate1}};
+        _ ->
+            {reply, {error, metrics_to}, State}
+    end.
 
 handle_call({delete_metrics, Id}, _From,
             State = #state{metric_ids = MIDs, rates = Rates}) ->

+ 3 - 3
apps/emqx_resource/src/emqx_resource.erl

@@ -346,9 +346,9 @@ filter_instances(Filter) ->
     [Id || #{id := Id, mod := Mod} <- list_instances_verbose(), Filter(Id, Mod)].
 
 inc_metrics_funcs(InstId) ->
-    OnFailed = [{fun emqx_plugin_libs_metrics:inc_failed/2, [resource_metrics, InstId]}],
-    OnSucc = [ {fun emqx_plugin_libs_metrics:inc_matched/2, [resource_metrics, InstId]}
-             , {fun emqx_plugin_libs_metrics:inc_success/2, [resource_metrics, InstId]}
+    OnFailed = [{fun emqx_plugin_libs_metrics:inc/2, [resource_metrics, InstId, failed]}],
+    OnSucc = [ {fun emqx_plugin_libs_metrics:inc/2, [resource_metrics, InstId, matched]}
+             , {fun emqx_plugin_libs_metrics:inc/2, [resource_metrics, success]}
              ],
     {OnSucc, OnFailed}.
 

+ 2 - 1
apps/emqx_resource/src/emqx_resource_instance.erl

@@ -176,7 +176,8 @@ do_create(InstId, ResourceType, Config, Opts) ->
         {error, not_found} ->
             case do_start(InstId, ResourceType, Config, Opts) of
                 ok ->
-                    ok = emqx_plugin_libs_metrics:create_metrics(resource_metrics, InstId),
+                    ok = emqx_plugin_libs_metrics:create_metrics(resource_metrics, InstId,
+                            [matched, success, failed], [matched]),
                     {ok, force_lookup(InstId)};
                 Error ->
                     Error