feat(telemetry): enable/disable even in non-official versions
- Makes telemetry enabled by default on official versions. - Allow enabling/disabling telemetry even on non-official versions.
This commit is contained in:
parent
097b38e418
commit
6e819b5ecb
|
@ -84,7 +84,8 @@ remove_topic_metrics(Topic) ->
|
|||
|
||||
-spec is_telemetry_enabled() -> boolean().
|
||||
is_telemetry_enabled() ->
|
||||
emqx:get_config([telemetry, enable], true).
|
||||
IsOfficial = emqx_telemetry:official_version(emqx_release:version()),
|
||||
emqx:get_config([telemetry, enable], IsOfficial).
|
||||
|
||||
-spec set_telemetry_status(boolean()) -> ok | {error, term()}.
|
||||
set_telemetry_status(Status) ->
|
||||
|
|
|
@ -116,7 +116,7 @@ stop() ->
|
|||
gen_server:stop(?MODULE).
|
||||
|
||||
enable() ->
|
||||
gen_server:call(?MODULE, enable).
|
||||
gen_server:call(?MODULE, enable, 15_000).
|
||||
|
||||
disable() ->
|
||||
gen_server:call(?MODULE, disable).
|
||||
|
@ -146,21 +146,11 @@ init(_Opts) ->
|
|||
{ok, State0#state{node_uuid = NodeUUID, cluster_uuid = ClusterUUID}}.
|
||||
|
||||
handle_call(enable, _From, State0) ->
|
||||
case ?MODULE:official_version(emqx_app:get_release()) of
|
||||
true ->
|
||||
State = report_telemetry(State0),
|
||||
{reply, ok, ensure_report_timer(State)};
|
||||
false ->
|
||||
{reply, {error, not_official_version}, State0}
|
||||
end;
|
||||
State = report_telemetry(State0),
|
||||
{reply, ok, ensure_report_timer(State)};
|
||||
handle_call(disable, _From, State = #state{timer = Timer}) ->
|
||||
case ?MODULE:official_version(emqx_app:get_release()) of
|
||||
true ->
|
||||
emqx_misc:cancel_timer(Timer),
|
||||
{reply, ok, State#state{timer = undefined}};
|
||||
false ->
|
||||
{reply, {error, not_official_version}, State}
|
||||
end;
|
||||
emqx_misc:cancel_timer(Timer),
|
||||
{reply, ok, State#state{timer = undefined}};
|
||||
handle_call(get_node_uuid, _From, State = #state{node_uuid = UUID}) ->
|
||||
{reply, {ok, UUID}, State};
|
||||
handle_call(get_cluster_uuid, _From, State = #state{cluster_uuid = UUID}) ->
|
||||
|
@ -200,7 +190,7 @@ code_change(_OldVsn, State, _Extra) ->
|
|||
%%------------------------------------------------------------------------------
|
||||
|
||||
official_version(Version) ->
|
||||
Pt = "^\\d+\\.\\d+(?:(-(?:alpha|beta|rc)\\.[1-9][0-9]*)|\\.\\d+)$",
|
||||
Pt = "^\\d+\\.\\d+(?:\\.\\d+)?(?:(-(?:alpha|beta|rc)\\.[1-9][0-9]*))?$",
|
||||
match =:= re:run(Version, Pt, [{capture, none}]).
|
||||
|
||||
ensure_report_timer(State = #state{report_interval = ReportInterval}) ->
|
||||
|
@ -454,16 +444,25 @@ advanced_mqtt_features() ->
|
|||
maps:map(fun(_K, V) -> bool2int(V) end, AdvancedFeatures).
|
||||
|
||||
get_authn_authz_info() ->
|
||||
#{
|
||||
authenticators := AuthnTypes,
|
||||
overridden_listeners := OverriddenListeners
|
||||
} = emqx_authn:get_enabled_authns(),
|
||||
AuthzTypes = emqx_authz:get_enabled_authzs(),
|
||||
#{
|
||||
authn => AuthnTypes,
|
||||
authn_listener => OverriddenListeners,
|
||||
authz => AuthzTypes
|
||||
}.
|
||||
try
|
||||
#{
|
||||
authenticators := AuthnTypes,
|
||||
overridden_listeners := OverriddenListeners
|
||||
} = emqx_authn:get_enabled_authns(),
|
||||
AuthzTypes = emqx_authz:get_enabled_authzs(),
|
||||
#{
|
||||
authn => AuthnTypes,
|
||||
authn_listener => OverriddenListeners,
|
||||
authz => AuthzTypes
|
||||
}
|
||||
catch
|
||||
_:_ ->
|
||||
#{
|
||||
authn => [],
|
||||
authn_listener => [],
|
||||
authz => []
|
||||
}
|
||||
end.
|
||||
|
||||
get_gateway_info() ->
|
||||
try
|
||||
|
|
|
@ -215,7 +215,7 @@ status(put, #{body := Body}) ->
|
|||
Reason =
|
||||
case Enable of
|
||||
true -> <<"Telemetry status is already enabled">>;
|
||||
false -> <<"Telemetry status is already disable">>
|
||||
false -> <<"Telemetry status is already disabled">>
|
||||
end,
|
||||
{400, #{code => 'BAD_REQUEST', message => Reason}};
|
||||
false ->
|
||||
|
|
|
@ -242,7 +242,18 @@ t_official_version(_) ->
|
|||
false = emqx_telemetry:official_version("1.1-alpha.0"),
|
||||
true = emqx_telemetry:official_version("1.1-beta.1"),
|
||||
true = emqx_telemetry:official_version("1.1-rc.1"),
|
||||
false = emqx_telemetry:official_version("1.1-alpha.a").
|
||||
false = emqx_telemetry:official_version("1.1-alpha.a"),
|
||||
true = emqx_telemetry:official_version("5.0.0"),
|
||||
true = emqx_telemetry:official_version("5.0.0-alpha.1"),
|
||||
true = emqx_telemetry:official_version("5.0.0-beta.4"),
|
||||
true = emqx_telemetry:official_version("5.0-rc.1"),
|
||||
true = emqx_telemetry:official_version("5.0.0-rc.1"),
|
||||
false = emqx_telemetry:official_version("5.0.0-alpha.a"),
|
||||
false = emqx_telemetry:official_version("5.0.0-beta.a"),
|
||||
false = emqx_telemetry:official_version("5.0.0-rc.a"),
|
||||
false = emqx_telemetry:official_version("5.0.0-foo"),
|
||||
false = emqx_telemetry:official_version("5.0.0-rc.1-ccdf7920"),
|
||||
ok.
|
||||
|
||||
t_get_telemetry(_Config) ->
|
||||
{ok, TelemetryData} = emqx_telemetry:get_telemetry(),
|
||||
|
|
|
@ -52,19 +52,18 @@ end_per_suite(_Config) ->
|
|||
]),
|
||||
ok.
|
||||
|
||||
init_per_testcase(t_status_fail, Config) ->
|
||||
init_per_testcase(t_status_non_official, Config) ->
|
||||
meck:new(emqx_telemetry, [non_strict, passthrough]),
|
||||
meck:expect(emqx_telemetry, official_version, 1, false),
|
||||
Config;
|
||||
init_per_testcase(t_status, Config) ->
|
||||
meck:new(emqx_telemetry, [non_strict, passthrough]),
|
||||
meck:expect(emqx_telemetry, official_version, 1, true),
|
||||
meck:expect(emqx_telemetry, enable, fun() -> ok end),
|
||||
Config;
|
||||
init_per_testcase(_TestCase, Config) ->
|
||||
Config.
|
||||
|
||||
end_per_testcase(t_status_fail, _Config) ->
|
||||
end_per_testcase(t_status_non_official, _Config) ->
|
||||
meck:unload(emqx_telemetry);
|
||||
end_per_testcase(t_status, _Config) ->
|
||||
meck:unload(emqx_telemetry);
|
||||
|
@ -138,9 +137,9 @@ t_status(_) ->
|
|||
)
|
||||
).
|
||||
|
||||
t_status_fail(_) ->
|
||||
t_status_non_official(_) ->
|
||||
?assertMatch(
|
||||
{ok, 400, _},
|
||||
{ok, 200, _},
|
||||
request(
|
||||
put,
|
||||
uri(["telemetry", "status"]),
|
||||
|
|
Loading…
Reference in New Issue