Kaynağa Gözat

feat(config): apply new config struct to emqx_sys_mon

Shawn 4 yıl önce
ebeveyn
işleme
aad393f8d7
2 değiştirilmiş dosya ile 28 ekleme ve 36 silme
  1. 27 35
      apps/emqx/src/emqx_sys_mon.erl
  2. 1 1
      apps/emqx/src/emqx_sys_sup.erl

+ 27 - 35
apps/emqx/src/emqx_sys_mon.erl

@@ -23,7 +23,7 @@
 
 
 -logger_header("[SYSMON]").
 -logger_header("[SYSMON]").
 
 
--export([start_link/1]).
+-export([start_link/0]).
 
 
 %% compress unused warning
 %% compress unused warning
 -export([procinfo/1]).
 -export([procinfo/1]).
@@ -37,25 +37,19 @@
         , code_change/3
         , code_change/3
         ]).
         ]).
 
 
--type(option() :: {long_gc, non_neg_integer()}
-                | {long_schedule, non_neg_integer()}
-                | {large_heap, non_neg_integer()}
-                | {busy_port, boolean()}
-                | {busy_dist_port, boolean()}).
-
 -define(SYSMON, ?MODULE).
 -define(SYSMON, ?MODULE).
 
 
 %% @doc Start the system monitor.
 %% @doc Start the system monitor.
--spec(start_link(list(option())) -> startlink_ret()).
-start_link(Opts) ->
-    gen_server:start_link({local, ?SYSMON}, ?MODULE, [Opts], []).
+-spec(start_link() -> startlink_ret()).
+start_link() ->
+    gen_server:start_link({local, ?SYSMON}, ?MODULE, [], []).
 
 
 %%--------------------------------------------------------------------
 %%--------------------------------------------------------------------
 %% gen_server callbacks
 %% gen_server callbacks
 %%--------------------------------------------------------------------
 %%--------------------------------------------------------------------
 
 
-init([Opts]) ->
-    _ = erlang:system_monitor(self(), parse_opt(Opts)),
+init([]) ->
+    _ = erlang:system_monitor(self(), sysm_opts()),
     emqx_logger:set_proc_metadata(#{sysmon => true}),
     emqx_logger:set_proc_metadata(#{sysmon => true}),
 
 
     %% Monitor cluster partition event
     %% Monitor cluster partition event
@@ -66,30 +60,28 @@ init([Opts]) ->
 start_timer(State) ->
 start_timer(State) ->
     State#{timer := emqx_misc:start_timer(timer:seconds(2), reset)}.
     State#{timer := emqx_misc:start_timer(timer:seconds(2), reset)}.
 
 
-parse_opt(Opts) ->
-    parse_opt(Opts, []).
-parse_opt([], Acc) ->
+sysm_opts() ->
+    sysm_opts(maps:to_list(emqx_config:get([sysmon, vm])), []).
+sysm_opts([], Acc) ->
     Acc;
     Acc;
-parse_opt([{long_gc, 0}|Opts], Acc) ->
-    parse_opt(Opts, Acc);
-parse_opt([{long_gc, Ms}|Opts], Acc) when is_integer(Ms) ->
-    parse_opt(Opts, [{long_gc, Ms}|Acc]);
-parse_opt([{long_schedule, 0}|Opts], Acc) ->
-    parse_opt(Opts, Acc);
-parse_opt([{long_schedule, Ms}|Opts], Acc) when is_integer(Ms) ->
-    parse_opt(Opts, [{long_schedule, Ms}|Acc]);
-parse_opt([{large_heap, Size}|Opts], Acc) when is_integer(Size) ->
-    parse_opt(Opts, [{large_heap, Size}|Acc]);
-parse_opt([{busy_port, true}|Opts], Acc) ->
-    parse_opt(Opts, [busy_port|Acc]);
-parse_opt([{busy_port, false}|Opts], Acc) ->
-    parse_opt(Opts, Acc);
-parse_opt([{busy_dist_port, true}|Opts], Acc) ->
-    parse_opt(Opts, [busy_dist_port|Acc]);
-parse_opt([{busy_dist_port, false}|Opts], Acc) ->
-    parse_opt(Opts, Acc);
-parse_opt([_Opt|Opts], Acc) ->
-    parse_opt(Opts, Acc).
+sysm_opts([{_, disabled}|Opts], Acc) ->
+    sysm_opts(Opts, Acc);
+sysm_opts([{long_gc, Ms}|Opts], Acc) when is_integer(Ms) ->
+    sysm_opts(Opts, [{long_gc, Ms}|Acc]);
+sysm_opts([{long_schedule, Ms}|Opts], Acc) when is_integer(Ms) ->
+    sysm_opts(Opts, [{long_schedule, Ms}|Acc]);
+sysm_opts([{large_heap, Size}|Opts], Acc) when is_integer(Size) ->
+    sysm_opts(Opts, [{large_heap, Size}|Acc]);
+sysm_opts([{busy_port, true}|Opts], Acc) ->
+    sysm_opts(Opts, [busy_port|Acc]);
+sysm_opts([{busy_port, false}|Opts], Acc) ->
+    sysm_opts(Opts, Acc);
+sysm_opts([{busy_dist_port, true}|Opts], Acc) ->
+    sysm_opts(Opts, [busy_dist_port|Acc]);
+sysm_opts([{busy_dist_port, false}|Opts], Acc) ->
+    sysm_opts(Opts, Acc);
+sysm_opts([_Opt|Opts], Acc) ->
+    sysm_opts(Opts, Acc).
 
 
 handle_call(Req, _From, State) ->
 handle_call(Req, _From, State) ->
     ?LOG(error, "Unexpected call: ~p", [Req]),
     ?LOG(error, "Unexpected call: ~p", [Req]),

+ 1 - 1
apps/emqx/src/emqx_sys_sup.erl

@@ -28,7 +28,7 @@ start_link() ->
 init([]) ->
 init([]) ->
     Childs = [child_spec(emqx_sys),
     Childs = [child_spec(emqx_sys),
               child_spec(emqx_alarm),
               child_spec(emqx_alarm),
-              child_spec(emqx_sys_mon, [config(sysmon)]),
+              child_spec(emqx_sys_mon),
               child_spec(emqx_os_mon,  [config(os_mon)]),
               child_spec(emqx_os_mon,  [config(os_mon)]),
               child_spec(emqx_vm_mon,  [config(vm_mon)])],
               child_spec(emqx_vm_mon,  [config(vm_mon)])],
     {ok, {{one_for_one, 10, 100}, Childs}}.
     {ok, {{one_for_one, 10, 100}, Childs}}.