fix: format code

This commit is contained in:
EMQ-YangM 2022-04-28 15:39:08 +08:00
parent 5b0ee30d72
commit 4365de9ad5
6 changed files with 115 additions and 99 deletions

View File

@ -579,7 +579,8 @@ handle_delete_authenticator(Chain, AuthenticatorID) ->
ID =:= AuthenticatorID ID =:= AuthenticatorID
end, end,
case do_delete_authenticators(MatchFun, Chain) of case do_delete_authenticators(MatchFun, Chain) of
[] -> {error, {not_found, {authenticator, AuthenticatorID}}}; [] ->
{error, {not_found, {authenticator, AuthenticatorID}}};
[AuthenticatorID] -> [AuthenticatorID] ->
emqx_plugin_libs_metrics:clear_metrics(authn_metrics, AuthenticatorID), emqx_plugin_libs_metrics:clear_metrics(authn_metrics, AuthenticatorID),
ok ok
@ -612,8 +613,12 @@ handle_create_authenticator(Chain, Config, Providers) ->
Chain#chain{authenticators = NAuthenticators} Chain#chain{authenticators = NAuthenticators}
), ),
ok = emqx_plugin_libs_metrics:create_metrics(authn_metrics, AuthenticatorID, ok = emqx_plugin_libs_metrics:create_metrics(
[matched, success, failed, ignore], [matched]), authn_metrics,
AuthenticatorID,
[matched, success, failed, ignore],
[matched]
),
{ok, serialize_authenticator(Authenticator)}; {ok, serialize_authenticator(Authenticator)};
{error, Reason} -> {error, Reason} ->
{error, Reason} {error, Reason}
@ -639,7 +644,8 @@ do_authenticate([#authenticator{id = ID, provider = Provider, state = State} | M
emqx_plugin_libs_metrics:inc(authn_metrics, ID, success); emqx_plugin_libs_metrics:inc(authn_metrics, ID, success);
{error, _} -> {error, _} ->
emqx_plugin_libs_metrics:inc(authn_metrics, ID, failed); emqx_plugin_libs_metrics:inc(authn_metrics, ID, failed);
_ -> ok _ ->
ok
end, end,
{stop, Result} {stop, Result}
catch catch

View File

@ -28,9 +28,11 @@ start_link() ->
init([]) -> init([]) ->
AuthnMetrics = emqx_plugin_libs_metrics:child_spec(emqx_authn_metrics, authn_metrics), AuthnMetrics = emqx_plugin_libs_metrics:child_spec(emqx_authn_metrics, authn_metrics),
AuthzMetrics = emqx_plugin_libs_metrics:child_spec(eqmx_authz_metrics, authz_metrics), AuthzMetrics = emqx_plugin_libs_metrics:child_spec(eqmx_authz_metrics, authz_metrics),
{ok, { {ok,
{one_for_one, 10, 100}, {
[ AuthnMetrics, {one_for_one, 10, 100},
AuthzMetrics [
] AuthnMetrics,
}}. AuthzMetrics
]
}}.

View File

@ -902,8 +902,12 @@ create_authenticator(ConfKeyPath, ChainName, Config) ->
raw_config := AuthenticatorsConfig raw_config := AuthenticatorsConfig
}} -> }} ->
{ok, AuthenticatorConfig} = find_config(ID, AuthenticatorsConfig), {ok, AuthenticatorConfig} = find_config(ID, AuthenticatorsConfig),
ok = emqx_plugin_libs_metrics:create_metrics(authn_metrics, ID, ok = emqx_plugin_libs_metrics:create_metrics(
[matched, success, failed, ignore], [matched]), authn_metrics,
ID,
[matched, success, failed, ignore],
[matched]
),
{200, maps:put(id, ID, convert_certs(fill_defaults(AuthenticatorConfig)))}; {200, maps:put(id, ID, convert_certs(fill_defaults(AuthenticatorConfig)))};
{error, {_PrePostConfigUpdate, emqx_authentication, Reason}} -> {error, {_PrePostConfigUpdate, emqx_authentication, Reason}} ->
serialize_error(Reason); serialize_error(Reason);
@ -934,11 +938,11 @@ list_authenticator(_, ConfKeyPath, AuthenticatorID) ->
resource_provider() -> resource_provider() ->
[ [
emqx_authn_mysql, emqx_authn_mysql,
emqx_authn_pgsql, emqx_authn_pgsql,
emqx_authn_mongodb, emqx_authn_mongodb,
emqx_authn_redis, emqx_authn_redis,
emqx_authn_http emqx_authn_http
]. ].
lookup_from_local_node(ChainName, AuthenticatorID) -> lookup_from_local_node(ChainName, AuthenticatorID) ->
@ -975,10 +979,11 @@ lookup_from_all_nodes(ChainName, AuthenticatorID) ->
HelpFun = fun(M, Name) -> lists:map(MKMap(Name), maps:to_list(M)) end, HelpFun = fun(M, Name) -> lists:map(MKMap(Name), maps:to_list(M)) end,
{200, #{ {200, #{
node_resource_metrics => HelpFun(maps:map(Fun, ResourceMetricsMap), metrics), node_resource_metrics => HelpFun(maps:map(Fun, ResourceMetricsMap), metrics),
resource_metrics => case maps:size(AggregateResourceMetrics) of resource_metrics =>
0 -> #{}; case maps:size(AggregateResourceMetrics) of
_ -> restructure_map(AggregateResourceMetrics) 0 -> #{};
end, _ -> restructure_map(AggregateResourceMetrics)
end,
node_metrics => HelpFun(maps:map(Fun, MetricsMap), metrics), node_metrics => HelpFun(maps:map(Fun, MetricsMap), metrics),
metrics => restructure_map(AggregateMetrics), metrics => restructure_map(AggregateMetrics),
@ -1022,17 +1027,17 @@ aggregate_metrics([HeadMetrics | AllMetrics]) ->
make_result_map(ResList) -> make_result_map(ResList) ->
Fun = Fun =
fun(Elem, {StatusMap, MetricsMap, ResourceMetricsMap, ErrorMap}) -> fun(Elem, {StatusMap, MetricsMap, ResourceMetricsMap, ErrorMap}) ->
case Elem of case Elem of
{ok, {NodeId, Status, Metrics, ResourceMetrics}} -> {ok, {NodeId, Status, Metrics, ResourceMetrics}} ->
{ {
maps:put(NodeId, Status, StatusMap), maps:put(NodeId, Status, StatusMap),
maps:put(NodeId, Metrics, MetricsMap), maps:put(NodeId, Metrics, MetricsMap),
maps:put(NodeId, ResourceMetrics, ResourceMetricsMap), maps:put(NodeId, ResourceMetrics, ResourceMetricsMap),
ErrorMap ErrorMap
}; };
{error, {NodeId, Reason}} -> {error, {NodeId, Reason}} ->
{StatusMap, MetricsMap, ResourceMetricsMap, maps:put(NodeId, Reason, ErrorMap)} {StatusMap, MetricsMap, ResourceMetricsMap, maps:put(NodeId, Reason, ErrorMap)}
end end
end, end,
lists:foldl(Fun, {maps:new(), maps:new(), maps:new(), maps:new()}, ResList). lists:foldl(Fun, {maps:new(), maps:new(), maps:new(), maps:new()}, ResList).
@ -1050,17 +1055,17 @@ restructure_map(#{
rate_max => RateMax rate_max => RateMax
}; };
restructure_map(#{ restructure_map(#{
counters := #{failed := Failed, matched := Match, success := Succ}, counters := #{failed := Failed, matched := Match, success := Succ},
rate := #{matched := #{current := Rate, last5m := Rate5m, max := RateMax}} rate := #{matched := #{current := Rate, last5m := Rate5m, max := RateMax}}
}) -> }) ->
#{ #{
matched => Match, matched => Match,
success => Succ, success => Succ,
failed => Failed, failed => Failed,
rate => Rate, rate => Rate,
rate_last5m => Rate5m, rate_last5m => Rate5m,
rate_max => RateMax rate_max => RateMax
}; };
restructure_map(Error) -> restructure_map(Error) ->
Error. Error.

