fix(metrics): update the calls to emqx_plugin_libs_metrcis module

This commit is contained in:
Shawn 2022-01-05 10:17:55 +08:00
parent ab5ad22b1d
commit 78aa0abd3d
3 changed files with 20 additions and 23 deletions

View File

@ -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}) ->

View File

@ -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}.

View File

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