|
|
@@ -23,6 +23,9 @@
|
|
|
, call_fold/3
|
|
|
]).
|
|
|
|
|
|
+%% exported for `emqx_telemetry'
|
|
|
+-export([get_basic_usage_info/0]).
|
|
|
+
|
|
|
%%--------------------------------------------------------------------
|
|
|
%% Dispatch APIs
|
|
|
%%--------------------------------------------------------------------
|
|
|
@@ -81,3 +84,39 @@ deny_action_result('message.publish', Msg) ->
|
|
|
%% TODO: Not support to deny a message
|
|
|
%% maybe we can put the 'allow_publish' into message header
|
|
|
Msg.
|
|
|
+
|
|
|
+%%--------------------------------------------------------------------
|
|
|
+%% APIs for `emqx_telemetry'
|
|
|
+%%--------------------------------------------------------------------
|
|
|
+
|
|
|
+-spec get_basic_usage_info() ->
|
|
|
+ #{ num_servers => non_neg_integer()
|
|
|
+ , servers =>
|
|
|
+ [#{ driver => Driver
|
|
|
+ , hooks => [emqx_exhook_server:hookpoint()]
|
|
|
+ }]
|
|
|
+ } when Driver :: grpc.
|
|
|
+get_basic_usage_info() ->
|
|
|
+ try
|
|
|
+ Servers = emqx_exhook_mgr:running(),
|
|
|
+ NumServers = length(Servers),
|
|
|
+ ServerInfo =
|
|
|
+ lists:map(
|
|
|
+ fun(ServerName) ->
|
|
|
+ Hooks = emqx_exhook_mgr:hooks(ServerName),
|
|
|
+ HookNames = lists:map(fun(#{name := Name}) -> Name end, Hooks),
|
|
|
+ #{ hooks => HookNames
|
|
|
+ , %% currently, only grpc driver exists.
|
|
|
+ driver => grpc
|
|
|
+ }
|
|
|
+ end,
|
|
|
+ Servers),
|
|
|
+ #{ num_servers => NumServers
|
|
|
+ , servers => ServerInfo
|
|
|
+ }
|
|
|
+ catch
|
|
|
+ _:_ ->
|
|
|
+ #{ num_servers => 0
|
|
|
+ , servers => []
|
|
|
+ }
|
|
|
+ end.
|