diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl b/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl index b2766e0e0..a6220ee9f 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl @@ -162,6 +162,7 @@ , show_rule/2 , delete_rule/2 , reset_metrics/2 + , reset_metrics_local/1 ]). -export([ list_actions/2 @@ -260,8 +261,10 @@ delete_rule(#{id := Id}, _Params) -> ok = emqx_rule_engine:delete_rule(Id), return(ok). +reset_metrics_local(Id) -> emqx_rule_metrics:reset_metrics(Id). + reset_metrics(#{id := Id}, _Params) -> - ok = emqx_rule_metrics:reset_metrics(Id), + _ = ?CLUSTER_CALL(reset_metrics_local, [Id]), return(ok). %%------------------------------------------------------------------------------ diff --git a/apps/emqx_rule_engine/src/emqx_rule_metrics.erl b/apps/emqx_rule_engine/src/emqx_rule_metrics.erl index a725ca35d..f9e60877f 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_metrics.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_metrics.erl @@ -94,14 +94,14 @@ -define(SAMPCOUNT_5M, (?SECS_5M div ?SAMPLING)). -record(rule_speed, { - max = 0 :: number(), - current = 0 :: number(), - last5m = 0 :: number(), + max = 0.0 :: float(), + current = 0.0 :: float(), + last5m = 0.0 :: float(), %% metadata for calculating the avg speed - tick = 1 :: number(), - last_v = 0 :: number(), + tick = 1 :: integer(), + last_v = 0 :: integer(), %% metadata for calculating the 5min avg speed - last5m_acc = 0 :: number(), + last5m_acc = 0.0 :: float(), last5m_smpl = [] :: list() }). diff --git a/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl b/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl index 562254285..78bfbcad8 100644 --- a/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl +++ b/apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl @@ -377,15 +377,11 @@ t_reset_metrics(_Config) -> end || _ <- lists:seq(1,10)], emqx_rule_metrics:reset_metrics(Id), - Expected = #{exception => 0, failed => 0, matched => 0, no_result => 0, - passed => 0, speed => 0.0, speed_last5m => 0.0, speed_max => 0}, - Got = emqx_rule_metrics:get_rule_metrics(Id), - %% use == instead of =:=, so that 0 and 0.0 are compared equal - case Expected == Got of - true -> ok; - false -> ?assertEqual(Expected, Got) - end, - ?assertEqual(#{failed => 0, success => 0, taken => 0}, + ?assertEqual(#{exception => 0,failed => 0, + matched => 0,no_result => 0,passed => 0, + speed => 0.0,speed_last5m => 0.0,speed_max => 0.0}, + emqx_rule_metrics:get_rule_metrics(Id)), + ?assertEqual(#{failed => 0,success => 0,taken => 0}, emqx_rule_metrics:get_action_metrics(ResId)), emqtt:stop(Client), emqx_rule_registry:remove_rule(Id),