You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@skywalking.apache.org by wu...@apache.org on 2018/09/07 03:59:58 UTC
[incubator-skywalking] branch master updated: Add generate
indicator and dispatcher about service topology but not test. (#1638)
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new 800a535 Add generate indicator and dispatcher about service topology but not test. (#1638)
800a535 is described below
commit 800a5353def28b37b7580f0c32de87534ae56f22
Author: 彭勇升 pengys <80...@qq.com>
AuthorDate: Fri Sep 7 11:59:55 2018 +0800
Add generate indicator and dispatcher about service topology but not test. (#1638)
* Add generate indicator and dispatcher about service topology but not test.
* Delete call type from service relation.
---
.../server/core/analysis/DispatcherManager.java | 4 +
.../ServiceCallsSumIndicator.java} | 68 +++++-------
.../generated/service/ServiceDispatcher.java | 12 +-
.../ServiceRelationAvgIndicator.java | 9 +-
...=> ServiceRelationClientCallsSumIndicator.java} | 41 +++----
.../servicerelation/ServiceRelationDispatcher.java | 29 +++++
...=> ServiceRelationServerCallsSumIndicator.java} | 41 +++----
.../indicator/SumIndicator.java} | 32 +++++-
.../service/ServiceComponentDispatcher.java} | 23 ++--
.../manual/service/ServiceComponentIndicator.java | 122 +++++++++++++++++++++
.../service/ServiceMappingDispatcher.java} | 23 ++--
.../manual/service/ServiceMappingIndicator.java | 122 +++++++++++++++++++++
.../skywalking/oap/server/core/source/Scope.java | 3 +-
.../source/{Scope.java => ServiceComponent.java} | 15 ++-
.../source/{Scope.java => ServiceMapping.java} | 15 ++-
.../src/main/resources/query-protocol | 2 +-
.../trace/provider/TraceModuleProvider.java | 3 +
.../service/ServiceComponentSpanListener.java | 77 +++++++++++++
.../service/ServiceMappingSpanListener.java | 86 +++++++++++++++
19 files changed, 590 insertions(+), 137 deletions(-)
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 0d0b4c0..6f059c7 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
@@ -29,6 +29,7 @@ import org.apache.skywalking.oap.server.core.analysis.generated.serviceinstancej
import org.apache.skywalking.oap.server.core.analysis.generated.serviceinstancejvmmemorypool.ServiceInstanceJVMMemoryPoolDispatcher;
import org.apache.skywalking.oap.server.core.analysis.generated.serviceinstancerelation.ServiceInstanceRelationDispatcher;
import org.apache.skywalking.oap.server.core.analysis.generated.servicerelation.ServiceRelationDispatcher;
+import org.apache.skywalking.oap.server.core.analysis.manual.service.*;
import org.apache.skywalking.oap.server.core.source.Scope;
import org.slf4j.*;
@@ -48,6 +49,9 @@ public class DispatcherManager {
this.dispatcherMap.put(Scope.ServiceInstance, new ServiceInstanceDispatcher());
this.dispatcherMap.put(Scope.Endpoint, new EndpointDispatcher());
+ this.dispatcherMap.put(Scope.ServiceComponent, new ServiceComponentDispatcher());
+ this.dispatcherMap.put(Scope.ServiceMapping, new ServiceMappingDispatcher());
+
this.dispatcherMap.put(Scope.ServiceRelation, new ServiceRelationDispatcher());
this.dispatcherMap.put(Scope.ServiceInstanceRelation, new ServiceInstanceRelationDispatcher());
this.dispatcherMap.put(Scope.EndpointRelation, new EndpointRelationDispatcher());
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationAvgIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/service/ServiceCallsSumIndicator.java
similarity index 53%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationAvgIndicator.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/service/ServiceCallsSumIndicator.java
index a5e1c36..202b8c8 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationAvgIndicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/service/ServiceCallsSumIndicator.java
@@ -16,20 +16,19 @@
*
*/
-package org.apache.skywalking.oap.server.core.analysis.generated.servicerelation;
+package org.apache.skywalking.oap.server.core.analysis.generated.service;
import java.util.*;
import lombok.*;
import org.apache.skywalking.oap.server.core.Const;
-import org.apache.skywalking.oap.server.core.alarm.AlarmMeta;
-import org.apache.skywalking.oap.server.core.alarm.AlarmSupported;
-import org.apache.skywalking.oap.server.core.analysis.indicator.*;
+import org.apache.skywalking.oap.server.core.alarm.*;
+import org.apache.skywalking.oap.server.core.analysis.indicator.SumIndicator;
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.source.Scope;
+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.
@@ -38,23 +37,20 @@ import org.apache.skywalking.oap.server.core.source.Scope;
*/
@IndicatorType
@StreamData
-@StorageEntity(name = "servicerelation_avg", builder = ServiceRelationAvgIndicator.Builder.class)
-public class ServiceRelationAvgIndicator extends LongAvgIndicator implements AlarmSupported {
+@StorageEntity(name = "service_calls_sum", builder = ServiceCallsSumIndicator.Builder.class)
+public class ServiceCallsSumIndicator extends SumIndicator implements AlarmSupported {
- @Setter @Getter @Column(columnName = "source_service_id") private int sourceServiceId;
- @Setter @Getter @Column(columnName = "dest_service_id") private int destServiceId;
+ @Setter @Getter @Column(columnName = "id") private int id;
@Override public String id() {
String splitJointId = String.valueOf(getTimeBucket());
- splitJointId += Const.ID_SPLIT + String.valueOf(sourceServiceId);
- splitJointId += Const.ID_SPLIT + String.valueOf(destServiceId);
+ splitJointId += Const.ID_SPLIT + String.valueOf(id);
return splitJointId;
}
@Override public int hashCode() {
int result = 17;
- result = 31 * result + sourceServiceId;
- result = 31 * result + destServiceId;
+ result = 31 * result + id;
result = 31 * result + (int)getTimeBucket();
return result;
}
@@ -67,10 +63,8 @@ public class ServiceRelationAvgIndicator extends LongAvgIndicator implements Ala
if (getClass() != obj.getClass())
return false;
- ServiceRelationAvgIndicator indicator = (ServiceRelationAvgIndicator)obj;
- if (sourceServiceId != indicator.sourceServiceId)
- return false;
- if (destServiceId != indicator.destServiceId)
+ ServiceCallsSumIndicator indicator = (ServiceCallsSumIndicator)obj;
+ if (id != indicator.id)
return false;
if (getTimeBucket() != indicator.getTimeBucket())
@@ -82,53 +76,41 @@ public class ServiceRelationAvgIndicator extends LongAvgIndicator implements Ala
@Override public RemoteData.Builder serialize() {
RemoteData.Builder remoteBuilder = RemoteData.newBuilder();
- remoteBuilder.setDataLongs(0, getSummation());
- remoteBuilder.setDataLongs(1, getValue());
- remoteBuilder.setDataLongs(2, getTimeBucket());
+ remoteBuilder.setDataLongs(0, getValue());
+ remoteBuilder.setDataLongs(1, getTimeBucket());
- remoteBuilder.setDataIntegers(0, getSourceServiceId());
- remoteBuilder.setDataIntegers(1, getDestServiceId());
- remoteBuilder.setDataIntegers(2, getCount());
+ remoteBuilder.setDataIntegers(0, getId());
return remoteBuilder;
}
@Override public void deserialize(RemoteData remoteData) {
- setSummation(remoteData.getDataLongs(0));
- setValue(remoteData.getDataLongs(1));
- setTimeBucket(remoteData.getDataLongs(2));
+ setValue(remoteData.getDataLongs(0));
+ setTimeBucket(remoteData.getDataLongs(1));
- setSourceServiceId(remoteData.getDataIntegers(0));
- setDestServiceId(remoteData.getDataIntegers(1));
- setCount(remoteData.getDataIntegers(2));
+ setId(remoteData.getDataIntegers(0));
}
@Override public AlarmMeta getAlarmMeta() {
- return new AlarmMeta("ServiceRelation_Avg", Scope.ServiceRelation, sourceServiceId, destServiceId);
+ return new AlarmMeta("Service_Calls_Sum", Scope.Service, id);
}
- public static class Builder implements StorageBuilder<ServiceRelationAvgIndicator> {
+ public static class Builder implements StorageBuilder<ServiceCallsSumIndicator> {
- @Override public Map<String, Object> data2Map(ServiceRelationAvgIndicator storageData) {
+ @Override public Map<String, Object> data2Map(ServiceCallsSumIndicator storageData) {
Map<String, Object> map = new HashMap<>();
- map.put("source_service_id", storageData.getSourceServiceId());
- map.put("dest_service_id", storageData.getDestServiceId());
- map.put("summation", storageData.getSummation());
- map.put("count", storageData.getCount());
+ map.put("id", storageData.getId());
map.put("value", storageData.getValue());
map.put("time_bucket", storageData.getTimeBucket());
return map;
}
- @Override public ServiceRelationAvgIndicator map2Data(Map<String, Object> dbMap) {
- ServiceRelationAvgIndicator indicator = new ServiceRelationAvgIndicator();
- indicator.setSourceServiceId(((Number)dbMap.get("source_service_id")).intValue());
- indicator.setDestServiceId(((Number)dbMap.get("dest_service_id")).intValue());
- indicator.setSummation(((Number)dbMap.get("summation")).longValue());
- indicator.setCount(((Number)dbMap.get("count")).intValue());
+ @Override public ServiceCallsSumIndicator map2Data(Map<String, Object> dbMap) {
+ ServiceCallsSumIndicator indicator = new ServiceCallsSumIndicator();
+ indicator.setId(((Number)dbMap.get("id")).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/service/ServiceDispatcher.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/service/ServiceDispatcher.java
index cdef6a8..80cb30d 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/service/ServiceDispatcher.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/service/ServiceDispatcher.java
@@ -20,7 +20,7 @@ package org.apache.skywalking.oap.server.core.analysis.generated.service;
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.*;
+import org.apache.skywalking.oap.server.core.source.Service;
/**
* This class is auto generated. Please don't change this class manually.
@@ -31,6 +31,7 @@ public class ServiceDispatcher implements SourceDispatcher<Service> {
@Override public void dispatch(Service source) {
doServiceAvg(source);
+ doServiceCallsSum(source);
}
private void doServiceAvg(Service source) {
@@ -42,4 +43,13 @@ public class ServiceDispatcher implements SourceDispatcher<Service> {
indicator.combine(source.getLatency(), 1);
IndicatorProcess.INSTANCE.in(indicator);
}
+ private void doServiceCallsSum(Service source) {
+ ServiceCallsSumIndicator indicator = new ServiceCallsSumIndicator();
+
+
+ indicator.setTimeBucket(source.getTimeBucket());
+ indicator.setId(source.getId());
+ indicator.combine(1);
+ IndicatorProcess.INSTANCE.in(indicator);
+ }
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationAvgIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationAvgIndicator.java
index a5e1c36..71be3fc 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationAvgIndicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationAvgIndicator.java
@@ -21,15 +21,14 @@ package org.apache.skywalking.oap.server.core.analysis.generated.servicerelation
import java.util.*;
import lombok.*;
import org.apache.skywalking.oap.server.core.Const;
-import org.apache.skywalking.oap.server.core.alarm.AlarmMeta;
-import org.apache.skywalking.oap.server.core.alarm.AlarmSupported;
-import org.apache.skywalking.oap.server.core.analysis.indicator.*;
+import org.apache.skywalking.oap.server.core.alarm.*;
+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.source.Scope;
+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.
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationAvgIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationClientCallsSumIndicator.java
similarity index 74%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationAvgIndicator.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationClientCallsSumIndicator.java
index a5e1c36..0d1f03a 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationAvgIndicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationClientCallsSumIndicator.java
@@ -21,15 +21,14 @@ package org.apache.skywalking.oap.server.core.analysis.generated.servicerelation
import java.util.*;
import lombok.*;
import org.apache.skywalking.oap.server.core.Const;
-import org.apache.skywalking.oap.server.core.alarm.AlarmMeta;
-import org.apache.skywalking.oap.server.core.alarm.AlarmSupported;
-import org.apache.skywalking.oap.server.core.analysis.indicator.*;
+import org.apache.skywalking.oap.server.core.alarm.*;
+import org.apache.skywalking.oap.server.core.analysis.indicator.SumIndicator;
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.source.Scope;
+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.
@@ -38,8 +37,8 @@ import org.apache.skywalking.oap.server.core.source.Scope;
*/
@IndicatorType
@StreamData
-@StorageEntity(name = "servicerelation_avg", builder = ServiceRelationAvgIndicator.Builder.class)
-public class ServiceRelationAvgIndicator extends LongAvgIndicator implements AlarmSupported {
+@StorageEntity(name = "service_relation_client_calls_sum", builder = ServiceRelationClientCallsSumIndicator.Builder.class)
+public class ServiceRelationClientCallsSumIndicator extends SumIndicator implements AlarmSupported {
@Setter @Getter @Column(columnName = "source_service_id") private int sourceServiceId;
@Setter @Getter @Column(columnName = "dest_service_id") private int destServiceId;
@@ -67,7 +66,7 @@ public class ServiceRelationAvgIndicator extends LongAvgIndicator implements Ala
if (getClass() != obj.getClass())
return false;
- ServiceRelationAvgIndicator indicator = (ServiceRelationAvgIndicator)obj;
+ ServiceRelationClientCallsSumIndicator indicator = (ServiceRelationClientCallsSumIndicator)obj;
if (sourceServiceId != indicator.sourceServiceId)
return false;
if (destServiceId != indicator.destServiceId)
@@ -82,53 +81,45 @@ public class ServiceRelationAvgIndicator extends LongAvgIndicator implements Ala
@Override public RemoteData.Builder serialize() {
RemoteData.Builder remoteBuilder = RemoteData.newBuilder();
- remoteBuilder.setDataLongs(0, getSummation());
- remoteBuilder.setDataLongs(1, getValue());
- remoteBuilder.setDataLongs(2, getTimeBucket());
+ remoteBuilder.setDataLongs(0, getValue());
+ remoteBuilder.setDataLongs(1, getTimeBucket());
remoteBuilder.setDataIntegers(0, getSourceServiceId());
remoteBuilder.setDataIntegers(1, getDestServiceId());
- remoteBuilder.setDataIntegers(2, getCount());
return remoteBuilder;
}
@Override public void deserialize(RemoteData remoteData) {
- setSummation(remoteData.getDataLongs(0));
- setValue(remoteData.getDataLongs(1));
- setTimeBucket(remoteData.getDataLongs(2));
+ setValue(remoteData.getDataLongs(0));
+ setTimeBucket(remoteData.getDataLongs(1));
setSourceServiceId(remoteData.getDataIntegers(0));
setDestServiceId(remoteData.getDataIntegers(1));
- setCount(remoteData.getDataIntegers(2));
}
@Override public AlarmMeta getAlarmMeta() {
- return new AlarmMeta("ServiceRelation_Avg", Scope.ServiceRelation, sourceServiceId, destServiceId);
+ return new AlarmMeta("Service_Relation_Client_Calls_Sum", Scope.ServiceRelation, sourceServiceId, destServiceId);
}
- public static class Builder implements StorageBuilder<ServiceRelationAvgIndicator> {
+ public static class Builder implements StorageBuilder<ServiceRelationClientCallsSumIndicator> {
- @Override public Map<String, Object> data2Map(ServiceRelationAvgIndicator storageData) {
+ @Override public Map<String, Object> data2Map(ServiceRelationClientCallsSumIndicator storageData) {
Map<String, Object> map = new HashMap<>();
map.put("source_service_id", storageData.getSourceServiceId());
map.put("dest_service_id", storageData.getDestServiceId());
- 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 ServiceRelationAvgIndicator map2Data(Map<String, Object> dbMap) {
- ServiceRelationAvgIndicator indicator = new ServiceRelationAvgIndicator();
+ @Override public ServiceRelationClientCallsSumIndicator map2Data(Map<String, Object> dbMap) {
+ ServiceRelationClientCallsSumIndicator indicator = new ServiceRelationClientCallsSumIndicator();
indicator.setSourceServiceId(((Number)dbMap.get("source_service_id")).intValue());
indicator.setDestServiceId(((Number)dbMap.get("dest_service_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/servicerelation/ServiceRelationDispatcher.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationDispatcher.java
index 1c7a52c..dcad4d3 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationDispatcher.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationDispatcher.java
@@ -19,6 +19,7 @@
package org.apache.skywalking.oap.server.core.analysis.generated.servicerelation;
import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
+import org.apache.skywalking.oap.server.core.analysis.indicator.expression.EqualMatch;
import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
import org.apache.skywalking.oap.server.core.source.*;
@@ -30,9 +31,37 @@ import org.apache.skywalking.oap.server.core.source.*;
public class ServiceRelationDispatcher implements SourceDispatcher<ServiceRelation> {
@Override public void dispatch(ServiceRelation source) {
+ doServiceRelationClientCallsSum(source);
+ doServiceRelationServerCallsSum(source);
doServiceRelationAvg(source);
}
+ private void doServiceRelationClientCallsSum(ServiceRelation source) {
+ ServiceRelationClientCallsSumIndicator indicator = new ServiceRelationClientCallsSumIndicator();
+
+ if (!new EqualMatch().setLeft(source.getDetectPoint()).setRight(DetectPoint.CLIENT).match()) {
+ return;
+ }
+
+ indicator.setTimeBucket(source.getTimeBucket());
+ indicator.setSourceServiceId(source.getSourceServiceId());
+ indicator.setDestServiceId(source.getDestServiceId());
+ indicator.combine(1);
+ IndicatorProcess.INSTANCE.in(indicator);
+ }
+ private void doServiceRelationServerCallsSum(ServiceRelation source) {
+ ServiceRelationServerCallsSumIndicator indicator = new ServiceRelationServerCallsSumIndicator();
+
+ if (!new EqualMatch().setLeft(source.getDetectPoint()).setRight(DetectPoint.SERVER).match()) {
+ return;
+ }
+
+ indicator.setTimeBucket(source.getTimeBucket());
+ indicator.setSourceServiceId(source.getSourceServiceId());
+ indicator.setDestServiceId(source.getDestServiceId());
+ indicator.combine(1);
+ IndicatorProcess.INSTANCE.in(indicator);
+ }
private void doServiceRelationAvg(ServiceRelation source) {
ServiceRelationAvgIndicator indicator = new ServiceRelationAvgIndicator();
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationAvgIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationServerCallsSumIndicator.java
similarity index 74%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationAvgIndicator.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationServerCallsSumIndicator.java
index a5e1c36..ced9e3d 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationAvgIndicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/servicerelation/ServiceRelationServerCallsSumIndicator.java
@@ -21,15 +21,14 @@ package org.apache.skywalking.oap.server.core.analysis.generated.servicerelation
import java.util.*;
import lombok.*;
import org.apache.skywalking.oap.server.core.Const;
-import org.apache.skywalking.oap.server.core.alarm.AlarmMeta;
-import org.apache.skywalking.oap.server.core.alarm.AlarmSupported;
-import org.apache.skywalking.oap.server.core.analysis.indicator.*;
+import org.apache.skywalking.oap.server.core.alarm.*;
+import org.apache.skywalking.oap.server.core.analysis.indicator.SumIndicator;
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.source.Scope;
+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.
@@ -38,8 +37,8 @@ import org.apache.skywalking.oap.server.core.source.Scope;
*/
@IndicatorType
@StreamData
-@StorageEntity(name = "servicerelation_avg", builder = ServiceRelationAvgIndicator.Builder.class)
-public class ServiceRelationAvgIndicator extends LongAvgIndicator implements AlarmSupported {
+@StorageEntity(name = "service_relation_server_calls_sum", builder = ServiceRelationServerCallsSumIndicator.Builder.class)
+public class ServiceRelationServerCallsSumIndicator extends SumIndicator implements AlarmSupported {
@Setter @Getter @Column(columnName = "source_service_id") private int sourceServiceId;
@Setter @Getter @Column(columnName = "dest_service_id") private int destServiceId;
@@ -67,7 +66,7 @@ public class ServiceRelationAvgIndicator extends LongAvgIndicator implements Ala
if (getClass() != obj.getClass())
return false;
- ServiceRelationAvgIndicator indicator = (ServiceRelationAvgIndicator)obj;
+ ServiceRelationServerCallsSumIndicator indicator = (ServiceRelationServerCallsSumIndicator)obj;
if (sourceServiceId != indicator.sourceServiceId)
return false;
if (destServiceId != indicator.destServiceId)
@@ -82,53 +81,45 @@ public class ServiceRelationAvgIndicator extends LongAvgIndicator implements Ala
@Override public RemoteData.Builder serialize() {
RemoteData.Builder remoteBuilder = RemoteData.newBuilder();
- remoteBuilder.setDataLongs(0, getSummation());
- remoteBuilder.setDataLongs(1, getValue());
- remoteBuilder.setDataLongs(2, getTimeBucket());
+ remoteBuilder.setDataLongs(0, getValue());
+ remoteBuilder.setDataLongs(1, getTimeBucket());
remoteBuilder.setDataIntegers(0, getSourceServiceId());
remoteBuilder.setDataIntegers(1, getDestServiceId());
- remoteBuilder.setDataIntegers(2, getCount());
return remoteBuilder;
}
@Override public void deserialize(RemoteData remoteData) {
- setSummation(remoteData.getDataLongs(0));
- setValue(remoteData.getDataLongs(1));
- setTimeBucket(remoteData.getDataLongs(2));
+ setValue(remoteData.getDataLongs(0));
+ setTimeBucket(remoteData.getDataLongs(1));
setSourceServiceId(remoteData.getDataIntegers(0));
setDestServiceId(remoteData.getDataIntegers(1));
- setCount(remoteData.getDataIntegers(2));
}
@Override public AlarmMeta getAlarmMeta() {
- return new AlarmMeta("ServiceRelation_Avg", Scope.ServiceRelation, sourceServiceId, destServiceId);
+ return new AlarmMeta("Service_Relation_Server_Calls_Sum", Scope.ServiceRelation, sourceServiceId, destServiceId);
}
- public static class Builder implements StorageBuilder<ServiceRelationAvgIndicator> {
+ public static class Builder implements StorageBuilder<ServiceRelationServerCallsSumIndicator> {
- @Override public Map<String, Object> data2Map(ServiceRelationAvgIndicator storageData) {
+ @Override public Map<String, Object> data2Map(ServiceRelationServerCallsSumIndicator storageData) {
Map<String, Object> map = new HashMap<>();
map.put("source_service_id", storageData.getSourceServiceId());
map.put("dest_service_id", storageData.getDestServiceId());
- 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 ServiceRelationAvgIndicator map2Data(Map<String, Object> dbMap) {
- ServiceRelationAvgIndicator indicator = new ServiceRelationAvgIndicator();
+ @Override public ServiceRelationServerCallsSumIndicator map2Data(Map<String, Object> dbMap) {
+ ServiceRelationServerCallsSumIndicator indicator = new ServiceRelationServerCallsSumIndicator();
indicator.setSourceServiceId(((Number)dbMap.get("source_service_id")).intValue());
indicator.setDestServiceId(((Number)dbMap.get("dest_service_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/source/Scope.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/SumIndicator.java
similarity index 50%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Scope.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/SumIndicator.java
index 43c1ef3..0883dc1 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/analysis/indicator/SumIndicator.java
@@ -16,12 +16,36 @@
*
*/
-package org.apache.skywalking.oap.server.core.source;
+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
*/
-public enum Scope {
- All, Service, ServiceInstance, Endpoint, ServiceRelation, ServiceInstanceRelation, EndpointRelation, NetworkAddress,
- ServiceInstanceJVMCPU, ServiceInstanceJVMMemory, ServiceInstanceJVMMemoryPool, ServiceInstanceJVMGC
+@IndicatorOperator
+public abstract class SumIndicator extends Indicator implements LongValueHolder {
+
+ protected static final String VALUE = "value";
+
+ @Getter @Setter @Column(columnName = VALUE) private long value;
+
+ @Entrance
+ public final void combine(@ConstOne long count) {
+ this.value += count;
+ }
+
+ @Override public final void combine(Indicator indicator) {
+ SumIndicator sumIndicator = (SumIndicator)indicator;
+ combine(sumIndicator.value);
+ }
+
+ @Override public void calculate() {
+ }
+
+ @Override public long getValue() {
+ return value;
+ }
}
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-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceComponentDispatcher.java
similarity index 63%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/service/ServiceDispatcher.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceComponentDispatcher.java
index cdef6a8..9b29042 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/service/ServiceDispatcher.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceComponentDispatcher.java
@@ -16,30 +16,27 @@
*
*/
-package org.apache.skywalking.oap.server.core.analysis.generated.service;
+package org.apache.skywalking.oap.server.core.analysis.manual.service;
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.*;
+import org.apache.skywalking.oap.server.core.source.ServiceComponent;
/**
- * 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<Service> {
+public class ServiceComponentDispatcher implements SourceDispatcher<ServiceComponent> {
- @Override public void dispatch(Service source) {
- doServiceAvg(source);
+ @Override public void dispatch(ServiceComponent source) {
+ doDispatch(source);
}
- private void doServiceAvg(Service source) {
- ServiceAvgIndicator indicator = new ServiceAvgIndicator();
-
+ private void doDispatch(ServiceComponent source) {
+ ServiceComponentIndicator indicator = new ServiceComponentIndicator();
indicator.setTimeBucket(source.getTimeBucket());
- indicator.setId(source.getId());
- indicator.combine(source.getLatency(), 1);
+ indicator.setServiceId(source.getServiceId());
+ indicator.setComponentId(source.getComponentId());
IndicatorProcess.INSTANCE.in(indicator);
}
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceComponentIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceComponentIndicator.java
new file mode 100644
index 0000000..406943c
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceComponentIndicator.java
@@ -0,0 +1,122 @@
+/*
+ * 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.manual.service;
+
+import java.util.*;
+import lombok.*;
+import org.apache.skywalking.oap.server.core.Const;
+import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
+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.*;
+
+/**
+ * @author peng-yongsheng
+ */
+@IndicatorType
+@StreamData
+@StorageEntity(name = "service_component", builder = ServiceComponentIndicator.Builder.class)
+public class ServiceComponentIndicator extends Indicator {
+
+ private static final String SERVICE_ID = "service_id";
+ private static final String COMPONENT_ID = "component_id";
+
+ @Setter @Getter @Column(columnName = SERVICE_ID) private int serviceId;
+ @Setter @Getter @Column(columnName = COMPONENT_ID) private int componentId;
+
+ @Override public String id() {
+ String splitJointId = String.valueOf(getTimeBucket());
+ splitJointId += Const.ID_SPLIT + String.valueOf(serviceId);
+ splitJointId += Const.ID_SPLIT + String.valueOf(componentId);
+ return splitJointId;
+ }
+
+ @Override public int hashCode() {
+ int result = 17;
+ result = 31 * result + serviceId;
+ result = 31 * result + componentId;
+ 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;
+
+ ServiceComponentIndicator indicator = (ServiceComponentIndicator)obj;
+ if (serviceId != indicator.serviceId)
+ return false;
+ if (componentId != indicator.componentId)
+ 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.setDataIntegers(0, getServiceId());
+ remoteBuilder.setDataIntegers(1, getComponentId());
+
+ return remoteBuilder;
+ }
+
+ @Override public void deserialize(RemoteData remoteData) {
+ setTimeBucket(remoteData.getDataLongs(0));
+
+ setServiceId(remoteData.getDataIntegers(0));
+ setComponentId(remoteData.getDataIntegers(1));
+ }
+
+ @Override public void calculate() {
+ }
+
+ @Override public final void combine(Indicator indicator) {
+ }
+
+ public static class Builder implements StorageBuilder<ServiceComponentIndicator> {
+
+ @Override public Map<String, Object> data2Map(ServiceComponentIndicator storageData) {
+ Map<String, Object> map = new HashMap<>();
+ map.put(SERVICE_ID, storageData.getServiceId());
+ map.put(COMPONENT_ID, storageData.getComponentId());
+ map.put(TIME_BUCKET, storageData.getTimeBucket());
+ return map;
+ }
+
+ @Override public ServiceComponentIndicator map2Data(Map<String, Object> dbMap) {
+ ServiceComponentIndicator indicator = new ServiceComponentIndicator();
+ indicator.setServiceId(((Number)dbMap.get(SERVICE_ID)).intValue());
+ indicator.setComponentId(((Number)dbMap.get(COMPONENT_ID)).intValue());
+ 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/service/ServiceDispatcher.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceMappingDispatcher.java
similarity index 63%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/service/ServiceDispatcher.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceMappingDispatcher.java
index cdef6a8..7efb503 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/generated/service/ServiceDispatcher.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceMappingDispatcher.java
@@ -16,30 +16,27 @@
*
*/
-package org.apache.skywalking.oap.server.core.analysis.generated.service;
+package org.apache.skywalking.oap.server.core.analysis.manual.service;
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.*;
+import org.apache.skywalking.oap.server.core.source.ServiceMapping;
/**
- * 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<Service> {
+public class ServiceMappingDispatcher implements SourceDispatcher<ServiceMapping> {
- @Override public void dispatch(Service source) {
- doServiceAvg(source);
+ @Override public void dispatch(ServiceMapping source) {
+ doDispatch(source);
}
- private void doServiceAvg(Service source) {
- ServiceAvgIndicator indicator = new ServiceAvgIndicator();
-
+ private void doDispatch(ServiceMapping source) {
+ ServiceMappingIndicator indicator = new ServiceMappingIndicator();
indicator.setTimeBucket(source.getTimeBucket());
- indicator.setId(source.getId());
- indicator.combine(source.getLatency(), 1);
+ indicator.setServiceId(source.getServiceId());
+ indicator.setMappingServiceId(source.getMappingServiceId());
IndicatorProcess.INSTANCE.in(indicator);
}
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceMappingIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceMappingIndicator.java
new file mode 100644
index 0000000..808fcae
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceMappingIndicator.java
@@ -0,0 +1,122 @@
+/*
+ * 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.manual.service;
+
+import java.util.*;
+import lombok.*;
+import org.apache.skywalking.oap.server.core.Const;
+import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
+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.*;
+
+/**
+ * @author peng-yongsheng
+ */
+@IndicatorType
+@StreamData
+@StorageEntity(name = "service_mapping", builder = ServiceMappingIndicator.Builder.class)
+public class ServiceMappingIndicator extends Indicator {
+
+ private static final String SERVICE_ID = "service_id";
+ private static final String MAPPING_SERVICE_ID = "mapping_service_id";
+
+ @Setter @Getter @Column(columnName = SERVICE_ID) private int serviceId;
+ @Setter @Getter @Column(columnName = MAPPING_SERVICE_ID) private int mappingServiceId;
+
+ @Override public String id() {
+ String splitJointId = String.valueOf(getTimeBucket());
+ splitJointId += Const.ID_SPLIT + String.valueOf(serviceId);
+ splitJointId += Const.ID_SPLIT + String.valueOf(mappingServiceId);
+ return splitJointId;
+ }
+
+ @Override public int hashCode() {
+ int result = 17;
+ result = 31 * result + serviceId;
+ result = 31 * result + mappingServiceId;
+ 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;
+
+ ServiceMappingIndicator indicator = (ServiceMappingIndicator)obj;
+ if (serviceId != indicator.serviceId)
+ return false;
+ if (mappingServiceId != indicator.mappingServiceId)
+ 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.setDataIntegers(0, getServiceId());
+ remoteBuilder.setDataIntegers(1, getMappingServiceId());
+
+ return remoteBuilder;
+ }
+
+ @Override public void deserialize(RemoteData remoteData) {
+ setTimeBucket(remoteData.getDataLongs(0));
+
+ setServiceId(remoteData.getDataIntegers(0));
+ setMappingServiceId(remoteData.getDataIntegers(1));
+ }
+
+ @Override public void calculate() {
+ }
+
+ @Override public final void combine(Indicator indicator) {
+ }
+
+ public static class Builder implements StorageBuilder<ServiceMappingIndicator> {
+
+ @Override public Map<String, Object> data2Map(ServiceMappingIndicator storageData) {
+ Map<String, Object> map = new HashMap<>();
+ map.put(SERVICE_ID, storageData.getServiceId());
+ map.put(MAPPING_SERVICE_ID, storageData.getMappingServiceId());
+ map.put(TIME_BUCKET, storageData.getTimeBucket());
+ return map;
+ }
+
+ @Override public ServiceMappingIndicator map2Data(Map<String, Object> dbMap) {
+ ServiceMappingIndicator indicator = new ServiceMappingIndicator();
+ indicator.setServiceId(((Number)dbMap.get(SERVICE_ID)).intValue());
+ indicator.setMappingServiceId(((Number)dbMap.get(MAPPING_SERVICE_ID)).intValue());
+ 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/source/Scope.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Scope.java
index 43c1ef3..396ecab 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
@@ -23,5 +23,6 @@ package org.apache.skywalking.oap.server.core.source;
*/
public enum Scope {
All, Service, ServiceInstance, Endpoint, ServiceRelation, ServiceInstanceRelation, EndpointRelation, NetworkAddress,
- ServiceInstanceJVMCPU, ServiceInstanceJVMMemory, ServiceInstanceJVMMemoryPool, ServiceInstanceJVMGC
+ ServiceInstanceJVMCPU, ServiceInstanceJVMMemory, ServiceInstanceJVMMemoryPool, ServiceInstanceJVMGC,
+ ServiceComponent, ServiceMapping
}
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/ServiceComponent.java
similarity index 73%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Scope.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceComponent.java
index 43c1ef3..338dc65 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/ServiceComponent.java
@@ -18,10 +18,19 @@
package org.apache.skywalking.oap.server.core.source;
+import lombok.*;
+import org.apache.skywalking.oap.server.core.source.annotation.SourceType;
+
/**
* @author peng-yongsheng
*/
-public enum Scope {
- All, Service, ServiceInstance, Endpoint, ServiceRelation, ServiceInstanceRelation, EndpointRelation, NetworkAddress,
- ServiceInstanceJVMCPU, ServiceInstanceJVMMemory, ServiceInstanceJVMMemoryPool, ServiceInstanceJVMGC
+@SourceType
+public class ServiceComponent extends Source {
+
+ @Override public Scope scope() {
+ return Scope.ServiceComponent;
+ }
+
+ @Getter @Setter private int serviceId;
+ @Getter @Setter private int componentId;
}
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/ServiceMapping.java
similarity index 73%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Scope.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceMapping.java
index 43c1ef3..e325781 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/ServiceMapping.java
@@ -18,10 +18,19 @@
package org.apache.skywalking.oap.server.core.source;
+import lombok.*;
+import org.apache.skywalking.oap.server.core.source.annotation.SourceType;
+
/**
* @author peng-yongsheng
*/
-public enum Scope {
- All, Service, ServiceInstance, Endpoint, ServiceRelation, ServiceInstanceRelation, EndpointRelation, NetworkAddress,
- ServiceInstanceJVMCPU, ServiceInstanceJVMMemory, ServiceInstanceJVMMemoryPool, ServiceInstanceJVMGC
+@SourceType
+public class ServiceMapping extends Source {
+
+ @Override public Scope scope() {
+ return Scope.ServiceMapping;
+ }
+
+ @Getter @Setter private int serviceId;
+ @Getter @Setter private int mappingServiceId;
}
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol b/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol
index 1492514..c6ee5d1 160000
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol
@@ -1 +1 @@
-Subproject commit 149251420c887552df93d5c76f67ccdd47cb71ce
+Subproject commit c6ee5d15f38024c3be61be579eac4035ffbfd4bf
diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceModuleProvider.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceModuleProvider.java
index c40bdcf..3adfd1f 100644
--- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceModuleProvider.java
+++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceModuleProvider.java
@@ -26,6 +26,7 @@ import org.apache.skywalking.oap.server.receiver.trace.module.TraceModule;
import org.apache.skywalking.oap.server.receiver.trace.provider.handler.TraceSegmentServiceHandler;
import org.apache.skywalking.oap.server.receiver.trace.provider.parser.SegmentParserListenerManager;
import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.endpoint.MultiScopesSpanListener;
+import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.service.*;
/**
* @author peng-yongsheng
@@ -50,6 +51,8 @@ public class TraceModuleProvider extends ModuleProvider {
@Override public void start() throws ModuleStartException {
SegmentParserListenerManager listenerManager = new SegmentParserListenerManager();
listenerManager.add(new MultiScopesSpanListener.Factory());
+ listenerManager.add(new ServiceComponentSpanListener.Factory());
+ listenerManager.add(new ServiceMappingSpanListener.Factory());
GRPCHandlerRegister grpcHandlerRegister = getManager().find(CoreModule.NAME).getService(GRPCHandlerRegister.class);
try {
diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/service/ServiceComponentSpanListener.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/service/ServiceComponentSpanListener.java
new file mode 100644
index 0000000..cf296e5
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/service/ServiceComponentSpanListener.java
@@ -0,0 +1,77 @@
+/*
+ * 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.trace.provider.parser.listener.service;
+
+import java.util.*;
+import org.apache.skywalking.oap.server.core.CoreModule;
+import org.apache.skywalking.oap.server.core.cache.ServiceInventoryCache;
+import org.apache.skywalking.oap.server.core.source.*;
+import org.apache.skywalking.oap.server.library.module.ModuleManager;
+import org.apache.skywalking.oap.server.receiver.trace.provider.parser.decorator.*;
+import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.*;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ServiceComponentSpanListener implements EntrySpanListener, ExitSpanListener {
+
+ private final SourceReceiver sourceReceiver;
+ private final ServiceInventoryCache serviceInventoryCache;
+ private final List<ServiceComponent> serviceComponents = new LinkedList<>();
+
+ private ServiceComponentSpanListener(ModuleManager moduleManager) {
+ this.sourceReceiver = moduleManager.find(CoreModule.NAME).getService(SourceReceiver.class);
+ this.serviceInventoryCache = moduleManager.find(CoreModule.NAME).getService(ServiceInventoryCache.class);
+ }
+
+ @Override public boolean containsPoint(Point point) {
+ return Point.Entry.equals(point) || Point.Exit.equals(point);
+ }
+
+ @Override
+ public void parseExit(SpanDecorator spanDecorator, SegmentCoreInfo segmentCoreInfo) {
+ int serviceIdByPeerId = serviceInventoryCache.getServiceId(spanDecorator.getPeerId());
+
+ ServiceComponent serviceComponent = new ServiceComponent();
+ serviceComponent.setServiceId(serviceIdByPeerId);
+ serviceComponent.setComponentId(spanDecorator.getComponentId());
+ serviceComponent.setTimeBucket(segmentCoreInfo.getMinuteTimeBucket());
+ serviceComponents.add(serviceComponent);
+ }
+
+ @Override
+ public void parseEntry(SpanDecorator spanDecorator, SegmentCoreInfo segmentCoreInfo) {
+ ServiceComponent serviceComponent = new ServiceComponent();
+ serviceComponent.setServiceId(segmentCoreInfo.getApplicationId());
+ serviceComponent.setComponentId(spanDecorator.getComponentId());
+ serviceComponent.setTimeBucket(segmentCoreInfo.getMinuteTimeBucket());
+ serviceComponents.add(serviceComponent);
+ }
+
+ @Override public void build() {
+ serviceComponents.forEach(sourceReceiver::receive);
+ }
+
+ public static class Factory implements SpanListenerFactory {
+
+ @Override public SpanListener create(ModuleManager moduleManager) {
+ return new ServiceComponentSpanListener(moduleManager);
+ }
+ }
+}
diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/service/ServiceMappingSpanListener.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/service/ServiceMappingSpanListener.java
new file mode 100644
index 0000000..a9bc5a5
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/service/ServiceMappingSpanListener.java
@@ -0,0 +1,86 @@
+/*
+ * 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.trace.provider.parser.listener.service;
+
+import java.util.*;
+import org.apache.skywalking.apm.network.language.agent.SpanLayer;
+import org.apache.skywalking.oap.server.core.CoreModule;
+import org.apache.skywalking.oap.server.core.cache.ServiceInventoryCache;
+import org.apache.skywalking.oap.server.core.source.*;
+import org.apache.skywalking.oap.server.library.module.ModuleManager;
+import org.apache.skywalking.oap.server.receiver.trace.provider.parser.decorator.*;
+import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.*;
+import org.slf4j.*;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ServiceMappingSpanListener implements EntrySpanListener {
+
+ private static final Logger logger = LoggerFactory.getLogger(ServiceMappingSpanListener.class);
+
+ private final SourceReceiver sourceReceiver;
+ private final ServiceInventoryCache serviceInventoryCache;
+ private List<ServiceMapping> serviceMappings = new LinkedList<>();
+
+ private ServiceMappingSpanListener(ModuleManager moduleManager) {
+ this.sourceReceiver = moduleManager.find(CoreModule.NAME).getService(SourceReceiver.class);
+ this.serviceInventoryCache = moduleManager.find(CoreModule.NAME).getService(ServiceInventoryCache.class);
+ }
+
+ @Override public boolean containsPoint(Point point) {
+ return Point.Entry.equals(point);
+ }
+
+ @Override public void parseEntry(SpanDecorator spanDecorator, SegmentCoreInfo segmentCoreInfo) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("service mapping listener parse reference");
+ }
+
+ if (!spanDecorator.getSpanLayer().equals(SpanLayer.MQ)) {
+ if (spanDecorator.getRefsCount() > 0) {
+ for (int i = 0; i < spanDecorator.getRefsCount(); i++) {
+ ServiceMapping serviceMapping = new ServiceMapping();
+ serviceMapping.setServiceId(segmentCoreInfo.getApplicationId());
+
+ int addressId = spanDecorator.getRefs(i).getNetworkAddressId();
+ int mappingServiceId = serviceInventoryCache.getServiceId(addressId);
+ serviceMapping.setMappingServiceId(mappingServiceId);
+ serviceMapping.setTimeBucket(segmentCoreInfo.getMinuteTimeBucket());
+ serviceMappings.add(serviceMapping);
+ }
+ }
+ }
+ }
+
+ @Override public void build() {
+ if (logger.isDebugEnabled()) {
+ logger.debug("service mapping listener build");
+ }
+
+ serviceMappings.forEach(sourceReceiver::receive);
+ }
+
+ public static class Factory implements SpanListenerFactory {
+
+ @Override public SpanListener create(ModuleManager moduleManager) {
+ return new ServiceMappingSpanListener(moduleManager);
+ }
+ }
+}