fix: dashboard monitor bpapi

This commit is contained in:
DDDHuang 2022-02-25 14:19:40 +08:00
parent 00b83121a4
commit 103df6f06b
5 changed files with 19 additions and 15 deletions

View File

@ -42,9 +42,11 @@
-ifdef(TEST). -ifdef(TEST).
%% for test %% for test
-define(DEFAULT_SAMPLE_INTERVAL, 1). -define(DEFAULT_SAMPLE_INTERVAL, 1).
-define(RPC_TIMEOUT, 50).
-else. -else.
%% dashboard monitor do sample interval, default 10s %% dashboard monitor do sample interval, default 10s
-define(DEFAULT_SAMPLE_INTERVAL, 10). -define(DEFAULT_SAMPLE_INTERVAL, 10).
-define(RPC_TIMEOUT, 5000).
-endif. -endif.
-define(DELTA_SAMPLER_LIST, -define(DELTA_SAMPLER_LIST,

View File

@ -51,12 +51,6 @@
%% 7 days = 7 * 24 * 60 * 60 * 1000 milliseconds %% 7 days = 7 * 24 * 60 * 60 * 1000 milliseconds
-define(RETENTION_TIME, 7 * 24 * 60 * 60 * 1000). -define(RETENTION_TIME, 7 * 24 * 60 * 60 * 1000).
-ifdef(TEST).
-define(RPC_TIMEOUT, 50).
-else.
-define(RPC_TIMEOUT, 5000).
-endif.
-record(state, { -record(state, {
last last
}). }).
@ -140,7 +134,7 @@ current_rate(all) ->
current_rate(Node) when Node == node() -> current_rate(Node) when Node == node() ->
do_call(current_rate); do_call(current_rate);
current_rate(Node) -> current_rate(Node) ->
case rpc:call(Node, ?MODULE, ?FUNCTION_NAME, [Node], ?RPC_TIMEOUT) of case emqx_dashboard_proto_v1:current_rate(Node) of
{badrpc, Reason} -> {badrpc, Reason} ->
{badrpc, {Node, Reason}}; {badrpc, {Node, Reason}};
{ok, Rate} -> {ok, Rate} ->
@ -201,7 +195,7 @@ do_sample(Node, Time) when Node == node() ->
MS = match_spec(Time), MS = match_spec(Time),
internal_format(ets:select(?TAB, MS)); internal_format(ets:select(?TAB, MS));
do_sample(Node, Time) -> do_sample(Node, Time) ->
case rpc:call(Node, ?MODULE, ?FUNCTION_NAME, [Node, Time], ?RPC_TIMEOUT) of case emqx_dashboard_proto_v1:do_sample(Node, Time) of
{badrpc, Reason} -> {badrpc, Reason} ->
{badrpc, {Node, Reason}}; {badrpc, {Node, Reason}};
Res -> Res ->

View File

@ -78,7 +78,8 @@ schema("/monitor_current/nodes/:node") ->
description => <<"Node current status. Gauge and rate.">>, description => <<"Node current status. Gauge and rate.">>,
parameters => [parameter_node()], parameters => [parameter_node()],
responses => #{ responses => #{
200 => hoconsc:mk(hoconsc:ref(sampler_current), #{}) 200 => hoconsc:mk(hoconsc:ref(sampler_current), #{}),
400 => emqx_dashboard_swagger:error_codes(['BAD_RPC'], <<"Bad RPC">>)
} }
} }
}. }.
@ -86,7 +87,7 @@ schema("/monitor_current/nodes/:node") ->
parameter_latest() -> parameter_latest() ->
Info = #{ Info = #{
in => query, in => query,
nullable => true, required => false,
example => 5 * 60, example => 5 * 60,
description => <<"The latest N seconds data. Like 300 for 5 min.">> description => <<"The latest N seconds data. Like 300 for 5 min.">>
}, },
@ -95,7 +96,7 @@ parameter_latest() ->
parameter_node() -> parameter_node() ->
Info = #{ Info = #{
in => path, in => path,
nullable => false, required => true,
example => node(), example => node(),
description => <<"EMQX node name.">> description => <<"EMQX node name.">>
}, },

View File

@ -19,7 +19,8 @@
-behaviour(emqx_bpapi). -behaviour(emqx_bpapi).
-export([ introduced_in/0 -export([ introduced_in/0
, samplers/2 , do_sample/2
, current_rate/1
]). ]).
-include("emqx_dashboard.hrl"). -include("emqx_dashboard.hrl").
@ -28,6 +29,10 @@
introduced_in() -> introduced_in() ->
"5.0.0". "5.0.0".
-spec samplers(node(), Latest:: pos_integer() | infinity) -> list(map()) | emqx_rpc:badrpc(). -spec do_sample(node(), Latest:: pos_integer() | infinity) -> list(map()) | emqx_rpc:badrpc().
samplers(Node, Latest) -> do_sample(Node, Latest) ->
rpc:call(Node, emqx_dashboard_monitor, samplers, [Node, Latest]). rpc:call(Node, emqx_dashboard_monitor, do_sample, [Node, Latest], ?RPC_TIMEOUT).
-spec current_rate(node()) -> {ok, map()} | emqx_rpc:badrpc().
current_rate(Node) ->
rpc:call(Node, emqx_dashboard_monitor, current_rate, [Node], ?RPC_TIMEOUT).

View File

@ -131,8 +131,10 @@ do_request_api(Method, Request)->
{error, socket_closed_remotely}; {error, socket_closed_remotely};
{ok, {{"HTTP/1.1", Code, _}, _, Return} } {ok, {{"HTTP/1.1", Code, _}, _, Return} }
when Code >= 200 andalso Code =< 299 -> when Code >= 200 andalso Code =< 299 ->
ct:pal("Resp ~p ~p~n", [Code, Return]),
{ok, emqx_json:decode(Return, [return_maps])}; {ok, emqx_json:decode(Return, [return_maps])};
{ok, {{"HTTP/1.1", Code, _}, _, Return} } -> {ok, {{"HTTP/1.1", Code, _}, _, Return} } ->
ct:pal("Resp ~p ~p~n", [Code, Return]),
{error, {Code, emqx_json:decode(Return, [return_maps])}}; {error, {Code, emqx_json:decode(Return, [return_maps])}};
{error, Reason} -> {error, Reason} ->
{error, Reason} {error, Reason}