diff --git a/oap-server/server-core/pom.xml b/oap-server/server-core/pom.xml
index ca6ac7abe10392ea6e168c077ea3851faa116fce..5ffad8da75aeb56604a9793319558ea3da39c501 100644
--- a/oap-server/server-core/pom.xml
+++ b/oap-server/server-core/pom.xml
@@ -51,11 +51,6 @@
library-server
${project.version}
-
- org.apache.skywalking
- apm-network
- ${project.version}
-
org.apache.skywalking
apm-datacarrier
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/DispatcherManager.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/DispatcherManager.java
index 3579ad8bf3e6e54fd8f18f88aa9bd806b6097138..b8953c60452da9baccdb65613f15c39d7954b8be 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/DispatcherManager.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/DispatcherManager.java
@@ -20,6 +20,10 @@ package org.apache.skywalking.oap.server.core.analysis;
import java.util.*;
import org.apache.skywalking.oap.server.core.analysis.generated.endpoint.EndpointDispatcher;
+import org.apache.skywalking.oap.server.core.analysis.generated.serviceinstancejvmcpu.ServiceInstanceJVMCPUDispatcher;
+import org.apache.skywalking.oap.server.core.analysis.generated.serviceinstancejvmgc.ServiceInstanceJVMGCDispatcher;
+import org.apache.skywalking.oap.server.core.analysis.generated.serviceinstancejvmmemory.ServiceInstanceJVMMemoryDispatcher;
+import org.apache.skywalking.oap.server.core.analysis.generated.serviceinstancejvmmemorypool.ServiceInstanceJVMMemoryPoolDispatcher;
import org.apache.skywalking.oap.server.core.source.Scope;
import org.slf4j.*;
@@ -35,6 +39,11 @@ public class DispatcherManager {
public DispatcherManager() {
this.dispatcherMap = new HashMap<>();
this.dispatcherMap.put(Scope.Endpoint, new EndpointDispatcher());
+
+ this.dispatcherMap.put(Scope.ServiceInstanceJVMCPU, new ServiceInstanceJVMCPUDispatcher());
+ this.dispatcherMap.put(Scope.ServiceInstanceJVMGC, new ServiceInstanceJVMGCDispatcher());
+ this.dispatcherMap.put(Scope.ServiceInstanceJVMMemory, new ServiceInstanceJVMMemoryDispatcher());
+ this.dispatcherMap.put(Scope.ServiceInstanceJVMMemoryPool, new ServiceInstanceJVMMemoryPoolDispatcher());
}
public SourceDispatcher getDispatcher(Scope scope) {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointAvgIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointAvgIndicator.java
index 6763c08e2718734a81f36a58bd94616624a1312f..bc283456487004792825d316ecc88dc94b512cae 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointAvgIndicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointAvgIndicator.java
@@ -20,12 +20,13 @@ package org.apache.skywalking.oap.server.core.analysis.generated.endpoint;
import java.util.*;
import lombok.*;
-import org.apache.skywalking.oap.server.core.analysis.indicator.*;
+import org.apache.skywalking.oap.server.core.Const;
+import org.apache.skywalking.oap.server.core.analysis.indicator.LongAvgIndicator;
import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorType;
import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
-import org.apache.skywalking.oap.server.core.storage.annotation.*;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
+import org.apache.skywalking.oap.server.core.storage.annotation.*;
/**
* This class is auto generated. Please don't change this class manually.
@@ -35,14 +36,16 @@ import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
@IndicatorType
@StreamData
@StorageEntity(name = "endpoint_avg", builder = EndpointAvgIndicator.Builder.class)
-public class EndpointAvgIndicator extends AvgIndicator {
+public class EndpointAvgIndicator extends LongAvgIndicator {
@Setter @Getter @Column(columnName = "id") private int id;
@Setter @Getter @Column(columnName = "service_id") private int serviceId;
@Setter @Getter @Column(columnName = "service_instance_id") private int serviceInstanceId;
@Override public String id() {
- return String.valueOf(id);
+ String splitJointId = String.valueOf(getTimeBucket());
+ splitJointId += Const.ID_SPLIT + String.valueOf(id);
+ return splitJointId;
}
@Override public int hashCode() {
@@ -52,7 +55,6 @@ public class EndpointAvgIndicator extends AvgIndicator {
return result;
}
-
@Override public boolean equals(Object obj) {
if (this == obj)
return true;
@@ -70,7 +72,6 @@ public class EndpointAvgIndicator extends AvgIndicator {
return true;
}
-
@Override public RemoteData.Builder serialize() {
RemoteData.Builder remoteBuilder = RemoteData.newBuilder();
@@ -116,13 +117,13 @@ public class EndpointAvgIndicator extends AvgIndicator {
@Override public EndpointAvgIndicator map2Data(Map dbMap) {
EndpointAvgIndicator indicator = new EndpointAvgIndicator();
- indicator.setId((int)dbMap.get("id"));
- indicator.setServiceId((int)dbMap.get("service_id"));
- indicator.setServiceInstanceId((int)dbMap.get("service_instance_id"));
- indicator.setSummation((long)dbMap.get("summation"));
- indicator.setCount((int)dbMap.get("count"));
- indicator.setValue((long)dbMap.get("value"));
- indicator.setTimeBucket((long)dbMap.get("time_bucket"));
+ indicator.setId(((Number)dbMap.get("id")).intValue());
+ indicator.setServiceId(((Number)dbMap.get("service_id")).intValue());
+ indicator.setServiceInstanceId(((Number)dbMap.get("service_instance_id")).intValue());
+ indicator.setSummation(((Number)dbMap.get("summation")).longValue());
+ indicator.setCount(((Number)dbMap.get("count")).intValue());
+ indicator.setValue(((Number)dbMap.get("value")).longValue());
+ indicator.setTimeBucket(((Number)dbMap.get("time_bucket")).longValue());
return indicator;
}
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointDispatcher.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointDispatcher.java
index 4f54a6b5e458501bc21df6182fbb1966bd40faa1..73436254f4a1286e43db047711089046f6c53e39 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointDispatcher.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointDispatcher.java
@@ -29,7 +29,6 @@ import org.apache.skywalking.oap.server.core.source.Endpoint;
*/
public class EndpointDispatcher implements SourceDispatcher {
-
@Override public void dispatch(Endpoint source) {
doEndpointAvg(source);
doEndpointPercent(source);
@@ -45,6 +44,7 @@ public class EndpointDispatcher implements SourceDispatcher {
indicator.combine(source.getLatency(), 1);
IndicatorProcess.INSTANCE.in(indicator);
}
+
private void doEndpointPercent(Endpoint source) {
EndpointPercentIndicator indicator = new EndpointPercentIndicator();
@@ -55,4 +55,5 @@ public class EndpointDispatcher implements SourceDispatcher {
indicator.combine(new org.apache.skywalking.oap.server.core.analysis.indicator.expression.BooleanBinaryMatch(), source.isStatus(), true);
IndicatorProcess.INSTANCE.in(indicator);
}
+
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointPercentIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointPercentIndicator.java
index 72a092acf45fcd80ed129b02715f3113e7a15909..e581434ab2b5dd04836ae12c5d64d359fb02e6ea 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointPercentIndicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/endpoint/EndpointPercentIndicator.java
@@ -20,12 +20,13 @@ package org.apache.skywalking.oap.server.core.analysis.generated.endpoint;
import java.util.*;
import lombok.*;
-import org.apache.skywalking.oap.server.core.analysis.indicator.*;
+import org.apache.skywalking.oap.server.core.Const;
+import org.apache.skywalking.oap.server.core.analysis.indicator.PercentIndicator;
import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorType;
import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
-import org.apache.skywalking.oap.server.core.storage.annotation.*;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
+import org.apache.skywalking.oap.server.core.storage.annotation.*;
/**
* This class is auto generated. Please don't change this class manually.
@@ -42,7 +43,9 @@ public class EndpointPercentIndicator extends PercentIndicator {
@Setter @Getter @Column(columnName = "service_instance_id") private int serviceInstanceId;
@Override public String id() {
- return String.valueOf(id);
+ String splitJointId = String.valueOf(getTimeBucket());
+ splitJointId += Const.ID_SPLIT + String.valueOf(id);
+ return splitJointId;
}
@Override public int hashCode() {
@@ -52,7 +55,6 @@ public class EndpointPercentIndicator extends PercentIndicator {
return result;
}
-
@Override public boolean equals(Object obj) {
if (this == obj)
return true;
@@ -70,7 +72,6 @@ public class EndpointPercentIndicator extends PercentIndicator {
return true;
}
-
@Override public RemoteData.Builder serialize() {
RemoteData.Builder remoteBuilder = RemoteData.newBuilder();
@@ -116,13 +117,13 @@ public class EndpointPercentIndicator extends PercentIndicator {
@Override public EndpointPercentIndicator map2Data(Map dbMap) {
EndpointPercentIndicator indicator = new EndpointPercentIndicator();
- indicator.setId((int)dbMap.get("id"));
- indicator.setServiceId((int)dbMap.get("service_id"));
- indicator.setServiceInstanceId((int)dbMap.get("service_instance_id"));
- indicator.setTotal((long)dbMap.get("total"));
- indicator.setPercentage((int)dbMap.get("percentage"));
- indicator.setMatch((long)dbMap.get("match"));
- indicator.setTimeBucket((long)dbMap.get("time_bucket"));
+ indicator.setId(((Number)dbMap.get("id")).intValue());
+ indicator.setServiceId(((Number)dbMap.get("service_id")).intValue());
+ indicator.setServiceInstanceId(((Number)dbMap.get("service_instance_id")).intValue());
+ indicator.setTotal(((Number)dbMap.get("total")).longValue());
+ indicator.setPercentage(((Number)dbMap.get("percentage")).intValue());
+ indicator.setMatch(((Number)dbMap.get("match")).longValue());
+ indicator.setTimeBucket(((Number)dbMap.get("time_bucket")).longValue());
return indicator;
}
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmcpu/InstanceJvmCpuIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmcpu/InstanceJvmCpuIndicator.java
new file mode 100644
index 0000000000000000000000000000000000000000..cc193650f391f7bfb25eff79fc1fdfb870441e35
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmcpu/InstanceJvmCpuIndicator.java
@@ -0,0 +1,125 @@
+/*
+ * 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.generated.serviceinstancejvmcpu;
+
+import java.util.*;
+import lombok.*;
+import org.apache.skywalking.oap.server.core.Const;
+import org.apache.skywalking.oap.server.core.analysis.indicator.DoubleAvgIndicator;
+import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorType;
+import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
+import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
+import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
+import org.apache.skywalking.oap.server.core.storage.annotation.*;
+
+/**
+ * This class is auto generated. Please don't change this class manually.
+ *
+ * @author Observability Analysis Language code generator
+ */
+@IndicatorType
+@StreamData
+@StorageEntity(name = "instance_jvm_cpu", builder = InstanceJvmCpuIndicator.Builder.class)
+public class InstanceJvmCpuIndicator extends DoubleAvgIndicator {
+
+ @Setter @Getter @Column(columnName = "id") private int id;
+ @Setter @Getter @Column(columnName = "service_instance_id") private int serviceInstanceId;
+
+ @Override public String id() {
+ String splitJointId = String.valueOf(getTimeBucket());
+ splitJointId += Const.ID_SPLIT + String.valueOf(id);
+ return splitJointId;
+ }
+
+ @Override public int hashCode() {
+ int result = 17;
+ result = 31 * result + id;
+ result = 31 * result + (int)getTimeBucket();
+ return result;
+ }
+
+ @Override public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+
+ InstanceJvmCpuIndicator indicator = (InstanceJvmCpuIndicator)obj;
+ if (id != indicator.id)
+ return false;
+ if (getTimeBucket() != indicator.getTimeBucket())
+ return false;
+
+ return true;
+ }
+
+ @Override public RemoteData.Builder serialize() {
+ RemoteData.Builder remoteBuilder = RemoteData.newBuilder();
+
+ remoteBuilder.setDataLongs(0, getTimeBucket());
+
+ remoteBuilder.setDataDoubles(0, getSummation());
+ remoteBuilder.setDataDoubles(1, getValue());
+
+ remoteBuilder.setDataIntegers(0, getId());
+ remoteBuilder.setDataIntegers(1, getServiceInstanceId());
+ remoteBuilder.setDataIntegers(2, getCount());
+
+ return remoteBuilder;
+ }
+
+ @Override public void deserialize(RemoteData remoteData) {
+
+ setTimeBucket(remoteData.getDataLongs(0));
+
+ setSummation(remoteData.getDataDoubles(0));
+ setValue(remoteData.getDataDoubles(1));
+
+ setId(remoteData.getDataIntegers(0));
+ setServiceInstanceId(remoteData.getDataIntegers(1));
+ setCount(remoteData.getDataIntegers(2));
+ }
+
+ public static class Builder implements StorageBuilder {
+
+ @Override public Map data2Map(InstanceJvmCpuIndicator storageData) {
+ Map map = new HashMap<>();
+ map.put("id", storageData.getId());
+ map.put("service_instance_id", storageData.getServiceInstanceId());
+ map.put("summation", storageData.getSummation());
+ map.put("count", storageData.getCount());
+ map.put("value", storageData.getValue());
+ map.put("time_bucket", storageData.getTimeBucket());
+ return map;
+ }
+
+ @Override public InstanceJvmCpuIndicator map2Data(Map dbMap) {
+ InstanceJvmCpuIndicator indicator = new InstanceJvmCpuIndicator();
+ indicator.setId(((Number)dbMap.get("id")).intValue());
+ indicator.setServiceInstanceId(((Number)dbMap.get("service_instance_id")).intValue());
+ indicator.setSummation(((Number)dbMap.get("summation")).doubleValue());
+ indicator.setCount(((Number)dbMap.get("count")).intValue());
+ indicator.setValue(((Number)dbMap.get("value")).doubleValue());
+ indicator.setTimeBucket(((Number)dbMap.get("time_bucket")).longValue());
+ return indicator;
+ }
+ }
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmcpu/ServiceInstanceJVMCPUDispatcher.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmcpu/ServiceInstanceJVMCPUDispatcher.java
new file mode 100644
index 0000000000000000000000000000000000000000..48df5b4190836c07f16a831cd0f0765767d8f308
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmcpu/ServiceInstanceJVMCPUDispatcher.java
@@ -0,0 +1,45 @@
+/*
+ * 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.generated.serviceinstancejvmcpu;
+
+import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
+import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
+import org.apache.skywalking.oap.server.core.source.ServiceInstanceJVMCPU;
+
+/**
+ * This class is auto generated. Please don't change this class manually.
+ *
+ * @author Observability Analysis Language code generator
+ */
+public class ServiceInstanceJVMCPUDispatcher implements SourceDispatcher {
+
+ @Override public void dispatch(ServiceInstanceJVMCPU source) {
+ doInstanceJvmCpu(source);
+ }
+
+ private void doInstanceJvmCpu(ServiceInstanceJVMCPU source) {
+ InstanceJvmCpuIndicator indicator = new InstanceJvmCpuIndicator();
+
+ indicator.setTimeBucket(source.getTimeBucket());
+ indicator.setId(source.getId());
+ indicator.setServiceInstanceId(source.getServiceInstanceId());
+ indicator.combine(source.getUsePercent(), 1);
+ IndicatorProcess.INSTANCE.in(indicator);
+ }
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmgc/InstanceJvmGcTimeIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmgc/InstanceJvmGcTimeIndicator.java
new file mode 100644
index 0000000000000000000000000000000000000000..d2c7147aca8d6b54b1a855e1a321c25824056960
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmgc/InstanceJvmGcTimeIndicator.java
@@ -0,0 +1,125 @@
+/*
+ * 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.generated.serviceinstancejvmgc;
+
+import java.util.*;
+import lombok.*;
+import org.apache.skywalking.oap.server.core.Const;
+import org.apache.skywalking.oap.server.core.analysis.indicator.LongAvgIndicator;
+import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorType;
+import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
+import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
+import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
+import org.apache.skywalking.oap.server.core.storage.annotation.*;
+
+/**
+ * This class is auto generated. Please don't change this class manually.
+ *
+ * @author Observability Analysis Language code generator
+ */
+@IndicatorType
+@StreamData
+@StorageEntity(name = "instance_jvm_gc_time", builder = InstanceJvmGcTimeIndicator.Builder.class)
+public class InstanceJvmGcTimeIndicator extends LongAvgIndicator {
+
+ @Setter @Getter @Column(columnName = "id") private int id;
+ @Setter @Getter @Column(columnName = "service_instance_id") private int serviceInstanceId;
+
+ @Override public String id() {
+ String splitJointId = String.valueOf(getTimeBucket());
+ splitJointId += Const.ID_SPLIT + String.valueOf(id);
+ return splitJointId;
+ }
+
+ @Override public int hashCode() {
+ int result = 17;
+ result = 31 * result + id;
+ result = 31 * result + (int)getTimeBucket();
+ return result;
+ }
+
+ @Override public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+
+ InstanceJvmGcTimeIndicator indicator = (InstanceJvmGcTimeIndicator)obj;
+ if (id != indicator.id)
+ return false;
+ if (getTimeBucket() != indicator.getTimeBucket())
+ return false;
+
+ return true;
+ }
+
+ @Override public RemoteData.Builder serialize() {
+ RemoteData.Builder remoteBuilder = RemoteData.newBuilder();
+
+ remoteBuilder.setDataLongs(0, getSummation());
+ remoteBuilder.setDataLongs(1, getValue());
+ remoteBuilder.setDataLongs(2, getTimeBucket());
+
+
+ remoteBuilder.setDataIntegers(0, getId());
+ remoteBuilder.setDataIntegers(1, getServiceInstanceId());
+ remoteBuilder.setDataIntegers(2, getCount());
+
+ return remoteBuilder;
+ }
+
+ @Override public void deserialize(RemoteData remoteData) {
+
+ setSummation(remoteData.getDataLongs(0));
+ setValue(remoteData.getDataLongs(1));
+ setTimeBucket(remoteData.getDataLongs(2));
+
+
+ setId(remoteData.getDataIntegers(0));
+ setServiceInstanceId(remoteData.getDataIntegers(1));
+ setCount(remoteData.getDataIntegers(2));
+ }
+
+ public static class Builder implements StorageBuilder {
+
+ @Override public Map data2Map(InstanceJvmGcTimeIndicator storageData) {
+ Map map = new HashMap<>();
+ map.put("id", storageData.getId());
+ map.put("service_instance_id", storageData.getServiceInstanceId());
+ map.put("summation", storageData.getSummation());
+ map.put("count", storageData.getCount());
+ map.put("value", storageData.getValue());
+ map.put("time_bucket", storageData.getTimeBucket());
+ return map;
+ }
+
+ @Override public InstanceJvmGcTimeIndicator map2Data(Map dbMap) {
+ InstanceJvmGcTimeIndicator indicator = new InstanceJvmGcTimeIndicator();
+ indicator.setId(((Number)dbMap.get("id")).intValue());
+ indicator.setServiceInstanceId(((Number)dbMap.get("service_instance_id")).intValue());
+ indicator.setSummation(((Number)dbMap.get("summation")).longValue());
+ indicator.setCount(((Number)dbMap.get("count")).intValue());
+ indicator.setValue(((Number)dbMap.get("value")).longValue());
+ indicator.setTimeBucket(((Number)dbMap.get("time_bucket")).longValue());
+ return indicator;
+ }
+ }
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmgc/ServiceInstanceJVMGCDispatcher.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmgc/ServiceInstanceJVMGCDispatcher.java
new file mode 100644
index 0000000000000000000000000000000000000000..c634b96b21ca39f38c8c00cfc6f56fea7c69f15d
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmgc/ServiceInstanceJVMGCDispatcher.java
@@ -0,0 +1,45 @@
+/*
+ * 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.generated.serviceinstancejvmgc;
+
+import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
+import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
+import org.apache.skywalking.oap.server.core.source.ServiceInstanceJVMGC;
+
+/**
+ * This class is auto generated. Please don't change this class manually.
+ *
+ * @author Observability Analysis Language code generator
+ */
+public class ServiceInstanceJVMGCDispatcher implements SourceDispatcher {
+
+ @Override public void dispatch(ServiceInstanceJVMGC source) {
+ doInstanceJvmGcTime(source);
+ }
+
+ private void doInstanceJvmGcTime(ServiceInstanceJVMGC source) {
+ InstanceJvmGcTimeIndicator indicator = new InstanceJvmGcTimeIndicator();
+
+ indicator.setTimeBucket(source.getTimeBucket());
+ indicator.setId(source.getId());
+ indicator.setServiceInstanceId(source.getServiceInstanceId());
+ indicator.combine(source.getTime(), 1);
+ IndicatorProcess.INSTANCE.in(indicator);
+ }
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmmemory/InstanceJvmMemoryMaxIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmmemory/InstanceJvmMemoryMaxIndicator.java
new file mode 100644
index 0000000000000000000000000000000000000000..c3e53cf29cce357e8b2ff25a1ca37e9eb73af8ed
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmmemory/InstanceJvmMemoryMaxIndicator.java
@@ -0,0 +1,125 @@
+/*
+ * 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.generated.serviceinstancejvmmemory;
+
+import java.util.*;
+import lombok.*;
+import org.apache.skywalking.oap.server.core.Const;
+import org.apache.skywalking.oap.server.core.analysis.indicator.LongAvgIndicator;
+import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorType;
+import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
+import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
+import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
+import org.apache.skywalking.oap.server.core.storage.annotation.*;
+
+/**
+ * This class is auto generated. Please don't change this class manually.
+ *
+ * @author Observability Analysis Language code generator
+ */
+@IndicatorType
+@StreamData
+@StorageEntity(name = "instance_jvm_memory_max", builder = InstanceJvmMemoryMaxIndicator.Builder.class)
+public class InstanceJvmMemoryMaxIndicator extends LongAvgIndicator {
+
+ @Setter @Getter @Column(columnName = "id") private int id;
+ @Setter @Getter @Column(columnName = "service_instance_id") private int serviceInstanceId;
+
+ @Override public String id() {
+ String splitJointId = String.valueOf(getTimeBucket());
+ splitJointId += Const.ID_SPLIT + String.valueOf(id);
+ return splitJointId;
+ }
+
+ @Override public int hashCode() {
+ int result = 17;
+ result = 31 * result + id;
+ result = 31 * result + (int)getTimeBucket();
+ return result;
+ }
+
+ @Override public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+
+ InstanceJvmMemoryMaxIndicator indicator = (InstanceJvmMemoryMaxIndicator)obj;
+ if (id != indicator.id)
+ return false;
+ if (getTimeBucket() != indicator.getTimeBucket())
+ return false;
+
+ return true;
+ }
+
+ @Override public RemoteData.Builder serialize() {
+ RemoteData.Builder remoteBuilder = RemoteData.newBuilder();
+
+ remoteBuilder.setDataLongs(0, getSummation());
+ remoteBuilder.setDataLongs(1, getValue());
+ remoteBuilder.setDataLongs(2, getTimeBucket());
+
+
+ remoteBuilder.setDataIntegers(0, getId());
+ remoteBuilder.setDataIntegers(1, getServiceInstanceId());
+ remoteBuilder.setDataIntegers(2, getCount());
+
+ return remoteBuilder;
+ }
+
+ @Override public void deserialize(RemoteData remoteData) {
+
+ setSummation(remoteData.getDataLongs(0));
+ setValue(remoteData.getDataLongs(1));
+ setTimeBucket(remoteData.getDataLongs(2));
+
+
+ setId(remoteData.getDataIntegers(0));
+ setServiceInstanceId(remoteData.getDataIntegers(1));
+ setCount(remoteData.getDataIntegers(2));
+ }
+
+ public static class Builder implements StorageBuilder {
+
+ @Override public Map data2Map(InstanceJvmMemoryMaxIndicator storageData) {
+ Map map = new HashMap<>();
+ map.put("id", storageData.getId());
+ map.put("service_instance_id", storageData.getServiceInstanceId());
+ map.put("summation", storageData.getSummation());
+ map.put("count", storageData.getCount());
+ map.put("value", storageData.getValue());
+ map.put("time_bucket", storageData.getTimeBucket());
+ return map;
+ }
+
+ @Override public InstanceJvmMemoryMaxIndicator map2Data(Map dbMap) {
+ InstanceJvmMemoryMaxIndicator indicator = new InstanceJvmMemoryMaxIndicator();
+ indicator.setId(((Number)dbMap.get("id")).intValue());
+ indicator.setServiceInstanceId(((Number)dbMap.get("service_instance_id")).intValue());
+ indicator.setSummation(((Number)dbMap.get("summation")).longValue());
+ indicator.setCount(((Number)dbMap.get("count")).intValue());
+ indicator.setValue(((Number)dbMap.get("value")).longValue());
+ indicator.setTimeBucket(((Number)dbMap.get("time_bucket")).longValue());
+ return indicator;
+ }
+ }
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmmemory/ServiceInstanceJVMMemoryDispatcher.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmmemory/ServiceInstanceJVMMemoryDispatcher.java
new file mode 100644
index 0000000000000000000000000000000000000000..ddcc5e86607a508c63354260be631ea13fb97278
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmmemory/ServiceInstanceJVMMemoryDispatcher.java
@@ -0,0 +1,45 @@
+/*
+ * 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.generated.serviceinstancejvmmemory;
+
+import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
+import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
+import org.apache.skywalking.oap.server.core.source.ServiceInstanceJVMMemory;
+
+/**
+ * This class is auto generated. Please don't change this class manually.
+ *
+ * @author Observability Analysis Language code generator
+ */
+public class ServiceInstanceJVMMemoryDispatcher implements SourceDispatcher {
+
+ @Override public void dispatch(ServiceInstanceJVMMemory source) {
+ doInstanceJvmMemoryMax(source);
+ }
+
+ private void doInstanceJvmMemoryMax(ServiceInstanceJVMMemory source) {
+ InstanceJvmMemoryMaxIndicator indicator = new InstanceJvmMemoryMaxIndicator();
+
+ indicator.setTimeBucket(source.getTimeBucket());
+ indicator.setId(source.getId());
+ indicator.setServiceInstanceId(source.getServiceInstanceId());
+ indicator.combine(source.getMax(), 1);
+ IndicatorProcess.INSTANCE.in(indicator);
+ }
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmmemorypool/InstanceJvmMemoryPoolMaxIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmmemorypool/InstanceJvmMemoryPoolMaxIndicator.java
new file mode 100644
index 0000000000000000000000000000000000000000..42f1a75ffb91026d46752601db52cd4b79781d4c
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmmemorypool/InstanceJvmMemoryPoolMaxIndicator.java
@@ -0,0 +1,125 @@
+/*
+ * 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.generated.serviceinstancejvmmemorypool;
+
+import java.util.*;
+import lombok.*;
+import org.apache.skywalking.oap.server.core.Const;
+import org.apache.skywalking.oap.server.core.analysis.indicator.LongAvgIndicator;
+import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorType;
+import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
+import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
+import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
+import org.apache.skywalking.oap.server.core.storage.annotation.*;
+
+/**
+ * This class is auto generated. Please don't change this class manually.
+ *
+ * @author Observability Analysis Language code generator
+ */
+@IndicatorType
+@StreamData
+@StorageEntity(name = "instance_jvm_memory_pool_max", builder = InstanceJvmMemoryPoolMaxIndicator.Builder.class)
+public class InstanceJvmMemoryPoolMaxIndicator extends LongAvgIndicator {
+
+ @Setter @Getter @Column(columnName = "id") private int id;
+ @Setter @Getter @Column(columnName = "service_instance_id") private int serviceInstanceId;
+
+ @Override public String id() {
+ String splitJointId = String.valueOf(getTimeBucket());
+ splitJointId += Const.ID_SPLIT + String.valueOf(id);
+ return splitJointId;
+ }
+
+ @Override public int hashCode() {
+ int result = 17;
+ result = 31 * result + id;
+ result = 31 * result + (int)getTimeBucket();
+ return result;
+ }
+
+ @Override public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+
+ InstanceJvmMemoryPoolMaxIndicator indicator = (InstanceJvmMemoryPoolMaxIndicator)obj;
+ if (id != indicator.id)
+ return false;
+ if (getTimeBucket() != indicator.getTimeBucket())
+ return false;
+
+ return true;
+ }
+
+ @Override public RemoteData.Builder serialize() {
+ RemoteData.Builder remoteBuilder = RemoteData.newBuilder();
+
+ remoteBuilder.setDataLongs(0, getSummation());
+ remoteBuilder.setDataLongs(1, getValue());
+ remoteBuilder.setDataLongs(2, getTimeBucket());
+
+
+ remoteBuilder.setDataIntegers(0, getId());
+ remoteBuilder.setDataIntegers(1, getServiceInstanceId());
+ remoteBuilder.setDataIntegers(2, getCount());
+
+ return remoteBuilder;
+ }
+
+ @Override public void deserialize(RemoteData remoteData) {
+
+ setSummation(remoteData.getDataLongs(0));
+ setValue(remoteData.getDataLongs(1));
+ setTimeBucket(remoteData.getDataLongs(2));
+
+
+ setId(remoteData.getDataIntegers(0));
+ setServiceInstanceId(remoteData.getDataIntegers(1));
+ setCount(remoteData.getDataIntegers(2));
+ }
+
+ public static class Builder implements StorageBuilder {
+
+ @Override public Map data2Map(InstanceJvmMemoryPoolMaxIndicator storageData) {
+ Map map = new HashMap<>();
+ map.put("id", storageData.getId());
+ map.put("service_instance_id", storageData.getServiceInstanceId());
+ map.put("summation", storageData.getSummation());
+ map.put("count", storageData.getCount());
+ map.put("value", storageData.getValue());
+ map.put("time_bucket", storageData.getTimeBucket());
+ return map;
+ }
+
+ @Override public InstanceJvmMemoryPoolMaxIndicator map2Data(Map dbMap) {
+ InstanceJvmMemoryPoolMaxIndicator indicator = new InstanceJvmMemoryPoolMaxIndicator();
+ indicator.setId(((Number)dbMap.get("id")).intValue());
+ indicator.setServiceInstanceId(((Number)dbMap.get("service_instance_id")).intValue());
+ indicator.setSummation(((Number)dbMap.get("summation")).longValue());
+ indicator.setCount(((Number)dbMap.get("count")).intValue());
+ indicator.setValue(((Number)dbMap.get("value")).longValue());
+ indicator.setTimeBucket(((Number)dbMap.get("time_bucket")).longValue());
+ return indicator;
+ }
+ }
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmmemorypool/ServiceInstanceJVMMemoryPoolDispatcher.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmmemorypool/ServiceInstanceJVMMemoryPoolDispatcher.java
new file mode 100644
index 0000000000000000000000000000000000000000..ad9d1e69f929b9216fa26b63e64c758745e043ba
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/serviceinstancejvmmemorypool/ServiceInstanceJVMMemoryPoolDispatcher.java
@@ -0,0 +1,45 @@
+/*
+ * 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.generated.serviceinstancejvmmemorypool;
+
+import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
+import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
+import org.apache.skywalking.oap.server.core.source.ServiceInstanceJVMMemoryPool;
+
+/**
+ * This class is auto generated. Please don't change this class manually.
+ *
+ * @author Observability Analysis Language code generator
+ */
+public class ServiceInstanceJVMMemoryPoolDispatcher implements SourceDispatcher {
+
+ @Override public void dispatch(ServiceInstanceJVMMemoryPool source) {
+ doInstanceJvmMemoryPoolMax(source);
+ }
+
+ private void doInstanceJvmMemoryPoolMax(ServiceInstanceJVMMemoryPool source) {
+ InstanceJvmMemoryPoolMaxIndicator indicator = new InstanceJvmMemoryPoolMaxIndicator();
+
+ indicator.setTimeBucket(source.getTimeBucket());
+ indicator.setId(source.getId());
+ indicator.setServiceInstanceId(source.getServiceInstanceId());
+ indicator.combine(source.getMax(), 1);
+ IndicatorProcess.INSTANCE.in(indicator);
+ }
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/DoubleAvgIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/DoubleAvgIndicator.java
new file mode 100644
index 0000000000000000000000000000000000000000..895fa871a7d2d7476c6b44013b773b2a63cf82e6
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/DoubleAvgIndicator.java
@@ -0,0 +1,53 @@
+/*
+ * 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.indicator;
+
+import lombok.*;
+import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.*;
+import org.apache.skywalking.oap.server.core.storage.annotation.Column;
+
+/**
+ * @author peng-yongsheng
+ */
+@IndicatorOperator
+public abstract class DoubleAvgIndicator extends Indicator {
+
+ protected static final String SUMMATION = "summation";
+ protected static final String COUNT = "count";
+ protected static final String VALUE = "value";
+
+ @Getter @Setter @Column(columnName = SUMMATION) private double summation;
+ @Getter @Setter @Column(columnName = COUNT) private int count;
+ @Getter @Setter @Column(columnName = VALUE) private double value;
+
+ @Entrance
+ public final void combine(@SourceFrom double summation, @ConstOne int count) {
+ this.summation += summation;
+ this.count += count;
+ }
+
+ @Override public final void combine(Indicator indicator) {
+ DoubleAvgIndicator avgIndicator = (DoubleAvgIndicator)indicator;
+ combine(avgIndicator.summation, avgIndicator.count);
+ }
+
+ @Override public final void calculate() {
+ this.value = this.summation / this.count;
+ }
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/Indicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/Indicator.java
index fe29ed6ee0cca7996618d31abccf1a1442eb6416..933ac592dbf8e92ba4edaca59ce96341b372119a 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/Indicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/Indicator.java
@@ -35,4 +35,6 @@ public abstract class Indicator extends StreamData implements StorageData {
public abstract String id();
public abstract void combine(Indicator indicator);
+
+ public abstract void calculate();
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/AvgIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/LongAvgIndicator.java
similarity index 88%
rename from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/AvgIndicator.java
rename to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/LongAvgIndicator.java
index 41f24c85a7554ccae8623eef814e54fd9a72d78f..1649af3ac41bc79a2baa600c82dacbe9d7a96d96 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/AvgIndicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/LongAvgIndicator.java
@@ -26,7 +26,7 @@ import org.apache.skywalking.oap.server.core.storage.annotation.Column;
* @author peng-yongsheng
*/
@IndicatorOperator
-public abstract class AvgIndicator extends Indicator {
+public abstract class LongAvgIndicator extends Indicator {
protected static final String SUMMATION = "summation";
protected static final String COUNT = "count";
@@ -43,7 +43,11 @@ public abstract class AvgIndicator extends Indicator {
}
@Override public final void combine(Indicator indicator) {
- AvgIndicator avgIndicator = (AvgIndicator)indicator;
+ LongAvgIndicator avgIndicator = (LongAvgIndicator)indicator;
combine(avgIndicator.summation, avgIndicator.count);
}
+
+ @Override public final void calculate() {
+ this.value = this.summation / this.count;
+ }
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/PercentIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/PercentIndicator.java
index ab590e817990be54e97d0f0c6b597a85af16fc5a..b5b4551bdae77567ccb4b3777ddcaaf49ddbdeb8 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/PercentIndicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/PercentIndicator.java
@@ -18,13 +18,8 @@
package org.apache.skywalking.oap.server.core.analysis.indicator;
-import lombok.Getter;
-import lombok.Setter;
-import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.Entrance;
-import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.Expression;
-import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.ExpressionArg0;
-import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.ExpressionArg1;
-import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorOperator;
+import lombok.*;
+import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.*;
import org.apache.skywalking.oap.server.core.analysis.indicator.expression.BooleanBinaryMatch;
import org.apache.skywalking.oap.server.core.storage.annotation.Column;
@@ -56,4 +51,8 @@ public abstract class PercentIndicator extends Indicator {
total += ((PercentIndicator)indicator).total;
match += ((PercentIndicator)indicator).match;
}
+
+ @Override public void calculate() {
+ percentage = (int)(match / total);
+ }
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DetectPoint.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DetectPoint.java
new file mode 100644
index 0000000000000000000000000000000000000000..bdc60eaf308868ffa8120d316fd676d03510c8a1
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DetectPoint.java
@@ -0,0 +1,26 @@
+/*
+ * 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.source;
+
+/**
+ * @author peng-yongsheng
+ */
+public enum DetectPoint {
+ CLIENT, SERVER, PROXY
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Endpoint.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Endpoint.java
index e1f68fea937b99fee45a4aaca0256d680a997ed4..c4063b9044df225ca04d450293e2ae20c8b78bb5 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Endpoint.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Endpoint.java
@@ -19,7 +19,6 @@
package org.apache.skywalking.oap.server.core.source;
import lombok.*;
-import org.apache.skywalking.apm.network.language.agent.SpanLayer;
import org.apache.skywalking.oap.server.core.source.annotation.SourceType;
/**
@@ -40,5 +39,5 @@ public class Endpoint extends Source {
@Getter @Setter private int latency;
@Getter @Setter private boolean status;
@Getter @Setter private int responseCode;
- @Getter @Setter private SpanLayer type;
+ @Getter @Setter private RequestType type;
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/EndpointRelation.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/EndpointRelation.java
index 896cf7c3203c9ac5c54c87a680786eaec8be64fc..8c0ed3bd6d0161de754791e15cfab1537601b21d 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/EndpointRelation.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/EndpointRelation.java
@@ -19,7 +19,6 @@
package org.apache.skywalking.oap.server.core.source;
import lombok.*;
-import org.apache.skywalking.apm.network.language.agent.*;
/**
* @author peng-yongsheng
@@ -37,7 +36,7 @@ public class EndpointRelation extends Source {
@Getter @Setter private int rpcLatency;
@Getter @Setter private boolean status;
@Getter @Setter private int responseCode;
- @Getter @Setter private SpanLayer type;
- @Getter @Setter private SpanType detectPoint;
+ @Getter @Setter private RequestType type;
+ @Getter @Setter private DetectPoint detectPoint;
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/GCPhrase.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/GCPhrase.java
new file mode 100644
index 0000000000000000000000000000000000000000..1c06ee3f864d0ae1d8856bf5538a6c7e3cfc0c99
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/GCPhrase.java
@@ -0,0 +1,26 @@
+/*
+ * 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.source;
+
+/**
+ * @author peng-yongsheng
+ */
+public enum GCPhrase {
+ NEW, OLD
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/MemoryPoolType.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/MemoryPoolType.java
new file mode 100644
index 0000000000000000000000000000000000000000..7811715c8d88babfc05faf8a2bc9fed28322c801
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/MemoryPoolType.java
@@ -0,0 +1,26 @@
+/*
+ * 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.source;
+
+/**
+ * @author peng-yongsheng
+ */
+public enum MemoryPoolType {
+ CODE_CACHE_USAGE, NEWGEN_USAGE, OLDGEN_USAGE, SURVIVOR_USAGE, PERMGEN_USAGE, METASPACE_USAGE
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/RequestType.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/RequestType.java
new file mode 100644
index 0000000000000000000000000000000000000000..dfe2c7a3dc0f5374feb9fd2e35d5653a37d60fb4
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/RequestType.java
@@ -0,0 +1,26 @@
+/*
+ * 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.source;
+
+/**
+ * @author peng-yongsheng
+ */
+public enum RequestType {
+ DATABASE, HTTP, RPC, gRPC
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Scope.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Scope.java
index e6c5e811994afac51a3052951f52f5241618dacf..43c1ef30e860d016e5c11f42eb9eb17d2914955c 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Scope.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Scope.java
@@ -22,5 +22,6 @@ package org.apache.skywalking.oap.server.core.source;
* @author peng-yongsheng
*/
public enum Scope {
- All, Service, ServiceInstance, Endpoint, ServiceRelation, ServiceInstanceRelation, EndpointRelation, NetworkAddress
+ All, Service, ServiceInstance, Endpoint, ServiceRelation, ServiceInstanceRelation, EndpointRelation, NetworkAddress,
+ ServiceInstanceJVMCPU, ServiceInstanceJVMMemory, ServiceInstanceJVMMemoryPool, ServiceInstanceJVMGC
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java
index 15f28e3b808f7d8e995b350fc8c64f7781149a50..c1a5719b85f5626ff16fcaa58ff4181ed1cff083 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java
@@ -18,14 +18,24 @@
package org.apache.skywalking.oap.server.core.source;
+import lombok.*;
import org.apache.skywalking.oap.server.core.source.annotation.SourceType;
/**
- * @author wusheng
+ * @author wusheng, peng-yongsheng
*/
@SourceType
public class Service extends Source {
@Override public Scope scope() {
return Scope.Service;
}
+
+ @Getter @Setter private int id;
+ @Getter @Setter private String name;
+ @Getter @Setter private String serviceInstanceName;
+ @Getter @Setter private String endpointName;
+ @Getter @Setter private int latency;
+ @Getter @Setter private boolean status;
+ @Getter @Setter private int responseCode;
+ @Getter @Setter private RequestType type;
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMCPU.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMCPU.java
new file mode 100644
index 0000000000000000000000000000000000000000..6d3397cf7255405a02d7a134386e485a2e6c130c
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMCPU.java
@@ -0,0 +1,38 @@
+/*
+ * 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.source;
+
+import lombok.*;
+import org.apache.skywalking.oap.server.core.source.annotation.SourceType;
+
+/**
+ * @author peng-yongsheng
+ */
+@SourceType
+public class ServiceInstanceJVMCPU extends Source {
+ @Override public Scope scope() {
+ return Scope.ServiceInstanceJVMCPU;
+ }
+
+ @Getter @Setter private int id;
+ @Getter @Setter private String name;
+ @Getter @Setter private String serviceName;
+ @Getter @Setter private int serviceInstanceId;
+ @Getter @Setter private double usePercent;
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMGC.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMGC.java
new file mode 100644
index 0000000000000000000000000000000000000000..4c52e528dcdff89773fc33d4f1d1aa287b534850
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMGC.java
@@ -0,0 +1,40 @@
+/*
+ * 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.source;
+
+import lombok.*;
+import org.apache.skywalking.oap.server.core.source.annotation.SourceType;
+
+/**
+ * @author peng-yongsheng
+ */
+@SourceType
+public class ServiceInstanceJVMGC extends Source {
+ @Override public Scope scope() {
+ return Scope.ServiceInstanceJVMGC;
+ }
+
+ @Getter @Setter private int id;
+ @Getter @Setter private String name;
+ @Getter @Setter private String serviceName;
+ @Getter @Setter private int serviceInstanceId;
+ @Getter @Setter private GCPhrase phrase;
+ @Getter @Setter private long time;
+ @Getter @Setter private long count;
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemory.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemory.java
new file mode 100644
index 0000000000000000000000000000000000000000..b66c9b3e24d80b9dbfa880620204e68dbfe3500c
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemory.java
@@ -0,0 +1,40 @@
+/*
+ * 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.source;
+
+import lombok.*;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ServiceInstanceJVMMemory extends Source {
+ @Override public Scope scope() {
+ return Scope.ServiceInstanceJVMMemory;
+ }
+
+ @Getter @Setter private int id;
+ @Getter @Setter private String name;
+ @Getter @Setter private String serviceName;
+ @Getter @Setter private int serviceInstanceId;
+ @Getter @Setter private boolean isHeap;
+ @Getter @Setter private long init;
+ @Getter @Setter private long max;
+ @Getter @Setter private long used;
+ @Getter @Setter private long committed;
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemoryPool.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemoryPool.java
new file mode 100644
index 0000000000000000000000000000000000000000..ea5a09cb1f9169fc23eed46143018662e361c698
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemoryPool.java
@@ -0,0 +1,40 @@
+/*
+ * 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.source;
+
+import lombok.*;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ServiceInstanceJVMMemoryPool extends Source {
+ @Override public Scope scope() {
+ return Scope.ServiceInstanceJVMMemoryPool;
+ }
+
+ @Getter @Setter private int id;
+ @Getter @Setter private String name;
+ @Getter @Setter private String serviceName;
+ @Getter @Setter private int serviceInstanceId;
+ @Getter @Setter private MemoryPoolType poolType;
+ @Getter @Setter private long init;
+ @Getter @Setter private long max;
+ @Getter @Setter private long used;
+ @Getter @Setter private long committed;
+}
diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/indicator/define/TestAvgIndicator.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/indicator/define/TestLongAvgIndicator.java
similarity index 94%
rename from oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/indicator/define/TestAvgIndicator.java
rename to oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/indicator/define/TestLongAvgIndicator.java
index 757215de2acb0b7c5ad32630f81a4dbbafbbf8b3..737badfa5cd59782cd6875cc242900d56d10db55 100644
--- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/indicator/define/TestAvgIndicator.java
+++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/indicator/define/TestLongAvgIndicator.java
@@ -19,13 +19,13 @@
package org.apache.skywalking.oap.server.core.analysis.indicator.define;
import lombok.*;
-import org.apache.skywalking.oap.server.core.analysis.indicator.AvgIndicator;
+import org.apache.skywalking.oap.server.core.analysis.indicator.LongAvgIndicator;
import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
/**
* @author peng-yongsheng
*/
-public class TestAvgIndicator extends AvgIndicator {
+public class TestLongAvgIndicator extends LongAvgIndicator {
@Setter @Getter private int id;
diff --git a/oap-server/server-library/library-util/src/main/java/org/apache/skywalking/oap/server/library/util/TimeBucketUtils.java b/oap-server/server-library/library-util/src/main/java/org/apache/skywalking/oap/server/library/util/TimeBucketUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..078c6a32dfa8f496013eae80798fd56f20467319
--- /dev/null
+++ b/oap-server/server-library/library-util/src/main/java/org/apache/skywalking/oap/server/library/util/TimeBucketUtils.java
@@ -0,0 +1,75 @@
+/*
+ * 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.library.util;
+
+import java.text.*;
+import java.util.*;
+
+/**
+ * @author peng-yongsheng
+ */
+public enum TimeBucketUtils {
+ INSTANCE;
+
+ public long getMinuteTimeBucket(long time) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTimeInMillis(time);
+
+ long year = calendar.get(Calendar.YEAR);
+ long month = calendar.get(Calendar.MONTH) + 1;
+ long day = calendar.get(Calendar.DAY_OF_MONTH);
+ long hour = calendar.get(Calendar.HOUR_OF_DAY);
+ long minute = calendar.get(Calendar.MINUTE);
+
+ return year * 100000000 + month * 1000000 + day * 10000 + hour * 100 + minute;
+ }
+
+ public long getSecondTimeBucket(long time) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTimeInMillis(time);
+
+ long year = calendar.get(Calendar.YEAR);
+ long month = calendar.get(Calendar.MONTH) + 1;
+ long day = calendar.get(Calendar.DAY_OF_MONTH);
+ long hour = calendar.get(Calendar.HOUR_OF_DAY);
+ long minute = calendar.get(Calendar.MINUTE);
+ long second = calendar.get(Calendar.SECOND);
+
+ return year * 10000000000L + month * 100000000 + day * 1000000 + hour * 10000 + minute * 100 + second;
+ }
+
+ public String formatMinuteTimeBucket(long minuteTimeBucket) throws ParseException {
+ SimpleDateFormat minuteDateFormat = new SimpleDateFormat("yyyyMMddHHmm");
+ Date date = minuteDateFormat.parse(String.valueOf(minuteTimeBucket));
+ SimpleDateFormat parsedMinuteDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ return parsedMinuteDateFormat.format(date);
+ }
+
+ public long minuteToHour(long minuteBucket) {
+ return minuteBucket / 100;
+ }
+
+ public long minuteToDay(long minuteBucket) {
+ return minuteBucket / 100 / 100;
+ }
+
+ public long minuteToMonth(long minuteBucket) {
+ return minuteBucket / 100 / 100 / 100;
+ }
+}
diff --git a/oap-server/server-receiver-plugin/pom.xml b/oap-server/server-receiver-plugin/pom.xml
index 8a9131bdcf1f05b7866e44c9036a6e886212a31b..96faaa9a5ae5046db9f1b0a4e20a48bd5c1c738f 100644
--- a/oap-server/server-receiver-plugin/pom.xml
+++ b/oap-server/server-receiver-plugin/pom.xml
@@ -35,6 +35,7 @@
skywalking-mesh-receiver-plugin
skywalking-istio-telemetry-receiver-plugin
skywalking-register-receiver-plugin
+ skywalking-jvm-receiver-plugin
@@ -43,6 +44,11 @@
server-core
${project.version}
+
+ org.apache.skywalking
+ apm-network
+ ${project.version}
+
org.apache.skywalking
library-module
diff --git a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/pom.xml b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/pom.xml
index 1152aa51b9e7b479132457907fa562b8f9c7c5cb..1baefe53f96ecef93305531489f56c27b3c5e0da 100644
--- a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/pom.xml
+++ b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/pom.xml
@@ -30,14 +30,6 @@
skywalking-istio-telemetry-receiver-plugin
jar
-
-
- org.apache.skywalking
- server-core
- ${project.version}
-
-
-
diff --git a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/pom.xml b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..05381520a509d6a9cb7f42b489e46fb2686d7b54
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/pom.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+ server-receiver-plugin
+ org.apache.skywalking
+ 6.0.0-alpha-SNAPSHOT
+
+ 4.0.0
+
+ skywalking-jvm-receiver-plugin
+ jar
+
\ No newline at end of file
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/service/ServiceDispatcher.java b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/module/JVMModule.java
similarity index 63%
rename from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/service/ServiceDispatcher.java
rename to oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/module/JVMModule.java
index 7452ccd2c310be2dc8bc085fe866a1008fc7ed9e..16c7211dc340a807598ca97173972818bfbd99f1 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/service/ServiceDispatcher.java
+++ b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/module/JVMModule.java
@@ -16,18 +16,20 @@
*
*/
-package org.apache.skywalking.oap.server.core.analysis.generated.service;
+package org.apache.skywalking.oap.server.receiver.jvm.module;
-import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
-import org.apache.skywalking.oap.server.core.source.Service;
+import org.apache.skywalking.oap.server.library.module.ModuleDefine;
/**
- * This class is auto generated. Please don't change this class manually.
- *
- * @author Observability Analysis Language code generator
+ * @author peng-yongsheng
*/
-public class ServiceDispatcher implements SourceDispatcher {
- @Override public void dispatch(Service source) {
+public class JVMModule extends ModuleDefine {
+
+ @Override public String name() {
+ return "receiver-jvm";
}
+ @Override public Class[] services() {
+ return new Class[0];
+ }
}
diff --git a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/JVMModuleProvider.java b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/JVMModuleProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..dfb76269025b1ae599cd0d598fcf6976df2ce44e
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/JVMModuleProvider.java
@@ -0,0 +1,59 @@
+/*
+ * 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.receiver.jvm.provider;
+
+import org.apache.skywalking.oap.server.core.CoreModule;
+import org.apache.skywalking.oap.server.core.server.GRPCHandlerRegister;
+import org.apache.skywalking.oap.server.library.module.*;
+import org.apache.skywalking.oap.server.receiver.jvm.module.JVMModule;
+import org.apache.skywalking.oap.server.receiver.jvm.provider.handler.JVMMetricsServiceHandler;
+
+/**
+ * @author peng-yongsheng
+ */
+public class JVMModuleProvider extends ModuleProvider {
+
+ @Override public String name() {
+ return "default";
+ }
+
+ @Override public Class extends ModuleDefine> module() {
+ return JVMModule.class;
+ }
+
+ @Override public ModuleConfig createConfigBeanIfAbsent() {
+ return null;
+ }
+
+ @Override public void prepare() {
+ }
+
+ @Override public void start() {
+ GRPCHandlerRegister grpcHandlerRegister = getManager().find(CoreModule.NAME).getService(GRPCHandlerRegister.class);
+ grpcHandlerRegister.addHandler(new JVMMetricsServiceHandler(getManager()));
+ }
+
+ @Override public void notifyAfterCompleted() {
+
+ }
+
+ @Override public String[] requiredModules() {
+ return new String[] {CoreModule.NAME};
+ }
+}
diff --git a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricsServiceHandler.java b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricsServiceHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..ede98bf76f18bb7204ff4ea64bb69742431c2bee
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricsServiceHandler.java
@@ -0,0 +1,152 @@
+/*
+ * 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.receiver.jvm.provider.handler;
+
+import io.grpc.stub.StreamObserver;
+import java.util.List;
+import org.apache.skywalking.apm.network.language.agent.*;
+import org.apache.skywalking.oap.server.core.*;
+import org.apache.skywalking.oap.server.core.source.GCPhrase;
+import org.apache.skywalking.oap.server.core.source.*;
+import org.apache.skywalking.oap.server.library.module.ModuleManager;
+import org.apache.skywalking.oap.server.library.server.grpc.GRPCHandler;
+import org.apache.skywalking.oap.server.library.util.TimeBucketUtils;
+import org.slf4j.*;
+
+/**
+ * @author peng-yongsheng
+ */
+public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsServiceImplBase implements GRPCHandler {
+
+ private static final Logger logger = LoggerFactory.getLogger(JVMMetricsServiceHandler.class);
+
+ private final SourceReceiver sourceReceiver;
+
+ public JVMMetricsServiceHandler(ModuleManager moduleManager) {
+ this.sourceReceiver = moduleManager.find(CoreModule.NAME).getService(SourceReceiver.class);
+ }
+
+ @Override public void collect(JVMMetrics request, StreamObserver responseObserver) {
+ int serviceInstanceId = request.getApplicationInstanceId();
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("receive the jvm metric from application instance, id: {}", serviceInstanceId);
+ }
+
+ request.getMetricsList().forEach(metric -> {
+ long minuteTimeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(metric.getTime());
+ sendToCpuMetricProcess(serviceInstanceId, minuteTimeBucket, metric.getCpu());
+ sendToMemoryMetricProcess(serviceInstanceId, minuteTimeBucket, metric.getMemoryList());
+ sendToMemoryPoolMetricProcess(serviceInstanceId, minuteTimeBucket, metric.getMemoryPoolList());
+ sendToGCMetricProcess(serviceInstanceId, minuteTimeBucket, metric.getGcList());
+ sendToInstanceHeartBeatProcess(serviceInstanceId, metric.getTime());
+ });
+
+ responseObserver.onNext(Downstream.newBuilder().build());
+ responseObserver.onCompleted();
+ }
+
+ private void sendToCpuMetricProcess(int serviceInstanceId, long timeBucket, CPU cpu) {
+ ServiceInstanceJVMCPU serviceInstanceJVMCPU = new ServiceInstanceJVMCPU();
+ serviceInstanceJVMCPU.setId(serviceInstanceId);
+ serviceInstanceJVMCPU.setName(Const.EMPTY_STRING);
+ serviceInstanceJVMCPU.setServiceInstanceId(serviceInstanceId);
+ serviceInstanceJVMCPU.setServiceName(Const.EMPTY_STRING);
+ serviceInstanceJVMCPU.setUsePercent(cpu.getUsagePercent());
+ serviceInstanceJVMCPU.setTimeBucket(timeBucket);
+ sourceReceiver.receive(serviceInstanceJVMCPU);
+ }
+
+ private void sendToGCMetricProcess(int serviceInstanceId, long timeBucket, List gcs) {
+ gcs.forEach(gc -> {
+ ServiceInstanceJVMGC serviceInstanceJVMGC = new ServiceInstanceJVMGC();
+ serviceInstanceJVMGC.setId(serviceInstanceId);
+ serviceInstanceJVMGC.setName(Const.EMPTY_STRING);
+ serviceInstanceJVMGC.setServiceInstanceId(serviceInstanceId);
+ serviceInstanceJVMGC.setServiceName(Const.EMPTY_STRING);
+
+ switch (gc.getPhrase()) {
+ case NEW:
+ serviceInstanceJVMGC.setPhrase(GCPhrase.NEW);
+ case OLD:
+ serviceInstanceJVMGC.setPhrase(GCPhrase.OLD);
+ }
+
+ serviceInstanceJVMGC.setTime(gc.getTime());
+ serviceInstanceJVMGC.setCount(gc.getCount());
+ serviceInstanceJVMGC.setTimeBucket(timeBucket);
+ sourceReceiver.receive(serviceInstanceJVMGC);
+ });
+ }
+
+ private void sendToMemoryMetricProcess(int serviceInstanceId, long timeBucket, List memories) {
+ memories.forEach(memory -> {
+ ServiceInstanceJVMMemory serviceInstanceJVMMemory = new ServiceInstanceJVMMemory();
+ serviceInstanceJVMMemory.setId(serviceInstanceId);
+ serviceInstanceJVMMemory.setName(Const.EMPTY_STRING);
+ serviceInstanceJVMMemory.setServiceInstanceId(serviceInstanceId);
+ serviceInstanceJVMMemory.setServiceName(Const.EMPTY_STRING);
+ serviceInstanceJVMMemory.setHeap(memory.getIsHeap());
+ serviceInstanceJVMMemory.setInit(memory.getInit());
+ serviceInstanceJVMMemory.setMax(memory.getMax());
+ serviceInstanceJVMMemory.setUsed(memory.getUsed());
+ serviceInstanceJVMMemory.setCommitted(memory.getCommitted());
+ serviceInstanceJVMMemory.setTimeBucket(timeBucket);
+ sourceReceiver.receive(serviceInstanceJVMMemory);
+ });
+ }
+
+ private void sendToMemoryPoolMetricProcess(int serviceInstanceId, long timeBucket,
+ List memoryPools) {
+
+ memoryPools.forEach(memoryPool -> {
+ ServiceInstanceJVMMemoryPool serviceInstanceJVMMemoryPool = new ServiceInstanceJVMMemoryPool();
+ serviceInstanceJVMMemoryPool.setId(serviceInstanceId);
+ serviceInstanceJVMMemoryPool.setName(Const.EMPTY_STRING);
+ serviceInstanceJVMMemoryPool.setServiceInstanceId(serviceInstanceId);
+ serviceInstanceJVMMemoryPool.setServiceName(Const.EMPTY_STRING);
+
+ switch (memoryPool.getType()) {
+ case NEWGEN_USAGE:
+ serviceInstanceJVMMemoryPool.setPoolType(MemoryPoolType.NEWGEN_USAGE);
+ case OLDGEN_USAGE:
+ serviceInstanceJVMMemoryPool.setPoolType(MemoryPoolType.OLDGEN_USAGE);
+ case PERMGEN_USAGE:
+ serviceInstanceJVMMemoryPool.setPoolType(MemoryPoolType.PERMGEN_USAGE);
+ case SURVIVOR_USAGE:
+ serviceInstanceJVMMemoryPool.setPoolType(MemoryPoolType.SURVIVOR_USAGE);
+ case METASPACE_USAGE:
+ serviceInstanceJVMMemoryPool.setPoolType(MemoryPoolType.METASPACE_USAGE);
+ case CODE_CACHE_USAGE:
+ serviceInstanceJVMMemoryPool.setPoolType(MemoryPoolType.CODE_CACHE_USAGE);
+ }
+
+ serviceInstanceJVMMemoryPool.setInit(memoryPool.getInit());
+ serviceInstanceJVMMemoryPool.setMax(memoryPool.getMax());
+ serviceInstanceJVMMemoryPool.setUsed(memoryPool.getUsed());
+ serviceInstanceJVMMemoryPool.setCommitted(memoryPool.getCommited());
+ serviceInstanceJVMMemoryPool.setTimeBucket(timeBucket);
+ sourceReceiver.receive(serviceInstanceJVMMemoryPool);
+ });
+ }
+
+ private void sendToInstanceHeartBeatProcess(int instanceId, long heartBeatTime) {
+// instanceHeartBeatService.heartBeat(instanceId, heartBeatTime);
+ }
+}
diff --git a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleDefine b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleDefine
new file mode 100644
index 0000000000000000000000000000000000000000..fe4dab339ca49af0ed6f53dad2fca600eec4bbd5
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleDefine
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+#
+
+org.apache.skywalking.oap.server.receiver.jvm.module.JVMModule
\ No newline at end of file
diff --git a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleProvider b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleProvider
new file mode 100644
index 0000000000000000000000000000000000000000..4b3751febca71716e07d70600ebfc38d4e7fc812
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleProvider
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+#
+
+org.apache.skywalking.oap.server.receiver.jvm.provider.JVMModuleProvider
\ No newline at end of file
diff --git a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricsServiceHandlerMainTest.java b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricsServiceHandlerMainTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..ffa2c8df5176f1663c0f5fc8b886d55e25fc85f5
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricsServiceHandlerMainTest.java
@@ -0,0 +1,137 @@
+/*
+ * 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.receiver.jvm.provider.handler;
+
+import io.grpc.*;
+import org.apache.skywalking.apm.network.language.agent.*;
+
+/**
+ * @author peng-yongsheng
+ */
+public class JVMMetricsServiceHandlerMainTest {
+
+ public static void main(String[] args) {
+ ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 11800).usePlaintext(true).build();
+
+ JVMMetricsServiceGrpc.JVMMetricsServiceBlockingStub stub = JVMMetricsServiceGrpc.newBlockingStub(channel);
+
+ JVMMetrics.Builder jvmMetrics = JVMMetrics.newBuilder();
+ jvmMetrics.setApplicationInstanceId(1);
+
+ JVMMetric.Builder jvmMetricBuilder = JVMMetric.newBuilder();
+ jvmMetricBuilder.setTime(System.currentTimeMillis());
+
+ buildCPUMetric(jvmMetricBuilder);
+ buildGCMetric(jvmMetricBuilder);
+ buildMemoryMetric(jvmMetricBuilder);
+ buildMemoryPoolMetric(jvmMetricBuilder);
+
+ jvmMetrics.addMetrics(jvmMetricBuilder);
+
+ stub.collect(jvmMetrics.build());
+ }
+
+ private static void buildMemoryPoolMetric(JVMMetric.Builder metricBuilder) {
+ MemoryPool.Builder codeCache = MemoryPool.newBuilder();
+ codeCache.setInit(10);
+ codeCache.setMax(100);
+ codeCache.setCommited(10);
+ codeCache.setUsed(50);
+ codeCache.setType(PoolType.CODE_CACHE_USAGE);
+ metricBuilder.addMemoryPool(codeCache);
+
+ MemoryPool.Builder newGen = MemoryPool.newBuilder();
+ newGen.setInit(10);
+ newGen.setMax(100);
+ newGen.setCommited(10);
+ newGen.setUsed(50);
+ newGen.setType(PoolType.NEWGEN_USAGE);
+ metricBuilder.addMemoryPool(newGen);
+
+ MemoryPool.Builder oldGen = MemoryPool.newBuilder();
+ oldGen.setInit(10);
+ oldGen.setMax(100);
+ oldGen.setCommited(10);
+ oldGen.setUsed(50);
+ oldGen.setType(PoolType.OLDGEN_USAGE);
+ metricBuilder.addMemoryPool(oldGen);
+
+ MemoryPool.Builder survivor = MemoryPool.newBuilder();
+ survivor.setInit(10);
+ survivor.setMax(100);
+ survivor.setCommited(10);
+ survivor.setUsed(50);
+ survivor.setType(PoolType.SURVIVOR_USAGE);
+ metricBuilder.addMemoryPool(survivor);
+
+ MemoryPool.Builder permGen = MemoryPool.newBuilder();
+ permGen.setInit(10);
+ permGen.setMax(100);
+ permGen.setCommited(10);
+ permGen.setUsed(50);
+ permGen.setType(PoolType.PERMGEN_USAGE);
+ metricBuilder.addMemoryPool(permGen);
+
+ MemoryPool.Builder metaSpace = MemoryPool.newBuilder();
+ metaSpace.setInit(10);
+ metaSpace.setMax(100);
+ metaSpace.setCommited(10);
+ metaSpace.setUsed(50);
+ metaSpace.setType(PoolType.METASPACE_USAGE);
+ metricBuilder.addMemoryPool(metaSpace);
+ }
+
+ private static void buildMemoryMetric(JVMMetric.Builder metricBuilder) {
+ Memory.Builder isHeap = Memory.newBuilder();
+ isHeap.setInit(20);
+ isHeap.setMax(100);
+ isHeap.setCommitted(20);
+ isHeap.setUsed(60);
+ isHeap.setIsHeap(true);
+ metricBuilder.addMemory(isHeap);
+
+ Memory.Builder nonHeap = Memory.newBuilder();
+ nonHeap.setInit(20);
+ nonHeap.setMax(100);
+ nonHeap.setCommitted(20);
+ nonHeap.setUsed(60);
+ nonHeap.setIsHeap(false);
+ metricBuilder.addMemory(nonHeap);
+ }
+
+ private static void buildGCMetric(JVMMetric.Builder metricBuilder) {
+ GC.Builder newGC = GC.newBuilder();
+ newGC.setPhrase(GCPhrase.NEW);
+ newGC.setCount(2);
+ newGC.setTime(1000);
+ metricBuilder.addGc(newGC);
+
+ GC.Builder oldGC = GC.newBuilder();
+ oldGC.setPhrase(GCPhrase.OLD);
+ oldGC.setCount(4);
+ oldGC.setTime(49);
+ metricBuilder.addGc(oldGC);
+ }
+
+ private static void buildCPUMetric(JVMMetric.Builder metricBuilder) {
+ CPU.Builder cpu = CPU.newBuilder();
+ cpu.setUsagePercent(20);
+ metricBuilder.setCpu(cpu.build());
+ }
+}
diff --git a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/test/resources/log4j2.xml b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/test/resources/log4j2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cd672826bb3f1101d0e50c682f82db68895a66a7
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/test/resources/log4j2.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/oap-server/server-starter/pom.xml b/oap-server/server-starter/pom.xml
index 00fb0c425cb616eda73c3a2ee316b7d8e6052648..9d0ddd0d453f7e23dc1b65b73ff17fc27a6c5298 100644
--- a/oap-server/server-starter/pom.xml
+++ b/oap-server/server-starter/pom.xml
@@ -74,6 +74,11 @@
skywalking-register-receiver-plugin
${project.version}
+
+ org.apache.skywalking
+ skywalking-jvm-receiver-plugin
+ ${project.version}
+
diff --git a/oap-server/server-starter/src/main/resources/application.yml b/oap-server/server-starter/src/main/resources/application.yml
index cdce1cb28f0cfdc4d1df4f11cd2cfb935fbd3bee..004745a015142e32c253dfc8f7744a10c8d55a29 100644
--- a/oap-server/server-starter/src/main/resources/application.yml
+++ b/oap-server/server-starter/src/main/resources/application.yml
@@ -51,6 +51,8 @@ storage:
monthMetricDataTTL: 18 # Unit is month
receiver-register:
default:
+receiver-jvm:
+ default:
service-mesh:
default:
istio-telemetry:
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/test/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/ElasticSearchColumnTypeMappingTestCase.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/test/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/ElasticSearchColumnTypeMappingTestCase.java
index 2553ab7b991d992508f97b20f28b24ce3da38bd1..24d78f01c7c2dd5a03bf0084a9cb8c204ee4ce5b 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/test/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/ElasticSearchColumnTypeMappingTestCase.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/test/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/ElasticSearchColumnTypeMappingTestCase.java
@@ -38,6 +38,6 @@ public class ElasticSearchColumnTypeMappingTestCase {
Assert.assertEquals("double", mapping.transform(double.class));
Assert.assertEquals("double", mapping.transform(Double.class));
- Assert.assertEquals("text", mapping.transform(String.class));
+ Assert.assertEquals("keyword", mapping.transform(String.class));
}
}