feat(telemetry): Update the configuration file to hocon (#5064)
This commit is contained in:
parent
39e4d348f6
commit
b4d9af0e85
|
@ -101,16 +101,6 @@
|
||||||
, delete_banned/1
|
, delete_banned/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
-ifndef(EMQX_ENTERPRISE).
|
|
||||||
|
|
||||||
-export([ enable_telemetry/0
|
|
||||||
, disable_telemetry/0
|
|
||||||
, get_telemetry_status/0
|
|
||||||
, get_telemetry_data/0
|
|
||||||
]).
|
|
||||||
|
|
||||||
-endif.
|
|
||||||
|
|
||||||
%% Common Table API
|
%% Common Table API
|
||||||
-export([ item/2
|
-export([ item/2
|
||||||
, max_row_limit/0
|
, max_row_limit/0
|
||||||
|
@ -498,38 +488,6 @@ create_banned(Banned) ->
|
||||||
delete_banned(Who) ->
|
delete_banned(Who) ->
|
||||||
emqx_banned:delete(Who).
|
emqx_banned:delete(Who).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
%%--------------------------------------------------------------------
|
|
||||||
%% Telemtry API
|
|
||||||
%%--------------------------------------------------------------------
|
|
||||||
|
|
||||||
-ifndef(EMQX_ENTERPRISE).
|
|
||||||
|
|
||||||
enable_telemetry() ->
|
|
||||||
lists:foreach(fun enable_telemetry/1,ekka_mnesia:running_nodes()).
|
|
||||||
|
|
||||||
enable_telemetry(Node) when Node =:= node() ->
|
|
||||||
emqx_telemetry:enable();
|
|
||||||
enable_telemetry(Node) ->
|
|
||||||
rpc_call(Node, enable_telemetry, [Node]).
|
|
||||||
|
|
||||||
disable_telemetry() ->
|
|
||||||
lists:foreach(fun disable_telemetry/1,ekka_mnesia:running_nodes()).
|
|
||||||
|
|
||||||
disable_telemetry(Node) when Node =:= node() ->
|
|
||||||
emqx_telemetry:disable();
|
|
||||||
disable_telemetry(Node) ->
|
|
||||||
rpc_call(Node, disable_telemetry, [Node]).
|
|
||||||
|
|
||||||
get_telemetry_status() ->
|
|
||||||
[{enabled, emqx_telemetry:is_enabled()}].
|
|
||||||
|
|
||||||
get_telemetry_data() ->
|
|
||||||
emqx_telemetry:get_telemetry().
|
|
||||||
|
|
||||||
-endif.
|
|
||||||
|
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% Common Table API
|
%% Common Table API
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
|
@ -1,28 +1,3 @@
|
||||||
##--------------------------------------------------------------------
|
emqx_telemetry:{
|
||||||
## Telemetry
|
enabled: true
|
||||||
##--------------------------------------------------------------------
|
}
|
||||||
|
|
||||||
## Enable telemetry
|
|
||||||
##
|
|
||||||
## Value: true | false
|
|
||||||
##
|
|
||||||
## Default: true
|
|
||||||
telemetry.enabled = true
|
|
||||||
|
|
||||||
## The destination URL for the telemetry data report
|
|
||||||
##
|
|
||||||
## Value: String
|
|
||||||
##
|
|
||||||
## Default: "https://telemetry.emqx.io/api/telemetry"
|
|
||||||
telemetry.url = "https://telemetry.emqx.io/api/telemetry"
|
|
||||||
|
|
||||||
## Interval for reporting telemetry data
|
|
||||||
##
|
|
||||||
## Value: Duration
|
|
||||||
## -d: day
|
|
||||||
## -h: hour
|
|
||||||
## -m: minute
|
|
||||||
## -s: second
|
|
||||||
##
|
|
||||||
## Default: 7d
|
|
||||||
telemetry.report_interval = 7d
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
%% The destination URL for the telemetry data report
|
||||||
|
-define(TELEMETRY_URL, "https://telemetry.emqx.io/api/telemetry").
|
||||||
|
|
||||||
|
%% Interval for reporting telemetry data, Default: 7d
|
||||||
|
-define(REPORT_INTERVAR, 604800).
|
|
@ -1,17 +0,0 @@
|
||||||
%%-*- mode: erlang -*-
|
|
||||||
%% Retainer config mapping
|
|
||||||
|
|
||||||
{mapping, "telemetry.enabled", "emqx_telemetry.enabled", [
|
|
||||||
{default, true},
|
|
||||||
{datatype, {enum, [true, false]}}
|
|
||||||
]}.
|
|
||||||
|
|
||||||
{mapping, "telemetry.url", "emqx_telemetry.url", [
|
|
||||||
{default, "https://telemetry.emqx.io/api/telemetry"},
|
|
||||||
{datatype, string}
|
|
||||||
]}.
|
|
||||||
|
|
||||||
{mapping, "telemetry.report_interval", "emqx_telemetry.report_interval", [
|
|
||||||
{default, "7d"},
|
|
||||||
{datatype, {duration, s}}
|
|
||||||
]}.
|
|
|
@ -1,6 +1,6 @@
|
||||||
{application, emqx_telemetry,
|
{application, emqx_telemetry,
|
||||||
[{description, "EMQ X Telemetry"},
|
[{description, "EMQ X Telemetry"},
|
||||||
{vsn, "4.3.1"}, % strict semver, bump manually!
|
{vsn, "5.0.0"}, % strict semver, bump manually!
|
||||||
{modules, []},
|
{modules, []},
|
||||||
{registered, [emqx_telemetry_sup]},
|
{registered, [emqx_telemetry_sup]},
|
||||||
{applications, [kernel,stdlib]},
|
{applications, [kernel,stdlib]},
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
%% -*- mode: erlang -*-
|
|
||||||
{VSN,
|
|
||||||
[
|
|
||||||
{"4.3.0", [
|
|
||||||
{load_module, emqx_telemetry, brutal_purge, soft_purge, []}
|
|
||||||
]},
|
|
||||||
{<<".*">>, []}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
{"4.3.0", [
|
|
||||||
{load_module, emqx_telemetry, brutal_purge, soft_purge, []}
|
|
||||||
]},
|
|
||||||
{<<".*">>, []}
|
|
||||||
]
|
|
||||||
}.
|
|
|
@ -24,7 +24,7 @@
|
||||||
-include_lib("kernel/include/file.hrl").
|
-include_lib("kernel/include/file.hrl").
|
||||||
-include_lib("snabbkaffe/include/snabbkaffe.hrl").
|
-include_lib("snabbkaffe/include/snabbkaffe.hrl").
|
||||||
|
|
||||||
-logger_header("[Telemetry]").
|
-include("emqx_telemetry.hrl").
|
||||||
|
|
||||||
%% Mnesia bootstrap
|
%% Mnesia bootstrap
|
||||||
-export([mnesia/1]).
|
-export([mnesia/1]).
|
||||||
|
@ -140,16 +140,11 @@ get_telemetry() ->
|
||||||
%% is very small, it should be safe to ignore.
|
%% is very small, it should be safe to ignore.
|
||||||
-dialyzer([{nowarn_function, [init/1]}]).
|
-dialyzer([{nowarn_function, [init/1]}]).
|
||||||
init([Opts]) ->
|
init([Opts]) ->
|
||||||
State = #state{url = get_value(url, Opts),
|
State = #state{url = ?TELEMETRY_URL,
|
||||||
report_interval = timer:seconds(get_value(report_interval, Opts))},
|
report_interval = timer:seconds(?REPORT_INTERVAR)},
|
||||||
NState = case mnesia:dirty_read(?TELEMETRY, ?UNIQUE_ID) of
|
NState = case mnesia:dirty_read(?TELEMETRY, ?UNIQUE_ID) of
|
||||||
[] ->
|
[] ->
|
||||||
Enabled = case search_telemetry_enabled() of
|
Enabled = proplists:get_value(enabled, Opts, true),
|
||||||
{error, not_found} ->
|
|
||||||
get_value(enabled, Opts);
|
|
||||||
{M, F} ->
|
|
||||||
erlang:apply(M, F, [])
|
|
||||||
end,
|
|
||||||
UUID = generate_uuid(),
|
UUID = generate_uuid(),
|
||||||
mnesia:dirty_write(?TELEMETRY, #telemetry{id = ?UNIQUE_ID,
|
mnesia:dirty_write(?TELEMETRY, #telemetry{id = ?UNIQUE_ID,
|
||||||
uuid = UUID,
|
uuid = UUID,
|
||||||
|
@ -237,14 +232,6 @@ official_version(Version) ->
|
||||||
ensure_report_timer(State = #state{report_interval = ReportInterval}) ->
|
ensure_report_timer(State = #state{report_interval = ReportInterval}) ->
|
||||||
State#state{timer = emqx_misc:start_timer(ReportInterval, time_to_report_telemetry_data)}.
|
State#state{timer = emqx_misc:start_timer(ReportInterval, time_to_report_telemetry_data)}.
|
||||||
|
|
||||||
license() ->
|
|
||||||
case search_telemetry_license() of
|
|
||||||
{error, not_found} ->
|
|
||||||
[{edition, <<"community">>}];
|
|
||||||
{M, F} ->
|
|
||||||
erlang:apply(M, F, [])
|
|
||||||
end.
|
|
||||||
|
|
||||||
os_info() ->
|
os_info() ->
|
||||||
case erlang:system_info(os_type) of
|
case erlang:system_info(os_type) of
|
||||||
{unix,darwin} ->
|
{unix,darwin} ->
|
||||||
|
@ -348,7 +335,7 @@ generate_uuid() ->
|
||||||
get_telemetry(#state{uuid = UUID}) ->
|
get_telemetry(#state{uuid = UUID}) ->
|
||||||
OSInfo = os_info(),
|
OSInfo = os_info(),
|
||||||
[{emqx_version, bin(emqx_app:get_release())},
|
[{emqx_version, bin(emqx_app:get_release())},
|
||||||
{license, license()},
|
{license, [{edition, <<"community">>}]},
|
||||||
{os_name, bin(get_value(os_name, OSInfo))},
|
{os_name, bin(get_value(os_name, OSInfo))},
|
||||||
{os_version, bin(get_value(os_version, OSInfo))},
|
{os_version, bin(get_value(os_version, OSInfo))},
|
||||||
{otp_version, bin(otp_version())},
|
{otp_version, bin(otp_version())},
|
||||||
|
@ -375,58 +362,6 @@ report_telemetry(State = #state{url = URL}) ->
|
||||||
httpc_request(Method, URL, Headers, Body) ->
|
httpc_request(Method, URL, Headers, Body) ->
|
||||||
httpc:request(Method, {URL, Headers, "application/json", Body}, [], []).
|
httpc:request(Method, {URL, Headers, "application/json", Body}, [], []).
|
||||||
|
|
||||||
ignore_lib_apps(Apps) ->
|
|
||||||
LibApps = [kernel, stdlib, sasl, appmon, eldap, erts,
|
|
||||||
syntax_tools, ssl, crypto, mnesia, os_mon,
|
|
||||||
inets, goldrush, gproc, runtime_tools,
|
|
||||||
snmp, otp_mibs, public_key, asn1, ssh, hipe,
|
|
||||||
common_test, observer, webtool, xmerl, tools,
|
|
||||||
test_server, compiler, debugger, eunit, et,
|
|
||||||
wx],
|
|
||||||
[AppName || {AppName, _, _} <- Apps, not lists:member(AppName, LibApps)].
|
|
||||||
|
|
||||||
search_telemetry_license() ->
|
|
||||||
search_function(telemetry_license).
|
|
||||||
|
|
||||||
search_telemetry_enabled() ->
|
|
||||||
search_function(telemetry_enabled).
|
|
||||||
|
|
||||||
search_function(Name) ->
|
|
||||||
case search_attrs(Name) of
|
|
||||||
[] ->
|
|
||||||
{error, not_found};
|
|
||||||
Callbacks ->
|
|
||||||
case lists:filter(fun({M, F}) ->
|
|
||||||
erlang:function_exported(M, F, 0)
|
|
||||||
end, Callbacks) of
|
|
||||||
[] -> {error, not_found};
|
|
||||||
[{M, F} | _] -> {M, F}
|
|
||||||
end
|
|
||||||
end.
|
|
||||||
|
|
||||||
search_attrs(Name) ->
|
|
||||||
Apps = ignore_lib_apps(application:loaded_applications()),
|
|
||||||
search_attrs(Name, Apps).
|
|
||||||
|
|
||||||
search_attrs(Name, Apps) ->
|
|
||||||
lists:foldl(fun(App, Acc) ->
|
|
||||||
{ok, Modules} = application:get_key(App, modules),
|
|
||||||
Attrs = lists:foldl(fun(Module, Acc0) ->
|
|
||||||
case proplists:get_value(Name, module_attributes(Module), undefined) of
|
|
||||||
undefined -> Acc0;
|
|
||||||
Attrs0 -> Acc0 ++ Attrs0
|
|
||||||
end
|
|
||||||
end, [], Modules),
|
|
||||||
Acc ++ Attrs
|
|
||||||
end, [], Apps).
|
|
||||||
|
|
||||||
module_attributes(Module) ->
|
|
||||||
try Module:module_info(attributes)
|
|
||||||
catch
|
|
||||||
error:undef -> [];
|
|
||||||
error:Reason -> error(Reason)
|
|
||||||
end.
|
|
||||||
|
|
||||||
bin(L) when is_list(L) ->
|
bin(L) when is_list(L) ->
|
||||||
list_to_binary(L);
|
list_to_binary(L);
|
||||||
bin(B) when is_binary(B) ->
|
bin(B) when is_binary(B) ->
|
||||||
|
|
|
@ -51,15 +51,15 @@
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
cli(["enable"]) ->
|
cli(["enable"]) ->
|
||||||
emqx_mgmt:enable_telemetry(),
|
enable_telemetry(),
|
||||||
emqx_ctl:print("Enable telemetry successfully~n");
|
emqx_ctl:print("Enable telemetry successfully~n");
|
||||||
|
|
||||||
cli(["disable"]) ->
|
cli(["disable"]) ->
|
||||||
emqx_mgmt:disable_telemetry(),
|
disable_telemetry(),
|
||||||
emqx_ctl:print("Disable telemetry successfully~n");
|
emqx_ctl:print("Disable telemetry successfully~n");
|
||||||
|
|
||||||
cli(["get", "status"]) ->
|
cli(["get", "status"]) ->
|
||||||
case emqx_mgmt:get_telemetry_status() of
|
case get_telemetry_status() of
|
||||||
[{enabled, true}] ->
|
[{enabled, true}] ->
|
||||||
emqx_ctl:print("Telemetry is enabled~n");
|
emqx_ctl:print("Telemetry is enabled~n");
|
||||||
[{enabled, false}] ->
|
[{enabled, false}] ->
|
||||||
|
@ -67,7 +67,7 @@ cli(["get", "status"]) ->
|
||||||
end;
|
end;
|
||||||
|
|
||||||
cli(["get", "data"]) ->
|
cli(["get", "data"]) ->
|
||||||
{ok, TelemetryData} = emqx_mgmt:get_telemetry_data(),
|
{ok, TelemetryData} = get_telemetry_data(),
|
||||||
case emqx_json:safe_encode(TelemetryData, [pretty]) of
|
case emqx_json:safe_encode(TelemetryData, [pretty]) of
|
||||||
{ok, Bin} ->
|
{ok, Bin} ->
|
||||||
emqx_ctl:print("~s~n", [Bin]);
|
emqx_ctl:print("~s~n", [Bin]);
|
||||||
|
@ -97,7 +97,7 @@ enable(_Bindings, Params) ->
|
||||||
end.
|
end.
|
||||||
|
|
||||||
get_status(_Bindings, _Params) ->
|
get_status(_Bindings, _Params) ->
|
||||||
return(get_telemetry_status()).
|
return({ok, get_telemetry_status()}).
|
||||||
|
|
||||||
get_data(_Bindings, _Params) ->
|
get_data(_Bindings, _Params) ->
|
||||||
return(get_telemetry_data()).
|
return(get_telemetry_data()).
|
||||||
|
@ -119,7 +119,7 @@ disable_telemetry(Node) ->
|
||||||
rpc_call(Node, ?MODULE, disable_telemetry, [Node]).
|
rpc_call(Node, ?MODULE, disable_telemetry, [Node]).
|
||||||
|
|
||||||
get_telemetry_status() ->
|
get_telemetry_status() ->
|
||||||
{ok, [{enabled, emqx_telemetry:is_enabled()}]}.
|
[{enabled, emqx_telemetry:is_enabled()}].
|
||||||
|
|
||||||
get_telemetry_data() ->
|
get_telemetry_data() ->
|
||||||
emqx_telemetry:get_telemetry().
|
emqx_telemetry:get_telemetry().
|
||||||
|
|
|
@ -18,16 +18,22 @@
|
||||||
|
|
||||||
-behaviour(application).
|
-behaviour(application).
|
||||||
|
|
||||||
-emqx_plugin(?MODULE).
|
-define(APP, emqx_telemetry).
|
||||||
|
|
||||||
-export([ start/2
|
-export([ start/2
|
||||||
, stop/1
|
, stop/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
start(_Type, _Args) ->
|
start(_Type, _Args) ->
|
||||||
emqx_ctl:register_command(telemetry, {emqx_telemetry_api, cli}),
|
%% TODO
|
||||||
Env = application:get_all_env(emqx_telemetry),
|
%% After the relevant code for building hocon configuration will be deleted
|
||||||
emqx_telemetry_sup:start_link(Env).
|
%% Get the configuration using emqx_config:get
|
||||||
|
ConfFile = filename:join([emqx:get_env(plugins_etc_dir), ?APP]) ++ ".conf",
|
||||||
|
{ok, RawConfig} = hocon:load(ConfFile),
|
||||||
|
Config = hocon_schema:check_plain(emqx_telemetry_schema, RawConfig, #{atom_key => true}),
|
||||||
|
emqx_config_handler:update_config(emqx_config_handler, Config),
|
||||||
|
Enabled = emqx_config:get([?APP, enabled], true),
|
||||||
|
emqx_telemetry_sup:start_link([{enabled, Enabled}]).
|
||||||
|
|
||||||
stop(_State) ->
|
stop(_State) ->
|
||||||
emqx_ctl:unregister_command(telemetry),
|
emqx_ctl:unregister_command(telemetry),
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
-module(emqx_telemetry_schema).
|
||||||
|
|
||||||
|
-include_lib("typerefl/include/types.hrl").
|
||||||
|
|
||||||
|
-behaviour(hocon_schema).
|
||||||
|
|
||||||
|
-export([ structs/0
|
||||||
|
, fields/1]).
|
||||||
|
|
||||||
|
structs() -> ["emqx_telemetry"].
|
||||||
|
|
||||||
|
fields("emqx_telemetry") ->
|
||||||
|
[{enabled, emqx_schema:t(boolean(), undefined, false)}].
|
|
@ -29,11 +29,20 @@ all() -> emqx_ct:all(?MODULE).
|
||||||
|
|
||||||
init_per_testcase(_, Config) ->
|
init_per_testcase(_, Config) ->
|
||||||
emqx_ct_helpers:boot_modules(all),
|
emqx_ct_helpers:boot_modules(all),
|
||||||
emqx_ct_helpers:start_apps([emqx_modules, emqx_telemetry]),
|
emqx_ct_helpers:start_apps([emqx_telemetry], fun set_special_configs/1),
|
||||||
Config.
|
Config.
|
||||||
|
|
||||||
end_per_testcase(_, _Config) ->
|
end_per_testcase(_, _Config) ->
|
||||||
emqx_ct_helpers:stop_apps([emqx_telemetry, emqx_modules]).
|
emqx_ct_helpers:stop_apps([emqx_telemetry]).
|
||||||
|
|
||||||
|
set_special_configs(emqx_telemetry) ->
|
||||||
|
application:set_env(emqx, plugins_etc_dir,
|
||||||
|
emqx_ct_helpers:deps_path(emqx_telemetry, "test")),
|
||||||
|
Conf = #{<<"emqx_telemetry">> => #{<<"enabled">> => true}},
|
||||||
|
ok = file:write_file(filename:join(emqx:get_env(plugins_etc_dir), 'emqx_telemetry.conf'), jsx:encode(Conf)),
|
||||||
|
ok;
|
||||||
|
set_special_configs(_App) ->
|
||||||
|
ok.
|
||||||
|
|
||||||
t_uuid(_) ->
|
t_uuid(_) ->
|
||||||
UUID = emqx_telemetry:generate_uuid(),
|
UUID = emqx_telemetry:generate_uuid(),
|
||||||
|
@ -41,9 +50,7 @@ t_uuid(_) ->
|
||||||
?assertEqual(5, length(Parts)),
|
?assertEqual(5, length(Parts)),
|
||||||
{ok, UUID2} = emqx_telemetry:get_uuid(),
|
{ok, UUID2} = emqx_telemetry:get_uuid(),
|
||||||
emqx_telemetry:stop(),
|
emqx_telemetry:stop(),
|
||||||
emqx_telemetry:start_link([{enabled, true},
|
emqx_telemetry:start_link([{enabled, true}]),
|
||||||
{url, "https://telemetry.emqx.io/api/telemetry"},
|
|
||||||
{report_interval, 7 * 24 * 60 * 60}]),
|
|
||||||
{ok, UUID3} = emqx_telemetry:get_uuid(),
|
{ok, UUID3} = emqx_telemetry:get_uuid(),
|
||||||
?assertEqual(UUID2, UUID3).
|
?assertEqual(UUID2, UUID3).
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,5 @@
|
||||||
{emqx_modules, {{enable_plugin_emqx_modules}}}.
|
{emqx_modules, {{enable_plugin_emqx_modules}}}.
|
||||||
{emqx_recon, {{enable_plugin_emqx_recon}}}.
|
{emqx_recon, {{enable_plugin_emqx_recon}}}.
|
||||||
{emqx_retainer, {{enable_plugin_emqx_retainer}}}.
|
{emqx_retainer, {{enable_plugin_emqx_retainer}}}.
|
||||||
{emqx_telemetry, {{enable_plugin_emqx_telemetry}}}.
|
|
||||||
{emqx_rule_engine, {{enable_plugin_emqx_rule_engine}}}.
|
{emqx_rule_engine, {{enable_plugin_emqx_rule_engine}}}.
|
||||||
{emqx_bridge_mqtt, {{enable_plugin_emqx_bridge_mqtt}}}.
|
{emqx_bridge_mqtt, {{enable_plugin_emqx_bridge_mqtt}}}.
|
||||||
|
|
|
@ -196,7 +196,6 @@ overlay_vars_rel(RelType) ->
|
||||||
, {enable_plugin_emqx_modules, false} %% modules is not a plugin in ce
|
, {enable_plugin_emqx_modules, false} %% modules is not a plugin in ce
|
||||||
, {enable_plugin_emqx_recon, true}
|
, {enable_plugin_emqx_recon, true}
|
||||||
, {enable_plugin_emqx_retainer, true}
|
, {enable_plugin_emqx_retainer, true}
|
||||||
, {enable_plugin_emqx_telemetry, true}
|
|
||||||
, {vm_args_file, VmArgs}
|
, {vm_args_file, VmArgs}
|
||||||
].
|
].
|
||||||
|
|
||||||
|
@ -256,6 +255,7 @@ relx_apps(ReleaseType) ->
|
||||||
, emqx_connector
|
, emqx_connector
|
||||||
, emqx_data_bridge
|
, emqx_data_bridge
|
||||||
]
|
]
|
||||||
|
++ [emqx_telemetry || not is_enterprise()]
|
||||||
++ [emqx_modules || not is_enterprise()]
|
++ [emqx_modules || not is_enterprise()]
|
||||||
++ [emqx_license || is_enterprise()]
|
++ [emqx_license || is_enterprise()]
|
||||||
++ [bcrypt || provide_bcrypt_release(ReleaseType)]
|
++ [bcrypt || provide_bcrypt_release(ReleaseType)]
|
||||||
|
@ -296,7 +296,6 @@ relx_plugin_apps(ReleaseType) ->
|
||||||
, emqx_sasl
|
, emqx_sasl
|
||||||
, emqx_statsd
|
, emqx_statsd
|
||||||
]
|
]
|
||||||
++ [emqx_telemetry || not is_enterprise()]
|
|
||||||
++ relx_plugin_apps_per_rel(ReleaseType)
|
++ relx_plugin_apps_per_rel(ReleaseType)
|
||||||
++ relx_plugin_apps_enterprise(is_enterprise())
|
++ relx_plugin_apps_enterprise(is_enterprise())
|
||||||
++ relx_plugin_apps_extra().
|
++ relx_plugin_apps_extra().
|
||||||
|
@ -387,6 +386,7 @@ emqx_etc_overlay_common() ->
|
||||||
{"{{base_dir}}/lib/emqx/etc/emqx.conf", "etc/emqx.conf"},
|
{"{{base_dir}}/lib/emqx/etc/emqx.conf", "etc/emqx.conf"},
|
||||||
{"{{base_dir}}/lib/emqx/etc/ssl_dist.conf", "etc/ssl_dist.conf"},
|
{"{{base_dir}}/lib/emqx/etc/ssl_dist.conf", "etc/ssl_dist.conf"},
|
||||||
{"{{base_dir}}/lib/emqx_data_bridge/etc/emqx_data_bridge.conf", "etc/plugins/emqx_data_bridge.conf"},
|
{"{{base_dir}}/lib/emqx_data_bridge/etc/emqx_data_bridge.conf", "etc/plugins/emqx_data_bridge.conf"},
|
||||||
|
{"{{base_dir}}/lib/emqx_telemetry/etc/emqx_telemetry.conf", "etc/plugins/emqx_telemetry.conf"},
|
||||||
{"{{base_dir}}/lib/emqx_authz/etc/emqx_authz.conf", "etc/plugins/authz.conf"},
|
{"{{base_dir}}/lib/emqx_authz/etc/emqx_authz.conf", "etc/plugins/authz.conf"},
|
||||||
%% TODO: check why it has to end with .paho
|
%% TODO: check why it has to end with .paho
|
||||||
%% and why it is put to etc/plugins dir
|
%% and why it is put to etc/plugins dir
|
||||||
|
|
Loading…
Reference in New Issue