Service reference metric test ok.
This commit is contained in:
parent
a9ae31df8d
commit
6b20b3e30d
|
|
@ -14,7 +14,7 @@
|
|||
24040000
|
||||
],
|
||||
"ai": -1,
|
||||
"ii": 1,
|
||||
"ii": 2,
|
||||
"rs": [],
|
||||
"ss": [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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<ServiceReferenceMetric> entryReferenceMetric = new LinkedList<>();
|
||||
private List<ServiceReferenceMetric> exitReferenceMetric = new LinkedList<>();
|
||||
private final InstanceCacheService instanceCacheService;
|
||||
private final ApplicationCacheService applicationCacheService;
|
||||
private final List<ServiceReferenceMetric> entryReferenceMetric;
|
||||
private List<ServiceReferenceMetric> 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -60,9 +60,9 @@ public class ApplicationRegisterSerialWorker extends AbstractLocalAsyncWorker<Ap
|
|||
Application newApplication;
|
||||
int min = applicationRegisterDAO.getMinApplicationId();
|
||||
if (min == 0) {
|
||||
Application userApplication = new Application(String.valueOf(Const.USER_ID));
|
||||
Application userApplication = new Application(String.valueOf(Const.NONE_APPLICATION_ID));
|
||||
userApplication.setApplicationCode(Const.USER_CODE);
|
||||
userApplication.setApplicationId(Const.USER_ID);
|
||||
userApplication.setApplicationId(Const.NONE_APPLICATION_ID);
|
||||
userApplication.setAddressId(Const.NONE);
|
||||
userApplication.setIsAddress(false);
|
||||
applicationRegisterDAO.save(userApplication);
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import org.apache.skywalking.apm.collector.analysis.worker.model.base.WorkerExce
|
|||
import org.apache.skywalking.apm.collector.cache.CacheModule;
|
||||
import org.apache.skywalking.apm.collector.cache.service.InstanceCacheService;
|
||||
import org.apache.skywalking.apm.collector.core.module.ModuleManager;
|
||||
import org.apache.skywalking.apm.collector.core.util.Const;
|
||||
import org.apache.skywalking.apm.collector.storage.StorageModule;
|
||||
import org.apache.skywalking.apm.collector.storage.dao.IInstanceRegisterDAO;
|
||||
import org.apache.skywalking.apm.collector.storage.table.register.Instance;
|
||||
|
|
@ -60,8 +61,19 @@ public class InstanceRegisterSerialWorker extends AbstractLocalAsyncWorker<Insta
|
|||
int min = instanceRegisterDAO.getMinInstanceId();
|
||||
int max = instanceRegisterDAO.getMaxInstanceId();
|
||||
if (min == 0 && max == 0) {
|
||||
newInstance = new Instance("1");
|
||||
newInstance.setInstanceId(1);
|
||||
Instance userInstance = new Instance(String.valueOf(Const.NONE_INSTANCE_ID));
|
||||
userInstance.setInstanceId(Const.NONE_INSTANCE_ID);
|
||||
userInstance.setApplicationId(Const.NONE_APPLICATION_ID);
|
||||
userInstance.setAgentUUID(Const.USER_CODE);
|
||||
userInstance.setHeartBeatTime(System.currentTimeMillis());
|
||||
userInstance.setOsInfo(Const.EMPTY_STRING);
|
||||
userInstance.setRegisterTime(System.currentTimeMillis());
|
||||
userInstance.setAddressId(Const.NONE);
|
||||
userInstance.setIsAddress(false);
|
||||
instanceRegisterDAO.save(userInstance);
|
||||
|
||||
newInstance = new Instance("2");
|
||||
newInstance.setInstanceId(2);
|
||||
newInstance.setApplicationId(instance.getApplicationId());
|
||||
newInstance.setAgentUUID(instance.getAgentUUID());
|
||||
newInstance.setHeartBeatTime(instance.getHeartBeatTime());
|
||||
|
|
|
|||
|
|
@ -24,9 +24,9 @@ package org.apache.skywalking.apm.collector.core.util;
|
|||
public class Const {
|
||||
public static final int NONE = 0;
|
||||
public static final String ID_SPLIT = "_";
|
||||
public static final int USER_ID = 1;
|
||||
public static final int NONE_SERVICE_ID = 1;
|
||||
public static final int NONE_APPLICATION_ID = 1;
|
||||
public static final int NONE_INSTANCE_ID = 1;
|
||||
public static final int NONE_SERVICE_ID = 1;
|
||||
public static final String NONE_SERVICE_NAME = "None";
|
||||
public static final String USER_CODE = "User";
|
||||
public static final String SEGMENT_SPAN_SPLIT = "S";
|
||||
|
|
|
|||
Loading…
Reference in New Issue