This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new d83144b Support all metrics from MAL engine in alarm core (#8547)
d83144b is described below
commit d83144bddd222db8b23a88a8c91c00337af1de71
Author: 吴晟 Wu Sheng <[email protected]>
AuthorDate: Wed Feb 16 08:55:45 2022 +0800
Support all metrics from MAL engine in alarm core (#8547)
* Support all metrics from MAL engine in alarm core
---
CHANGES.md | 1 +
.../oap/server/core/analysis/meter/Meter.java | 57 ++++++++++++++++++++++
.../server/core/analysis/meter/MeterSystem.java | 4 +-
.../analysis/meter/function/HistogramFunction.java | 3 +-
.../meter/function/PercentileFunction.java | 3 +-
.../analysis/meter/function/avg/AvgFunction.java | 3 +-
.../meter/function/avg/AvgHistogramFunction.java | 3 +-
.../avg/AvgHistogramPercentileFunction.java | 3 +-
.../meter/function/avg/AvgLabeledFunction.java | 3 +-
.../meter/function/latest/LatestFunction.java | 3 +-
.../analysis/meter/function/sum/SumFunction.java | 3 +-
.../oap/server/core/source/DefaultScopeDefine.java | 7 +++
12 files changed, 84 insertions(+), 9 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index 236694d..b4afded 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -58,6 +58,7 @@ Release Notes.
* Support datasource metric analysis.
* [Break Change] Keep the endpoint avg resp time meter name the same with
others scope. (This may break 3rd party integration and existing alarm rule
settings)
* Add Python FastApi component ID(7014).
+* Support all metrics from MAL engine in alarm core, including Prometheus, OC
receiver, meter receiver.
#### UI
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/Meter.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/Meter.java
new file mode 100644
index 0000000..7ce4491
--- /dev/null
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/Meter.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ *
+ */
+
+package org.apache.skywalking.oap.server.core.analysis.meter;
+
+import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics;
+import org.apache.skywalking.oap.server.core.analysis.metrics.MetricsMetaInfo;
+import org.apache.skywalking.oap.server.core.analysis.metrics.WithMetadata;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
+
+/**
+ * Meter is the abstract parent for all {@link
org.apache.skywalking.oap.server.core.analysis.meter.function.MeterFunction}
annotated functions.
+ * It provides the {@link WithMetadata} implementation for alarm kernal.
+ *
+ * @since 9.0.0
+ */
+public abstract class Meter extends Metrics implements WithMetadata {
+ private MetricsMetaInfo metadata = new MetricsMetaInfo("UNKNOWN",
DefaultScopeDefine.UNKNOWN);
+
+ /**
+ * @return entity ID to represent this metric object. Typically, meter
function should have a String type field, named entityId.
+ * See {@link
org.apache.skywalking.oap.server.core.analysis.meter.function.avg.AvgFunction#getEntityId()}
as an example.
+ */
+ public abstract String getEntityId();
+
+ /**
+ * This method is called in {@link MeterSystem#create} process through
dynamic Java codes.
+ *
+ * @param metricName metric name
+ * @param scopeId scope Id defined in {@link DefaultScopeDefine}
+ */
+ public void initMeta(String metricName, int scopeId) {
+ this.metadata.setMetricsName(metricName);
+ this.metadata.setScope(scopeId);
+ }
+
+ public MetricsMetaInfo getMeta() {
+ // Only read the id from the implementation when needed, to avoid
uninitialized cases.
+ this.metadata.setId(this.getEntityId());
+ return metadata;
+ }
+}
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/MeterSystem.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/MeterSystem.java
index 5ea1e70..3e03440 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/MeterSystem.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/MeterSystem.java
@@ -225,7 +225,9 @@ public class MeterSystem implements Service {
metricsClass.addMethod(CtNewMethod.make(
""
+ "public
org.apache.skywalking.oap.server.core.analysis.meter.function.AcceptableValue
createNew() {"
- + " return new " + METER_CLASS_PACKAGE + className +
"();"
+ + "
org.apache.skywalking.oap.server.core.analysis.meter.function.AcceptableValue
meterVar = new " + METER_CLASS_PACKAGE + className + "();"
+ + "
((org.apache.skywalking.oap.server.core.analysis.meter.Meter)meterVar).initMeta(\""
+ metricsName + "\", " + type.getScopeId() + ");"
+ + " return meterVar;"
+ " }"
, metricsClass));
} catch (CannotCompileException e) {
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/HistogramFunction.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/HistogramFunction.java
index e6ee54e..157e737 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/HistogramFunction.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/HistogramFunction.java
@@ -27,6 +27,7 @@ import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.UnexpectedException;
+import org.apache.skywalking.oap.server.core.analysis.meter.Meter;
import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity;
import org.apache.skywalking.oap.server.core.analysis.metrics.DataTable;
import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics;
@@ -42,7 +43,7 @@ import
org.apache.skywalking.oap.server.core.storage.annotation.Column;
@MeterFunction(functionName = "histogram")
@Slf4j
@ToString
-public abstract class HistogramFunction extends Metrics implements
AcceptableValue<BucketedValues> {
+public abstract class HistogramFunction extends Meter implements
AcceptableValue<BucketedValues> {
public static final String DATASET = "dataset";
@Setter
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/PercentileFunction.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/PercentileFunction.java
index 2b67047..562c342 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/PercentileFunction.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/PercentileFunction.java
@@ -30,6 +30,7 @@ import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.UnexpectedException;
+import org.apache.skywalking.oap.server.core.analysis.meter.Meter;
import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity;
import org.apache.skywalking.oap.server.core.analysis.metrics.DataTable;
import org.apache.skywalking.oap.server.core.analysis.metrics.IntList;
@@ -47,7 +48,7 @@ import
org.apache.skywalking.oap.server.core.storage.annotation.Column;
*/
@MeterFunction(functionName = "percentile")
@Slf4j
-public abstract class PercentileFunction extends Metrics implements
AcceptableValue<PercentileFunction.PercentileArgument>, MultiIntValuesHolder {
+public abstract class PercentileFunction extends Meter implements
AcceptableValue<PercentileFunction.PercentileArgument>, MultiIntValuesHolder {
public static final String DATASET = "dataset";
public static final String RANKS = "ranks";
public static final String VALUE = "value";
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgFunction.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgFunction.java
index 85f128d..f613646 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgFunction.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgFunction.java
@@ -27,6 +27,7 @@ import lombok.ToString;
import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.UnexpectedException;
import
org.apache.skywalking.oap.server.core.analysis.manual.instance.InstanceTraffic;
+import org.apache.skywalking.oap.server.core.analysis.meter.Meter;
import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity;
import
org.apache.skywalking.oap.server.core.analysis.meter.function.AcceptableValue;
import
org.apache.skywalking.oap.server.core.analysis.meter.function.MeterFunction;
@@ -42,7 +43,7 @@ import
org.apache.skywalking.oap.server.core.storage.annotation.Column;
@MeterFunction(functionName = "avg")
@ToString
-public abstract class AvgFunction extends Metrics implements
AcceptableValue<Long>, LongValueHolder {
+public abstract class AvgFunction extends Meter implements
AcceptableValue<Long>, LongValueHolder {
protected static final String SUMMATION = "summation";
protected static final String COUNT = "count";
protected static final String VALUE = "value";
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramFunction.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramFunction.java
index f2bfc39..3110a12 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramFunction.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramFunction.java
@@ -27,6 +27,7 @@ import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.UnexpectedException;
+import org.apache.skywalking.oap.server.core.analysis.meter.Meter;
import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity;
import
org.apache.skywalking.oap.server.core.analysis.meter.function.AcceptableValue;
import
org.apache.skywalking.oap.server.core.analysis.meter.function.BucketedValues;
@@ -52,7 +53,7 @@ import
org.apache.skywalking.oap.server.core.storage.annotation.Column;
@MeterFunction(functionName = "avgHistogram")
@Slf4j
@ToString
-public abstract class AvgHistogramFunction extends Metrics implements
AcceptableValue<BucketedValues> {
+public abstract class AvgHistogramFunction extends Meter implements
AcceptableValue<BucketedValues> {
public static final String DATASET = "dataset";
protected static final String SUMMATION = "summation";
protected static final String COUNT = "count";
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramPercentileFunction.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramPercentileFunction.java
index 1dd353f..69e4cfb 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramPercentileFunction.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramPercentileFunction.java
@@ -34,6 +34,7 @@ import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.UnexpectedException;
+import org.apache.skywalking.oap.server.core.analysis.meter.Meter;
import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity;
import
org.apache.skywalking.oap.server.core.analysis.meter.function.AcceptableValue;
import
org.apache.skywalking.oap.server.core.analysis.meter.function.MeterFunction;
@@ -63,7 +64,7 @@ import static java.util.stream.Collectors.mapping;
*/
@MeterFunction(functionName = "avgHistogramPercentile")
@Slf4j
-public abstract class AvgHistogramPercentileFunction extends Metrics
implements AcceptableValue<PercentileArgument>, MultiIntValuesHolder {
+public abstract class AvgHistogramPercentileFunction extends Meter implements
AcceptableValue<PercentileArgument>, MultiIntValuesHolder {
private static final String DEFAULT_GROUP = "pD";
public static final String DATASET = "dataset";
public static final String RANKS = "ranks";
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgLabeledFunction.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgLabeledFunction.java
index 5e11958..76990f5 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgLabeledFunction.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgLabeledFunction.java
@@ -28,6 +28,7 @@ import lombok.ToString;
import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.UnexpectedException;
import
org.apache.skywalking.oap.server.core.analysis.manual.instance.InstanceTraffic;
+import org.apache.skywalking.oap.server.core.analysis.meter.Meter;
import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity;
import
org.apache.skywalking.oap.server.core.analysis.meter.function.AcceptableValue;
import
org.apache.skywalking.oap.server.core.analysis.meter.function.MeterFunction;
@@ -40,7 +41,7 @@ import
org.apache.skywalking.oap.server.core.storage.annotation.Column;
@MeterFunction(functionName = "avgLabeled")
@ToString
-public abstract class AvgLabeledFunction extends Metrics implements
AcceptableValue<DataTable>, LabeledValueHolder {
+public abstract class AvgLabeledFunction extends Meter implements
AcceptableValue<DataTable>, LabeledValueHolder {
protected static final String SUMMATION = "summation";
protected static final String COUNT = "count";
protected static final String VALUE = "value";
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest/LatestFunction.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest/LatestFunction.java
index 29a14a6..07741a9 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest/LatestFunction.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest/LatestFunction.java
@@ -27,6 +27,7 @@ import lombok.ToString;
import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.UnexpectedException;
import
org.apache.skywalking.oap.server.core.analysis.manual.instance.InstanceTraffic;
+import org.apache.skywalking.oap.server.core.analysis.meter.Meter;
import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity;
import
org.apache.skywalking.oap.server.core.analysis.meter.function.AcceptableValue;
import
org.apache.skywalking.oap.server.core.analysis.meter.function.MeterFunction;
@@ -41,7 +42,7 @@ import
org.apache.skywalking.oap.server.core.storage.annotation.Column;
@MeterFunction(functionName = "latest")
@ToString
-public abstract class LatestFunction extends Metrics implements
AcceptableValue<Long>, LongValueHolder {
+public abstract class LatestFunction extends Meter implements
AcceptableValue<Long>, LongValueHolder {
protected static final String VALUE = "value";
@Setter
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sum/SumFunction.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sum/SumFunction.java
index 7436696..bb208d5 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sum/SumFunction.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sum/SumFunction.java
@@ -27,6 +27,7 @@ import lombok.ToString;
import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.UnexpectedException;
import
org.apache.skywalking.oap.server.core.analysis.manual.instance.InstanceTraffic;
+import org.apache.skywalking.oap.server.core.analysis.meter.Meter;
import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity;
import
org.apache.skywalking.oap.server.core.analysis.meter.function.AcceptableValue;
import
org.apache.skywalking.oap.server.core.analysis.meter.function.MeterFunction;
@@ -41,7 +42,7 @@ import
org.apache.skywalking.oap.server.core.storage.annotation.Column;
@ToString
@MeterFunction(functionName = "sum")
-public abstract class SumFunction extends Metrics implements
AcceptableValue<Long>, LongValueHolder {
+public abstract class SumFunction extends Meter implements
AcceptableValue<Long>, LongValueHolder {
protected static final String VALUE = "value";
@Setter
diff --git
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
index 78d70ae..443bbd9 100644
---
a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
+++
b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
@@ -38,6 +38,11 @@ public class DefaultScopeDefine {
* <p>
* If you want to extend the scope, recommend to start with 10,000.
*/
+
+ /**
+ * @since 9.0.0
+ */
+ public static final int UNKNOWN = 0;
public static final int ALL = 0;
public static final int SERVICE = 1;
public static final int SERVICE_INSTANCE = 2;
@@ -58,7 +63,9 @@ public class DefaultScopeDefine {
public static final int SERVICE_INSTANCE_CLR_THREAD = 21;
public static final int ENVOY_INSTANCE_METRIC = 22;
public static final int ZIPKIN_SPAN = 23;
+ @Deprecated
public static final int JAEGER_SPAN = 24;
+ @Deprecated
public static final int HTTP_ACCESS_LOG = 25;
public static final int PROFILE_TASK = 26;
public static final int PROFILE_TASK_LOG = 27;