View File

@ -89,7 +89,6 @@ backend(Name) ->
fields("metrics_status_fields") -> fields("metrics_status_fields") ->
[ [
{"resource_metrics", mk(ref(?MODULE, "resource_metrics"), #{desc => ?DESC("metrics")})}, {"resource_metrics", mk(ref(?MODULE, "resource_metrics"), #{desc => ?DESC("metrics")})},
{"node_resource_metrics", {"node_resource_metrics",
mk( mk(
@ -124,22 +123,20 @@ fields("metrics") ->
{"rate_max", mk(float(), #{desc => ?DESC("rate_max")})}, {"rate_max", mk(float(), #{desc => ?DESC("rate_max")})},
{"rate_last5m", mk(float(), #{desc => ?DESC("rate_last5m")})} {"rate_last5m", mk(float(), #{desc => ?DESC("rate_last5m")})}
]; ];
fields("resource_metrics") -> fields("resource_metrics") ->
[ [
{"matched", mk(integer(), #{desc => ?DESC("matched")})}, {"matched", mk(integer(), #{desc => ?DESC("matched")})},
{"success", mk(integer(), #{desc => ?DESC("success")})}, {"success", mk(integer(), #{desc => ?DESC("success")})},
{"failed", mk(integer(), #{desc => ?DESC("failed")})}, {"failed", mk(integer(), #{desc => ?DESC("failed")})},
{"rate", mk(float(), #{desc => ?DESC("rate")})}, {"rate", mk(float(), #{desc => ?DESC("rate")})},
{"rate_max", mk(float(), #{desc => ?DESC("rate_max")})}, {"rate_max", mk(float(), #{desc => ?DESC("rate_max")})},
{"rate_last5m", mk(float(), #{desc => ?DESC("rate_last5m")})} {"rate_last5m", mk(float(), #{desc => ?DESC("rate_last5m")})}
]; ];
fields("node_metrics") -> fields("node_metrics") ->
[ [
node_name(), node_name(),
{"metrics", mk(ref(?MODULE, "metrics"), #{desc => ?DESC("metrics")})} {"metrics", mk(ref(?MODULE, "metrics"), #{desc => ?DESC("metrics")})}
]; ];
fields("node_resource_metrics") -> fields("node_resource_metrics") ->
[ [
node_name(), node_name(),
@ -150,11 +147,10 @@ fields("node_status") ->
node_name(), node_name(),
{"status", mk(status(), #{desc => ?DESC("node_status")})} {"status", mk(status(), #{desc => ?DESC("node_status")})}
]; ];
fields("node_error") -> fields("node_error") ->
[ [
node_name(), node_name(),
{"error", mk(string(), #{desc => ?DESC("node_error")})} {"error", mk(string(), #{desc => ?DESC("node_error")})}
]. ].
status() -> status() ->

View File

@ -303,34 +303,37 @@ test_authenticator_users(PathPrefix) ->
), ),
{ok, Client} = emqtt:start_link( {ok, Client} = emqtt:start_link(
[ {username, <<"u_event">>} [
, {clientid, <<"c_event">>} {username, <<"u_event">>},
, {proto_ver, v5} {clientid, <<"c_event">>},
, {properties, #{'Session-Expiry-Interval' => 60}} {proto_ver, v5},
]), {properties, #{'Session-Expiry-Interval' => 60}}
]
),
process_flag(trap_exit, true), process_flag(trap_exit, true),
?assertMatch({error, _}, emqtt:connect(Client)), ?assertMatch({error, _}, emqtt:connect(Client)),
timer:sleep(300), timer:sleep(300),
UsersUri0 = uri(PathPrefix ++ [?CONF_NS, "password_based:built_in_database", "status"]), UsersUri0 = uri(PathPrefix ++ [?CONF_NS, "password_based:built_in_database", "status"]),
{ok, 200, PageData0} = request(get, UsersUri0), {ok, 200, PageData0} = request(get, UsersUri0),
case PathPrefix of case PathPrefix of
[] -> [] ->
#{ <<"metrics">> := #{ #{
<<"matched">> := 1, <<"metrics">> := #{
<<"success">> := 0, <<"matched">> := 1,
<<"ignore">> := 1 <<"success">> := 0,
} <<"ignore">> := 1
} = jiffy:decode(PageData0, [return_maps]); }
["listeners",'tcp:default'] -> } = jiffy:decode(PageData0, [return_maps]);
#{ <<"metrics">> := #{ ["listeners", 'tcp:default'] ->
<<"matched">> := 1, #{
<<"success">> := 0, <<"metrics">> := #{
<<"ignore">> := 1 <<"matched">> := 1,
} <<"success">> := 0,
} = jiffy:decode(PageData0, [return_maps]) <<"ignore">> := 1
}
} = jiffy:decode(PageData0, [return_maps])
end, end,
InvalidUsers = [ InvalidUsers = [
@ -360,31 +363,35 @@ test_authenticator_users(PathPrefix) ->
), ),
{ok, Client1} = emqtt:start_link( {ok, Client1} = emqtt:start_link(
[ {username, <<"u1">>} [
, {password, <<"p1">>} {username, <<"u1">>},
, {clientid, <<"c_event">>} {password, <<"p1">>},
, {proto_ver, v5} {clientid, <<"c_event">>},
, {properties, #{'Session-Expiry-Interval' => 60}} {proto_ver, v5},
]), {properties, #{'Session-Expiry-Interval' => 60}}
]
),
{ok, _} = emqtt:connect(Client1), {ok, _} = emqtt:connect(Client1),
timer:sleep(300), timer:sleep(300),
UsersUri01 = uri(PathPrefix ++ [?CONF_NS, "password_based:built_in_database", "status"]), UsersUri01 = uri(PathPrefix ++ [?CONF_NS, "password_based:built_in_database", "status"]),
{ok, 200, PageData01} = request(get, UsersUri01), {ok, 200, PageData01} = request(get, UsersUri01),
case PathPrefix of case PathPrefix of
[] -> [] ->
#{ <<"metrics">> := #{ #{
<<"matched">> := 2, <<"metrics">> := #{
<<"success">> := 1, <<"matched">> := 2,
<<"ignore">> := 1 <<"success">> := 1,
} <<"ignore">> := 1
} = jiffy:decode(PageData01, [return_maps]); }
["listeners",'tcp:default'] -> } = jiffy:decode(PageData01, [return_maps]);
#{ <<"metrics">> := #{ ["listeners", 'tcp:default'] ->
<<"matched">> := 2, #{
<<"success">> := 1, <<"metrics">> := #{
<<"ignore">> := 1 <<"matched">> := 2,
} <<"success">> := 1,
} = jiffy:decode(PageData01, [return_maps]) <<"ignore">> := 1
}
} = jiffy:decode(PageData01, [return_maps])
end, end,
{ok, 200, Page1Data} = request(get, UsersUri ++ "?page=1&limit=2"), {ok, 200, Page1Data} = request(get, UsersUri ++ "?page=1&limit=2"),

View File

@ -104,13 +104,13 @@ child_spec(Name) ->
child_spec(ChldName, Name) -> child_spec(ChldName, Name) ->
#{ #{
id => ChldName, id => ChldName,
start => {emqx_plugin_libs_metrics, start_link, [Name]}, start => {emqx_plugin_libs_metrics, start_link, [Name]},
restart => permanent, restart => permanent,
shutdown => 5000, shutdown => 5000,
type => worker, type => worker,
modules => [emqx_plugin_libs_metrics] modules => [emqx_plugin_libs_metrics]
}. }.
-spec create_metrics(handler_name(), metric_id(), [atom()]) -> ok | {error, term()}. -spec create_metrics(handler_name(), metric_id(), [atom()]) -> ok | {error, term()}.
create_metrics(Name, Id, Metrics) -> create_metrics(Name, Id, Metrics) ->