diff --git a/oap-server/metrics-baseline/src/main/java/org/apache/skywalking/oap/server/baseline/service/BaselineQueryService.java b/oap-server/metrics-baseline/src/main/java/org/apache/skywalking/oap/server/baseline/service/BaselineQueryService.java index dd8b41d08310..3bf981891877 100644 --- a/oap-server/metrics-baseline/src/main/java/org/apache/skywalking/oap/server/baseline/service/BaselineQueryService.java +++ b/oap-server/metrics-baseline/src/main/java/org/apache/skywalking/oap/server/baseline/service/BaselineQueryService.java @@ -23,6 +23,12 @@ import java.util.List; public interface BaselineQueryService extends Service { + /** + * query supported query baseline metrics names + * @return + */ + List querySupportedMetrics(); + /** * query predict metrics */ diff --git a/oap-server/metrics-baseline/src/main/java/org/apache/skywalking/oap/server/baseline/service/BaselineQueryServiceImpl.java b/oap-server/metrics-baseline/src/main/java/org/apache/skywalking/oap/server/baseline/service/BaselineQueryServiceImpl.java index edc18cae1441..8f66738a49c1 100644 --- a/oap-server/metrics-baseline/src/main/java/org/apache/skywalking/oap/server/baseline/service/BaselineQueryServiceImpl.java +++ b/oap-server/metrics-baseline/src/main/java/org/apache/skywalking/oap/server/baseline/service/BaselineQueryServiceImpl.java @@ -18,9 +18,11 @@ package org.apache.skywalking.oap.server.baseline.service; +import com.google.protobuf.Empty; import io.grpc.ManagedChannel; import lombok.extern.slf4j.Slf4j; import org.apache.skywalking.apm.baseline.v3.AlarmBaselineMetricPrediction; +import org.apache.skywalking.apm.baseline.v3.AlarmBaselineMetricsNames; import org.apache.skywalking.apm.baseline.v3.AlarmBaselineRequest; import org.apache.skywalking.apm.baseline.v3.AlarmBaselineResponse; import org.apache.skywalking.apm.baseline.v3.AlarmBaselineServiceGrpc; @@ -30,8 +32,10 @@ import org.apache.skywalking.oap.server.library.client.grpc.GRPCClient; import org.apache.skywalking.oap.server.library.util.StringUtil; +import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; @Slf4j @@ -48,6 +52,18 @@ public BaselineQueryServiceImpl(String addr, int port) { stub = AlarmBaselineServiceGrpc.newBlockingStub(channel); } + @Override + public List querySupportedMetrics() { + if (stub == null) { + return Collections.emptyList(); + } + + final AlarmBaselineMetricsNames names = stub.querySupportedMetricsNames(Empty.newBuilder().build()); + return Optional.ofNullable(names) + .map(AlarmBaselineMetricsNames::getMetricNamesList) + .map(ArrayList::new).orElse(new ArrayList<>(0)); + } + public List queryPredictMetrics(List serviceMetrics, long startTimeBucket, long endTimeBucket) { if (stub == null) { return Collections.emptyList(); diff --git a/oap-server/metrics-baseline/src/test/java/org/apache/skywalking/oap/server/baseline/BaselineQueryServer.java b/oap-server/metrics-baseline/src/test/java/org/apache/skywalking/oap/server/baseline/BaselineQueryServer.java index b6b7991ce609..b2eafd85974a 100644 --- a/oap-server/metrics-baseline/src/test/java/org/apache/skywalking/oap/server/baseline/BaselineQueryServer.java +++ b/oap-server/metrics-baseline/src/test/java/org/apache/skywalking/oap/server/baseline/BaselineQueryServer.java @@ -18,9 +18,11 @@ package org.apache.skywalking.oap.server.baseline; +import com.google.protobuf.Empty; import io.grpc.stub.StreamObserver; import lombok.Builder; import lombok.Data; +import org.apache.skywalking.apm.baseline.v3.AlarmBaselineMetricsNames; import org.apache.skywalking.oap.server.core.analysis.DownSampling; import org.apache.skywalking.oap.server.core.analysis.TimeBucket; import org.apache.skywalking.apm.baseline.v3.AlarmBaselineServiceGrpc; @@ -87,6 +89,14 @@ public class BaselineQueryServer extends AlarmBaselineServiceGrpc.AlarmBaselineS .build()); } + @Override + public void querySupportedMetricsNames(Empty request, StreamObserver responseObserver) { + responseObserver.onNext(AlarmBaselineMetricsNames.newBuilder() + .addAllMetricNames(VALUE_GENERATOR.keySet()) + .build()); + responseObserver.onCompleted(); + } + @Override public void queryPredictedMetrics(org.apache.skywalking.apm.baseline.v3.AlarmBaselineRequest request, StreamObserver responseObserver) { final List metrics = new ArrayList<>(); diff --git a/oap-server/metrics-baseline/src/test/java/org/apache/skywalking/oap/server/baseline/BaselineServerTest.java b/oap-server/metrics-baseline/src/test/java/org/apache/skywalking/oap/server/baseline/BaselineServerTest.java index ccb544180b17..254ef3e4ec0c 100644 --- a/oap-server/metrics-baseline/src/test/java/org/apache/skywalking/oap/server/baseline/BaselineServerTest.java +++ b/oap-server/metrics-baseline/src/test/java/org/apache/skywalking/oap/server/baseline/BaselineServerTest.java @@ -98,4 +98,10 @@ public void queryServices() throws Exception { assertNotNull(metrics); } + @Test + public void queryMetricsNames() { + final List metrics = queryService.querySupportedMetrics(); + assertNotNull(metrics); + } + }