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;

Reply via email to