diff --git a/src/emqx_access_control.erl b/src/emqx_access_control.erl index d6aab26d4..7d849f493 100644 --- a/src/emqx_access_control.erl +++ b/src/emqx_access_control.erl @@ -29,7 +29,10 @@ -> {ok, emqx_types:credentials()} | {error, term()}). authenticate(Credentials) -> case emqx_hooks:run_fold('client.authenticate', [], init_auth_result(Credentials)) of - #{auth_result := success} = NewCredentials -> + #{auth_result := success, anonymous := true} = NewCredentials -> + emqx_metrics:inc('auth.mqtt.anonymous'), + {ok, NewCredentials}; + #{auth_result := success} = NewCredentials -> {ok, NewCredentials}; NewCredentials -> {error, maps:get(auth_result, NewCredentials, unknown_error)} diff --git a/src/emqx_metrics.erl b/src/emqx_metrics.erl index fdf66a493..fc04ab597 100644 --- a/src/emqx_metrics.erl +++ b/src/emqx_metrics.erl @@ -132,6 +132,10 @@ {counter, 'messages.forward'} % Messages forward ]). +-define(MQTT_METRICS, [ + {counter, 'auth.mqtt.anonymous'} +]). + -record(state, {next_idx = 1}). -record(metric, {name, type, idx}). @@ -355,7 +359,7 @@ init([]) -> Metric = #metric{name = Name, type = Type, idx = reserved_idx(Name)}, true = ets:insert(?TAB, Metric), ok = counters:put(CRef, Idx, 0) - end,?BYTES_METRICS ++ ?PACKET_METRICS ++ ?MESSAGE_METRICS), + end,?BYTES_METRICS ++ ?PACKET_METRICS ++ ?MESSAGE_METRICS ++ ?MQTT_METRICS), {ok, #state{next_idx = ?RESERVED_IDX + 1}, hibernate}. handle_call({create, Type, Name}, _From, State = #state{next_idx = ?MAX_SIZE}) -> @@ -446,4 +450,5 @@ reserved_idx('messages.retained') -> 48; reserved_idx('messages.dropped') -> 49; reserved_idx('messages.expired') -> 50; reserved_idx('messages.forward') -> 51; +reserved_idx('auth.mqtt.anonymous') -> 52; reserved_idx(_) -> undefined.