|
|
@@ -58,14 +58,11 @@
|
|
|
-export([ inc/2
|
|
|
, inc/3
|
|
|
, get/2
|
|
|
- , get_overall/1
|
|
|
, get_rule_speed/1
|
|
|
- , get_overall_rule_speed/0
|
|
|
, create_rule_metrics/1
|
|
|
, create_metrics/1
|
|
|
, clear_rule_metrics/1
|
|
|
, clear_metrics/1
|
|
|
- , overall_metrics/0
|
|
|
]).
|
|
|
|
|
|
-export([ get_rule_metrics/1
|
|
|
@@ -137,18 +134,10 @@ get(Id, Metric) ->
|
|
|
Ref -> counters:get(Ref, metrics_idx(Metric))
|
|
|
end.
|
|
|
|
|
|
--spec(get_overall(atom()) -> number()).
|
|
|
-get_overall(Metric) ->
|
|
|
- emqx_metrics:val(Metric).
|
|
|
-
|
|
|
-spec(get_rule_speed(rule_id()) -> map()).
|
|
|
get_rule_speed(Id) ->
|
|
|
gen_server:call(?MODULE, {get_rule_speed, Id}).
|
|
|
|
|
|
--spec(get_overall_rule_speed() -> map()).
|
|
|
-get_overall_rule_speed() ->
|
|
|
- gen_server:call(?MODULE, get_overall_rule_speed).
|
|
|
-
|
|
|
-spec(get_rule_metrics(rule_id()) -> map()).
|
|
|
get_rule_metrics(Id) ->
|
|
|
#{max := Max, current := Current, last5m := Last5M} = get_rule_speed(Id),
|
|
|
@@ -186,12 +175,7 @@ inc(Id, Metric, Val) ->
|
|
|
counters:add(couters_ref(Id), metrics_idx(Metric), Val);
|
|
|
Ref ->
|
|
|
counters:add(Ref, metrics_idx(Metric), Val)
|
|
|
- end,
|
|
|
- inc_overall(Metric, Val).
|
|
|
-
|
|
|
--spec(inc_overall(atom(), pos_integer()) -> ok).
|
|
|
-inc_overall(Metric, Val) ->
|
|
|
- emqx_metrics:inc(Metric, Val).
|
|
|
+ end.
|
|
|
|
|
|
inc_actions_taken(Id) ->
|
|
|
inc_actions_taken(Id, 1).
|
|
|
@@ -280,8 +264,6 @@ start_link() ->
|
|
|
|
|
|
init([]) ->
|
|
|
erlang:process_flag(trap_exit, true),
|
|
|
- %% the overall counters
|
|
|
- [ok = emqx_metrics:ensure(Metric)|| Metric <- overall_metrics()],
|
|
|
%% the speed metrics
|
|
|
erlang:send_after(timer:seconds(?SAMPLING), self(), ticking),
|
|
|
{ok, #state{overall_rule_speed = #rule_speed{}}}.
|
|
|
@@ -294,9 +276,6 @@ handle_call({get_rule_speed, Id}, _From, State = #state{rule_speeds = RuleSpeeds
|
|
|
Speed -> format_rule_speed(Speed)
|
|
|
end, State};
|
|
|
|
|
|
-handle_call(get_overall_rule_speed, _From, State = #state{overall_rule_speed = RuleSpeed}) ->
|
|
|
- {reply, format_rule_speed(RuleSpeed), State};
|
|
|
-
|
|
|
handle_call({create_metrics, Id}, _From, State = #state{metric_ids = MIDs}) ->
|
|
|
{reply, create_counters(Id), State#state{metric_ids = sets:add_element(Id, MIDs)}};
|
|
|
|
|
|
@@ -333,17 +312,14 @@ handle_info(ticking, State = #state{rule_speeds = undefined}) ->
|
|
|
erlang:send_after(timer:seconds(?SAMPLING), self(), ticking),
|
|
|
{noreply, State};
|
|
|
|
|
|
-handle_info(ticking, State = #state{rule_speeds = RuleSpeeds0,
|
|
|
- overall_rule_speed = OverallRuleSpeed0}) ->
|
|
|
+handle_info(ticking, State = #state{rule_speeds = RuleSpeeds0}) ->
|
|
|
RuleSpeeds = maps:map(
|
|
|
fun(Id, RuleSpeed) ->
|
|
|
calculate_speed(get_rules_matched(Id), RuleSpeed)
|
|
|
end, RuleSpeeds0),
|
|
|
- OverallRuleSpeed = calculate_speed(get_overall('rules.matched'), OverallRuleSpeed0),
|
|
|
async_refresh_resource_status(),
|
|
|
erlang:send_after(timer:seconds(?SAMPLING), self(), ticking),
|
|
|
- {noreply, State#state{rule_speeds = RuleSpeeds,
|
|
|
- overall_rule_speed = OverallRuleSpeed}};
|
|
|
+ {noreply, State#state{rule_speeds = RuleSpeeds}};
|
|
|
|
|
|
handle_info(_Info, State) ->
|
|
|
{noreply, State}.
|
|
|
@@ -493,16 +469,3 @@ metrics_idx('rules.passed') -> 8;
|
|
|
metrics_idx('rules.exception') -> 9;
|
|
|
metrics_idx('rules.no_result') -> 10;
|
|
|
metrics_idx(_) -> 11.
|
|
|
-
|
|
|
-overall_metrics() ->
|
|
|
- [ 'rules.matched'
|
|
|
- , 'actions.success'
|
|
|
- , 'actions.error'
|
|
|
- , 'actions.taken'
|
|
|
- , 'actions.exception'
|
|
|
- , 'actions.retry'
|
|
|
- , 'rules.failed'
|
|
|
- , 'rules.passed'
|
|
|
- , 'rules.exception'
|
|
|
- , 'rules.no_result'
|
|
|
- ].
|