fix: remove os_mon application in Windows release
This commit is contained in:
parent
b23da691c0
commit
848eb7e3c3
|
@ -14,7 +14,6 @@
|
|||
esockd,
|
||||
cowboy,
|
||||
sasl,
|
||||
os_mon,
|
||||
lc,
|
||||
hocon,
|
||||
emqx_durable_storage
|
||||
|
|
|
@ -56,7 +56,7 @@ start_link() ->
|
|||
gen_server:start_link({local, ?OS_MON}, ?MODULE, [], []).
|
||||
|
||||
update(OS) ->
|
||||
erlang:send(?MODULE, {monitor_conf_update, OS}).
|
||||
gen_server:cast(?MODULE, {monitor_conf_update, OS}).
|
||||
|
||||
%%--------------------------------------------------------------------
|
||||
%% API
|
||||
|
@ -110,6 +110,12 @@ handle_call({set_sysmem_high_watermark, New}, _From, #{sysmem_high_watermark :=
|
|||
handle_call(Req, _From, State) ->
|
||||
{reply, {error, {unexpected_call, Req}}, State}.
|
||||
|
||||
handle_cast({monitor_conf_update, OS}, State) ->
|
||||
cancel_outdated_timer(State),
|
||||
SysHW = init_os_monitor(OS),
|
||||
MemRef = start_mem_check_timer(),
|
||||
CpuRef = start_cpu_check_timer(),
|
||||
{noreply, #{sysmem_high_watermark => SysHW, mem_time_ref => MemRef, cpu_time_ref => CpuRef}};
|
||||
handle_cast(Msg, State) ->
|
||||
?SLOG(error, #{msg => "unexpected_cast", cast => Msg}),
|
||||
{noreply, State}.
|
||||
|
@ -151,12 +157,6 @@ handle_info({timeout, _Timer, cpu_check}, State) ->
|
|||
end,
|
||||
Ref = start_cpu_check_timer(),
|
||||
{noreply, State#{cpu_time_ref => Ref}};
|
||||
handle_info({monitor_conf_update, OS}, State) ->
|
||||
cancel_outdated_timer(State),
|
||||
SysHW = init_os_monitor(OS),
|
||||
MemRef = start_mem_check_timer(),
|
||||
CpuRef = start_cpu_check_timer(),
|
||||
{noreply, #{sysmem_high_watermark => SysHW, mem_time_ref => MemRef, cpu_time_ref => CpuRef}};
|
||||
handle_info(Info, State) ->
|
||||
?SLOG(error, #{msg => "unexpected_info", info => Info}),
|
||||
{noreply, State}.
|
||||
|
|
|
@ -1582,7 +1582,7 @@ fields("sysmon_os") ->
|
|||
sc(
|
||||
hoconsc:union([disabled, duration()]),
|
||||
#{
|
||||
default => <<"60s">>,
|
||||
default => default_mem_check_interval(),
|
||||
desc => ?DESC(sysmon_os_mem_check_interval)
|
||||
}
|
||||
)},
|
||||
|
@ -3657,3 +3657,9 @@ shared_subscription_strategy() ->
|
|||
desc => ?DESC(broker_shared_subscription_strategy)
|
||||
}
|
||||
)}.
|
||||
|
||||
default_mem_check_interval() ->
|
||||
case emqx_sys_sup:is_os_mon_supported() of
|
||||
true -> <<"60s">>;
|
||||
false -> disabled
|
||||
end.
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
-behaviour(supervisor).
|
||||
|
||||
-export([start_link/0]).
|
||||
-export([is_os_mon_supported/0]).
|
||||
|
||||
-export([init/1]).
|
||||
|
||||
|
@ -26,19 +27,27 @@ start_link() ->
|
|||
supervisor:start_link({local, ?MODULE}, ?MODULE, []).
|
||||
|
||||
init([]) ->
|
||||
Childs = [
|
||||
child_spec(emqx_sys),
|
||||
child_spec(emqx_alarm),
|
||||
child_spec(emqx_sys_mon),
|
||||
child_spec(emqx_os_mon),
|
||||
child_spec(emqx_vm_mon)
|
||||
],
|
||||
{ok, {{one_for_one, 10, 100}, Childs}}.
|
||||
OsMon =
|
||||
case is_os_mon_supported() of
|
||||
true -> [child_spec(emqx_os_mon)];
|
||||
false -> []
|
||||
end,
|
||||
Children =
|
||||
[
|
||||
child_spec(emqx_sys),
|
||||
child_spec(emqx_alarm),
|
||||
child_spec(emqx_sys_mon),
|
||||
child_spec(emqx_vm_mon)
|
||||
] ++ OsMon,
|
||||
{ok, {{one_for_one, 10, 100}, Children}}.
|
||||
|
||||
%%--------------------------------------------------------------------
|
||||
%% Internal functions
|
||||
%%--------------------------------------------------------------------
|
||||
|
||||
is_os_mon_supported() ->
|
||||
erlang:function_exported(memsup, get_procmem_high_watermark, 0).
|
||||
|
||||
child_spec(Mod) ->
|
||||
child_spec(Mod, []).
|
||||
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
[
|
||||
emqx,
|
||||
emqx_conf,
|
||||
|
||||
esasl,
|
||||
observer_cli,
|
||||
tools,
|
||||
|
|
|
@ -405,12 +405,13 @@ relx_apps(ReleaseType, Edition) ->
|
|||
ce -> CEBusinessApps
|
||||
end,
|
||||
BusinessApps = CommonBusinessApps ++ EditionSpecificApps,
|
||||
ExcludedApps = excluded_apps(ReleaseType),
|
||||
SystemApps ++
|
||||
%% EMQX starts the DB and the business applications:
|
||||
[{App, load} || App <- (DBApps -- ExcludedApps)] ++
|
||||
[emqx_machine] ++
|
||||
[{App, load} || App <- (BusinessApps -- ExcludedApps)].
|
||||
Apps =
|
||||
(SystemApps ++
|
||||
%% EMQX starts the DB and the business applications:
|
||||
[{App, load} || App <- DBApps] ++
|
||||
[emqx_machine] ++
|
||||
[{App, load} || App <- BusinessApps]),
|
||||
lists:foldl(fun proplists:delete/2, Apps, excluded_apps(ReleaseType)).
|
||||
|
||||
excluded_apps(ReleaseType) ->
|
||||
OptionalApps = [
|
||||
|
@ -418,7 +419,8 @@ excluded_apps(ReleaseType) ->
|
|||
{bcrypt, provide_bcrypt_release(ReleaseType)},
|
||||
{jq, is_jq_supported()},
|
||||
{observer, is_app(observer)},
|
||||
{mnesia_rocksdb, is_rocksdb_supported()}
|
||||
{mnesia_rocksdb, is_rocksdb_supported()},
|
||||
{os_mon, provide_os_mon_release()}
|
||||
],
|
||||
[App || {App, false} <- OptionalApps].
|
||||
|
||||
|
@ -524,6 +526,9 @@ is_debug(VarName) ->
|
|||
provide_bcrypt_dep() ->
|
||||
not is_win32().
|
||||
|
||||
provide_os_mon_release() ->
|
||||
not is_win32().
|
||||
|
||||
provide_bcrypt_release(ReleaseType) ->
|
||||
provide_bcrypt_dep() andalso ReleaseType =:= cloud.
|
||||
|
||||
|
|
|
@ -156,7 +156,7 @@ persistent_session_builtin_messages_table.label:
|
|||
|
||||
sysmon_os_cpu_low_watermark.desc:
|
||||
"""The threshold, as percentage of system CPU load,
|
||||
for how much system cpu can be used before the corresponding alarm is cleared."""
|
||||
for how much system cpu can be used before the corresponding alarm is cleared. Disabled on Windows platform"""
|
||||
|
||||
sysmon_os_cpu_low_watermark.label:
|
||||
"""CPU low watermark"""
|
||||
|
@ -278,7 +278,7 @@ fields_ws_opts_mqtt_path.label:
|
|||
sysmon_os_procmem_high_watermark.desc:
|
||||
"""The threshold, as percentage of system memory,
|
||||
for how much system memory can be allocated by one Erlang process before
|
||||
the corresponding alarm is raised."""
|
||||
the corresponding alarm is raised. Disabled on Windows platform."""
|
||||
|
||||
sysmon_os_procmem_high_watermark.label:
|
||||
"""ProcMem high wartermark"""
|
||||
|
@ -389,7 +389,7 @@ fields_tcp_opts_sndbuf.label:
|
|||
"""TCP send buffer"""
|
||||
|
||||
sysmon_os_mem_check_interval.desc:
|
||||
"""The time interval for the periodic memory check."""
|
||||
"""The time interval for the periodic memory check. Disabled on Windows platform."""
|
||||
|
||||
sysmon_os_mem_check_interval.label:
|
||||
"""Mem check interval"""
|
||||
|
@ -742,7 +742,7 @@ common_ssl_opts_schema_keyfile.label:
|
|||
|
||||
sysmon_os_cpu_high_watermark.desc:
|
||||
"""The threshold, as percentage of system CPU load,
|
||||
for how much system cpu can be used before the corresponding alarm is raised."""
|
||||
for how much system cpu can be used before the corresponding alarm is raised. Disabled on Windows platform"""
|
||||
|
||||
sysmon_os_cpu_high_watermark.label:
|
||||
"""CPU high watermark"""
|
||||
|
@ -798,7 +798,7 @@ fields_ws_opts_proxy_address_header.label:
|
|||
|
||||
sysmon_os_sysmem_high_watermark.desc:
|
||||
"""The threshold, as percentage of system memory,
|
||||
for how much system memory can be allocated before the corresponding alarm is raised."""
|
||||
for how much system memory can be allocated before the corresponding alarm is raised. Disabled on Windows platform"""
|
||||
|
||||
sysmon_os_sysmem_high_watermark.label:
|
||||
"""SysMem high wartermark"""
|
||||
|
@ -1521,7 +1521,7 @@ fields_tcp_opts_send_timeout_close.label:
|
|||
"""TCP send timeout close"""
|
||||
|
||||
sysmon_os_cpu_check_interval.desc:
|
||||
"""The time interval for the periodic CPU check."""
|
||||
"""The time interval for the periodic CPU check. Disabled on Windows platform."""
|
||||
|
||||
sysmon_os_cpu_check_interval.label:
|
||||
"""The time interval for the periodic CPU check."""
|
||||
|
|
Loading…
Reference in New Issue