fix metric

This commit is contained in:
anlicheng 2025-11-14 16:09:52 +08:00
parent 280a90b019
commit 0f8ef428b5

View File

@ -193,8 +193,13 @@ handle_request(#{<<"method">> := <<"stream_chunk">>,
%% %%
handle_request(#{<<"method">> := <<"metric_data">>, handle_request(#{<<"method">> := <<"metric_data">>,
<<"params">> := #{<<"route_key">> := RouteKey, <<"metric">> := Metric}}, State = #state{service_pid = ServicePid, is_registered = true}) -> <<"params">> := #{<<"route_key">> := RouteKey, <<"metric">> := Metric0}}, State = #state{service_pid = ServicePid, is_registered = true}) ->
efka_service:metric_data(ServicePid, RouteKey, Metric), case map_metric(Metric0) of
{ok, Metric} ->
efka_service:metric_data(ServicePid, RouteKey, Metric);
error ->
lager:debug("[ws_channel] metric_data get invalid metric: ~p", Metric0)
end,
{ok, State}. {ok, State}.
-spec json_result(Id :: integer(), Result :: term()) -> binary(). -spec json_result(Id :: integer(), Result :: term()) -> binary().
@ -236,3 +241,15 @@ search_stream_id(StreamPid, StreamMap) when is_pid(StreamPid), is_map(StreamMap)
[StreamId|_] -> [StreamId|_] ->
{ok, StreamId} {ok, StreamId}
end. end.
-spec map_metric(Metric :: any()) -> {ok, binary()} | error.
map_metric(Metric) when is_binary(Metric) ->
Metric;
map_metric(Metric) when is_map(Metric) orelse is_list(Metric) ->
jiffy:encode(Metric, [force_utf8]);
map_metric(Metric) when is_integer(Metric) ->
integer_to_binary(Metric);
map_metric(Metric) when is_float(Metric) ->
erlang:float_to_binary(Metric, [compact, {decimals, 10}]);
map_metric(_) ->
error.