Просмотр исходного кода

Add metrics for session's lifecircle

- session.created
- session.resumed
- session.takeovered
- session.discarded
- session.terminated
Feng Lee 6 лет назад
Родитель
Сommit
46ca3f2f82
2 измененных файлов с 9 добавлено и 3 удалено
  1. 1 0
      src/emqx_cm.erl
  2. 8 3
      src/emqx_session.erl

+ 1 - 0
src/emqx_cm.erl

@@ -229,6 +229,7 @@ open_session(false, ClientInfo = #{clientid := ClientId}, ConnInfo) ->
 
 create_session(ClientInfo, ConnInfo) ->
     Session = emqx_session:init(ClientInfo, ConnInfo),
+    ok = emqx_metrics:inc('session.created'),
     ok = emqx_hooks:run('session.created', [ClientInfo, emqx_session:info(Session)]),
     Session.
 

+ 8 - 3
src/emqx_session.erl

@@ -610,6 +610,7 @@ resume(ClientInfo = #{clientid := ClientId}, Session = #session{subscriptions =
     lists:foreach(fun({TopicFilter, SubOpts}) ->
                       ok = emqx_broker:subscribe(TopicFilter, ClientId, SubOpts)
                   end, maps:to_list(Subs)),
+    ok = emqx_metrics:inc('session.resumed'),
     emqx_hooks:run('session.resumed', [ClientInfo, info(Session)]).
 
 -spec(replay(session()) -> {ok, replies(), session()}).
@@ -630,11 +631,15 @@ replay(Inflight) ->
 
 -spec(terminate(emqx_types:clientinfo(), Reason :: term(), session()) -> ok).
 terminate(ClientInfo, discarded, Session) ->
-    emqx_hooks:run('session.discarded', [ClientInfo, info(Session)]);
+    run_hook('session.discarded', [ClientInfo, info(Session)]);
 terminate(ClientInfo, takeovered, Session) ->
-    emqx_hooks:run('session.takeovered', [ClientInfo, info(Session)]);
+    run_hook('session.takeovered', [ClientInfo, info(Session)]);
 terminate(ClientInfo, Reason, Session) ->
-    emqx_hooks:run('session.terminated', [ClientInfo, Reason, info(Session)]).
+    run_hook('session.terminated', [ClientInfo, Reason, info(Session)]).
+
+-compile({inline, [run_hook/2]}).
+run_hook(Name, Args) ->
+    ok = emqx_metrics:inc(Name), emqx_hooks:run(Name, Args).
 
 %%--------------------------------------------------------------------
 %% Inc message/delivery expired counter