Merge pull request #12403 from JimMoen/fix-prom-stats-json-format
fix(prom_stats): compatibility with previous api format in json mode
This commit is contained in:
commit
3516a01ab9
|
@ -991,12 +991,13 @@ catch_all(DataFun) ->
|
||||||
collect_stats_json_data(StatsData, StatsClData) ->
|
collect_stats_json_data(StatsData, StatsClData) ->
|
||||||
StatsDatas = collect_json_data_(StatsData),
|
StatsDatas = collect_json_data_(StatsData),
|
||||||
CLData = hd(collect_json_data_(StatsClData)),
|
CLData = hd(collect_json_data_(StatsClData)),
|
||||||
lists:map(
|
Res = lists:map(
|
||||||
fun(NodeData) ->
|
fun(NodeData) ->
|
||||||
maps:merge(NodeData, CLData)
|
maps:merge(NodeData, CLData)
|
||||||
end,
|
end,
|
||||||
StatsDatas
|
StatsDatas
|
||||||
).
|
),
|
||||||
|
json_obj_or_array(Res).
|
||||||
|
|
||||||
%% always return json array
|
%% always return json array
|
||||||
collect_cert_json_data(Data) ->
|
collect_cert_json_data(Data) ->
|
||||||
|
@ -1004,32 +1005,34 @@ collect_cert_json_data(Data) ->
|
||||||
|
|
||||||
collect_vm_json_data(Data) ->
|
collect_vm_json_data(Data) ->
|
||||||
DataListPerNode = collect_json_data_(Data),
|
DataListPerNode = collect_json_data_(Data),
|
||||||
case {?GET_PROM_DATA_MODE(), DataListPerNode} of
|
case ?GET_PROM_DATA_MODE() of
|
||||||
{?PROM_DATA_MODE__NODE, [NData | _]} ->
|
?PROM_DATA_MODE__NODE ->
|
||||||
NData;
|
hd(DataListPerNode);
|
||||||
{_, _} ->
|
_ ->
|
||||||
DataListPerNode
|
DataListPerNode
|
||||||
end.
|
end.
|
||||||
|
|
||||||
collect_json_data(Data0) ->
|
collect_json_data(Data0) ->
|
||||||
DataListPerNode = collect_json_data_(Data0),
|
DataListPerNode = collect_json_data_(Data0),
|
||||||
case {?GET_PROM_DATA_MODE(), DataListPerNode} of
|
json_obj_or_array(DataListPerNode).
|
||||||
%% all nodes results unaggregated, should be a list
|
|
||||||
{?PROM_DATA_MODE__ALL_NODES_UNAGGREGATED, _} ->
|
%% compatibility with previous api format in json mode
|
||||||
DataListPerNode;
|
json_obj_or_array(DataL) ->
|
||||||
%% only local node result [#{...}]
|
case ?GET_PROM_DATA_MODE() of
|
||||||
%% To guaranteed compatibility, return a json object, not array
|
?PROM_DATA_MODE__NODE ->
|
||||||
{?PROM_DATA_MODE__NODE, [NData | _]} ->
|
data_list_to_json_obj(DataL);
|
||||||
NData;
|
?PROM_DATA_MODE__ALL_NODES_UNAGGREGATED ->
|
||||||
%% All nodes results aggregated
|
DataL;
|
||||||
%% return a json object, not array
|
?PROM_DATA_MODE__ALL_NODES_AGGREGATED ->
|
||||||
{?PROM_DATA_MODE__ALL_NODES_AGGREGATED, [NData | _]} ->
|
data_list_to_json_obj(DataL)
|
||||||
NData;
|
|
||||||
%% olp maybe not enabled, with empty list to empty object
|
|
||||||
{_, []} ->
|
|
||||||
#{}
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
data_list_to_json_obj([]) ->
|
||||||
|
%% olp maybe not enabled, with empty list to empty object
|
||||||
|
#{};
|
||||||
|
data_list_to_json_obj(DataL) ->
|
||||||
|
hd(DataL).
|
||||||
|
|
||||||
collect_json_data_(Data) ->
|
collect_json_data_(Data) ->
|
||||||
emqx_prometheus_cluster:collect_json_data(Data, fun zip_json_prom_stats_metrics/3).
|
emqx_prometheus_cluster:collect_json_data(Data, fun zip_json_prom_stats_metrics/3).
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue