提交 6b20b3e3 编写于 作者: P peng-yongsheng

Service reference metric test ok.

上级 a9ae31df
......@@ -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";
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册