From 46ca3f2f82dbef93236d817a8c1acf0ce29f4dd9 Mon Sep 17 00:00:00 2001 From: Feng Lee Date: Fri, 27 Dec 2019 19:56:03 +0800 Subject: [PATCH] Add metrics for session's lifecircle - session.created - session.resumed - session.takeovered - session.discarded - session.terminated --- src/emqx_cm.erl | 1 + src/emqx_session.erl | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/emqx_cm.erl b/src/emqx_cm.erl index 9404835c8..561017b93 100644 --- a/src/emqx_cm.erl +++ b/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. diff --git a/src/emqx_session.erl b/src/emqx_session.erl index 793ed096c..01b5f057c 100644 --- a/src/emqx_session.erl +++ b/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