From 6b20b3e30dff194bc71b622432fe8a630b0c7018 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Wed, 3 Jan 2018 14:40:59 +0800 Subject: [PATCH] Service reference metric test ok. --- .../test/resources/json/dubbox-consumer.json | 2 +- .../test/resources/json/dubbox-provider.json | 6 +-- .../ServiceReferenceMetricSpanListener.java | 51 +++++++++++-------- .../ApplicationRegisterSerialWorker.java | 4 +- .../InstanceRegisterSerialWorker.java | 16 +++++- .../apm/collector/core/util/Const.java | 4 +- 6 files changed, 51 insertions(+), 32 deletions(-) diff --git a/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/test/resources/json/dubbox-consumer.json b/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/test/resources/json/dubbox-consumer.json index 453dce3ebe..4c80222bdf 100644 --- a/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/test/resources/json/dubbox-consumer.json +++ b/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/test/resources/json/dubbox-consumer.json @@ -14,7 +14,7 @@ 24040000 ], "ai": -1, - "ii": 1, + "ii": 2, "rs": [], "ss": [ { diff --git a/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/test/resources/json/dubbox-provider.json b/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/test/resources/json/dubbox-provider.json index a566c2850b..e446706f2e 100644 --- a/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/test/resources/json/dubbox-provider.json +++ b/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/test/resources/json/dubbox-provider.json @@ -14,7 +14,7 @@ 48780000 ], "ai": 2, - "ii": 2, + "ii": 3, "ss": [ { "si": 0, @@ -37,13 +37,13 @@ 185809, 24040000 ], - "pii": 1, + "pii": 2, "psp": 0, "psi": 0, "psn": "/dubbox-case/case/dubbox-rest", "ni": 0, "nn": "172.25.0.4:20880", - "eii": 1, + "eii": 2, "esi": 0, "esn": "/dubbox-case/case/dubbox-rest", "rn": 0 diff --git a/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/service/ServiceReferenceMetricSpanListener.java b/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/service/ServiceReferenceMetricSpanListener.java index 076072bcc4..fe23c5b7b7 100644 --- a/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/service/ServiceReferenceMetricSpanListener.java +++ b/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/service/ServiceReferenceMetricSpanListener.java @@ -30,6 +30,7 @@ import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listen import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.SpanListener; import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.SpanListenerFactory; import org.apache.skywalking.apm.collector.cache.CacheModule; +import org.apache.skywalking.apm.collector.cache.service.ApplicationCacheService; import org.apache.skywalking.apm.collector.cache.service.InstanceCacheService; import org.apache.skywalking.apm.collector.core.graph.Graph; import org.apache.skywalking.apm.collector.core.graph.GraphManager; @@ -49,14 +50,18 @@ public class ServiceReferenceMetricSpanListener implements FirstSpanListener, En private final Logger logger = LoggerFactory.getLogger(ServiceReferenceMetricSpanListener.class); - private InstanceCacheService instanceCacheService; - private List entryReferenceMetric = new LinkedList<>(); - private List exitReferenceMetric = new LinkedList<>(); + private final InstanceCacheService instanceCacheService; + private final ApplicationCacheService applicationCacheService; + private final List entryReferenceMetric; + private List exitReferenceMetric; private SpanDecorator entrySpanDecorator; private long timeBucket; public ServiceReferenceMetricSpanListener(ModuleManager moduleManager) { + this.entryReferenceMetric = new LinkedList<>(); + this.exitReferenceMetric = new LinkedList<>(); this.instanceCacheService = moduleManager.find(CacheModule.NAME).getService(InstanceCacheService.class); + this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class); } @Override @@ -79,20 +84,20 @@ public class ServiceReferenceMetricSpanListener implements FirstSpanListener, En serviceReferenceMetric.setBehindInstanceId(instanceId); serviceReferenceMetric.setBehindApplicationId(applicationId); serviceReferenceMetric.setSourceValue(MetricSource.Callee.getValue()); - calculateDuration(serviceReferenceMetric, spanDecorator, true); + calculateDuration(serviceReferenceMetric, spanDecorator); entryReferenceMetric.add(serviceReferenceMetric); } } else { ServiceReferenceMetric serviceReferenceMetric = new ServiceReferenceMetric(Const.EMPTY_STRING); serviceReferenceMetric.setFrontServiceId(Const.NONE_SERVICE_ID); - serviceReferenceMetric.setFrontInstanceId(instanceId); - serviceReferenceMetric.setFrontApplicationId(applicationId); + serviceReferenceMetric.setFrontInstanceId(Const.NONE_INSTANCE_ID); + serviceReferenceMetric.setFrontApplicationId(Const.NONE_APPLICATION_ID); serviceReferenceMetric.setBehindServiceId(spanDecorator.getOperationNameId()); serviceReferenceMetric.setBehindInstanceId(instanceId); serviceReferenceMetric.setBehindApplicationId(applicationId); serviceReferenceMetric.setSourceValue(MetricSource.Callee.getValue()); - calculateDuration(serviceReferenceMetric, spanDecorator, false); + calculateDuration(serviceReferenceMetric, spanDecorator); entryReferenceMetric.add(serviceReferenceMetric); } this.entrySpanDecorator = spanDecorator; @@ -101,18 +106,22 @@ public class ServiceReferenceMetricSpanListener implements FirstSpanListener, En @Override public void parseExit(SpanDecorator spanDecorator, int applicationId, int instanceId, String segmentId) { ServiceReferenceMetric serviceReferenceMetric = new ServiceReferenceMetric(Const.EMPTY_STRING); - serviceReferenceMetric.setFrontApplicationId(applicationId); + int peerId = spanDecorator.getPeerId(); + int behindApplicationId = applicationCacheService.getApplicationIdByAddressId(peerId); + int behindInstanceId = instanceCacheService.getInstanceIdByAddressId(behindApplicationId, peerId); + + serviceReferenceMetric.setFrontServiceId(Const.NONE_SERVICE_ID); serviceReferenceMetric.setFrontInstanceId(instanceId); -// serviceReferenceMetric.setBehindApplicationId(); -// serviceReferenceMetric.setBehindInstanceId(); + serviceReferenceMetric.setFrontApplicationId(applicationId); serviceReferenceMetric.setBehindServiceId(spanDecorator.getOperationNameId()); + serviceReferenceMetric.setBehindInstanceId(behindInstanceId); + serviceReferenceMetric.setBehindApplicationId(behindApplicationId); serviceReferenceMetric.setSourceValue(MetricSource.Caller.getValue()); - calculateDuration(serviceReferenceMetric, spanDecorator, true); + calculateDuration(serviceReferenceMetric, spanDecorator); exitReferenceMetric.add(serviceReferenceMetric); } - private void calculateDuration(ServiceReferenceMetric serviceReferenceMetric, SpanDecorator spanDecorator, - boolean hasReference) { + private void calculateDuration(ServiceReferenceMetric serviceReferenceMetric, SpanDecorator spanDecorator) { long duration = spanDecorator.getEndTime() - spanDecorator.getStartTime(); if (spanDecorator.getIsError()) { @@ -122,15 +131,6 @@ public class ServiceReferenceMetricSpanListener implements FirstSpanListener, En serviceReferenceMetric.setTransactionCalls(1L); serviceReferenceMetric.setTransactionDurationSum(duration); - if (hasReference) { - if (spanDecorator.getIsError()) { - serviceReferenceMetric.setBusinessTransactionErrorCalls(1L); - serviceReferenceMetric.setBusinessTransactionErrorDurationSum(duration); - } - serviceReferenceMetric.setBusinessTransactionCalls(1L); - serviceReferenceMetric.setBusinessTransactionDurationSum(duration); - } - if (SpanLayer.MQ.equals(spanDecorator.getSpanLayer())) { if (spanDecorator.getIsError()) { serviceReferenceMetric.setMqTransactionErrorCalls(1L); @@ -138,6 +138,13 @@ public class ServiceReferenceMetricSpanListener implements FirstSpanListener, En } serviceReferenceMetric.setMqTransactionCalls(1L); serviceReferenceMetric.setMqTransactionDurationSum(duration); + } else { + if (spanDecorator.getIsError()) { + serviceReferenceMetric.setBusinessTransactionErrorCalls(1L); + serviceReferenceMetric.setBusinessTransactionErrorDurationSum(duration); + } + serviceReferenceMetric.setBusinessTransactionCalls(1L); + serviceReferenceMetric.setBusinessTransactionDurationSum(duration); } } diff --git a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/ApplicationRegisterSerialWorker.java b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/ApplicationRegisterSerialWorker.java index e76bbfaefa..09ec04af0e 100644 --- a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/ApplicationRegisterSerialWorker.java +++ b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/ApplicationRegisterSerialWorker.java @@ -60,9 +60,9 @@ public class ApplicationRegisterSerialWorker extends AbstractLocalAsyncWorker