diff --git a/apps/emqx_plugin_libs/src/emqx_plugin_libs_metrics.erl b/apps/emqx_plugin_libs/src/emqx_plugin_libs_metrics.erl index 811a5131c..eef945a81 100644 --- a/apps/emqx_plugin_libs/src/emqx_plugin_libs_metrics.erl +++ b/apps/emqx_plugin_libs/src/emqx_plugin_libs_metrics.erl @@ -55,7 +55,7 @@ -define(SAMPLING, 1). -endif. --export_type([metrics/0]). +-export_type([metrics/0, handler_name/0, metric_id/0]). -type rate() :: #{ current => float(), diff --git a/apps/emqx_plugin_libs/src/proto/emqx_plugin_libs_proto_v1.erl b/apps/emqx_plugin_libs/src/proto/emqx_plugin_libs_proto_v1.erl new file mode 100644 index 000000000..9a7e8e6a5 --- /dev/null +++ b/apps/emqx_plugin_libs/src/proto/emqx_plugin_libs_proto_v1.erl @@ -0,0 +1,36 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2022 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_plugin_libs_proto_v1). + +-behaviour(emqx_bpapi). + +-export([ introduced_in/0 + + , get_metrics/3 + ]). + +-include_lib("emqx/include/bpapi.hrl"). + +introduced_in() -> + "5.0.0". + +-spec get_metrics( node() + , emqx_plugin_libs_metrics:handler_name() + , emqx_plugin_libs_metrics:metric_id() + ) -> emqx_plugin_libs_metrics:metrics() | {badrpc, _}. +get_metrics(Node, HandlerName, MetricId) -> + rpc:call(Node, emqx_plugin_libs_metrics, get_metrics, [HandlerName, MetricId]). diff --git a/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl b/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl index 6f1da4e88..58975c310 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_engine_api.erl @@ -322,7 +322,7 @@ get_rule_metrics(Id) -> , node => Node } end, - [Format(Node, rpc:call(Node, emqx_plugin_libs_metrics, get_metrics, [rule_metrics, Id])) + [Format(Node, emqx_plugin_libs_proto_v1:get_metrics(Node, rule_metrics, Id)) || Node <- mria_mnesia:running_nodes()]. aggregate_metrics(AllMetrics) -> @@ -350,4 +350,3 @@ filter_out_request_body(Conf) -> ExtraConfs = [<<"id">>, <<"status">>, <<"node_status">>, <<"node_metrics">>, <<"metrics">>, <<"node">>], maps:without(ExtraConfs, Conf). -