refactor: better metric and error fold
This commit is contained in:
parent
dda73651c5
commit
87e4e2340d
|
@ -236,20 +236,11 @@ handle_metrics(Name) ->
|
||||||
Results = emqx_cluster_link_metrics:get_metrics(Name),
|
Results = emqx_cluster_link_metrics:get_metrics(Name),
|
||||||
{NodeMetrics0, NodeErrors} =
|
{NodeMetrics0, NodeErrors} =
|
||||||
lists:foldl(
|
lists:foldl(
|
||||||
fun
|
fun({Node, RouterMetrics0, ResourceMetrics0}, {OkAccIn, ErrAccIn}) ->
|
||||||
({Node, {ok, RouterMetrics}, {ok, ResourceMetrics}}, {OkAccIn, ErrAccIn}) ->
|
{RouterMetrics, RouterError} = get_metrics_or_errors(RouterMetrics0),
|
||||||
OkAcc = [format_metrics(Node, RouterMetrics, ResourceMetrics) | OkAccIn],
|
{ResourceMetrics, ResourceError} = get_metrics_or_errors(ResourceMetrics0),
|
||||||
{OkAcc, ErrAccIn};
|
ErrAcc = append_errors(RouterError, ResourceError, Node, ErrAccIn),
|
||||||
({Node, {ok, RouterMetrics}, ResError}, {OkAccIn, ErrAccIn}) ->
|
{[format_metrics(Node, RouterMetrics, ResourceMetrics) | OkAccIn], ErrAcc}
|
||||||
OkAcc = [format_metrics(Node, RouterMetrics, _ResourceMetrics = #{}) | OkAccIn],
|
|
||||||
{OkAcc, [{Node, #{resource => ResError}} | ErrAccIn]};
|
|
||||||
({Node, RouterError, {ok, ResourceMetrics}}, {OkAccIn, ErrAccIn}) ->
|
|
||||||
OkAcc = [format_metrics(Node, _RouterMetrics = #{}, ResourceMetrics) | OkAccIn],
|
|
||||||
{OkAcc, [{Node, #{router => RouterError}} | ErrAccIn]};
|
|
||||||
({Node, RouterError, ResourceError}, {OkAccIn, ErrAccIn}) ->
|
|
||||||
{OkAccIn, [
|
|
||||||
{Node, #{router => RouterError, resource => ResourceError}} | ErrAccIn
|
|
||||||
]}
|
|
||||||
end,
|
end,
|
||||||
{[], []},
|
{[], []},
|
||||||
Results
|
Results
|
||||||
|
@ -269,6 +260,18 @@ handle_metrics(Name) ->
|
||||||
Response = #{metrics => AggregatedMetrics, node_metrics => NodeMetrics},
|
Response = #{metrics => AggregatedMetrics, node_metrics => NodeMetrics},
|
||||||
?OK(Response).
|
?OK(Response).
|
||||||
|
|
||||||
|
get_metrics_or_errors({ok, Metrics}) ->
|
||||||
|
{Metrics, undefined};
|
||||||
|
get_metrics_or_errors(Error) ->
|
||||||
|
{#{}, Error}.
|
||||||
|
|
||||||
|
append_errors(undefined, undefined, _Node, Acc) ->
|
||||||
|
Acc;
|
||||||
|
append_errors(RouterError, ResourceError, Node, Acc) ->
|
||||||
|
Err0 = emqx_utils_maps:put_if(#{}, router, RouterError, RouterError =/= undefined),
|
||||||
|
Err = emqx_utils_maps:put_if(Err0, resource, ResourceError, ResourceError =/= undefined),
|
||||||
|
[{Node, Err} | Acc].
|
||||||
|
|
||||||
aggregate_metrics(NodeMetrics) ->
|
aggregate_metrics(NodeMetrics) ->
|
||||||
ErrorLogger = fun(_) -> ok end,
|
ErrorLogger = fun(_) -> ok end,
|
||||||
lists:foldl(
|
lists:foldl(
|
||||||
|
|
|
@ -695,12 +695,16 @@ t_metrics(Config) ->
|
||||||
#{?snk_kind := "cluster_link_extrouter_route_added"}
|
#{?snk_kind := "cluster_link_extrouter_route_added"}
|
||||||
),
|
),
|
||||||
|
|
||||||
|
?retry(
|
||||||
|
300,
|
||||||
|
10,
|
||||||
?assertMatch(
|
?assertMatch(
|
||||||
{200, #{
|
{200, #{
|
||||||
<<"metrics">> := #{<<"routes">> := 2},
|
<<"metrics">> := #{<<"routes">> := 2},
|
||||||
<<"node_metrics">> := _
|
<<"node_metrics">> := _
|
||||||
}},
|
}},
|
||||||
get_metrics(source, SourceName)
|
get_metrics(source, SourceName)
|
||||||
|
)
|
||||||
),
|
),
|
||||||
|
|
||||||
ok.
|
ok.
|
||||||
|
|
Loading…
Reference in New Issue