Get conjectural node component name from component server name. (#1165)
This commit is contained in:
parent
4fc5cc3318
commit
bb1efe5d60
|
|
@ -18,21 +18,17 @@
|
|||
|
||||
package org.apache.skywalking.apm.collector.ui.query;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.List;
|
||||
import org.apache.skywalking.apm.collector.core.module.ModuleManager;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.application.Application;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.common.Duration;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.common.Topology;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.common.*;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.server.AppServerInfo;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.service.ServiceMetric;
|
||||
import org.apache.skywalking.apm.collector.ui.graphql.Query;
|
||||
import org.apache.skywalking.apm.collector.ui.service.ApplicationService;
|
||||
import org.apache.skywalking.apm.collector.ui.service.ApplicationTopologyService;
|
||||
import org.apache.skywalking.apm.collector.ui.service.ServerService;
|
||||
import org.apache.skywalking.apm.collector.ui.service.*;
|
||||
import org.apache.skywalking.apm.collector.ui.utils.DurationUtils;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.List;
|
||||
|
||||
import static java.util.Objects.isNull;
|
||||
|
||||
/**
|
||||
|
|
@ -70,7 +66,7 @@ public class ApplicationQuery implements Query {
|
|||
return serverService;
|
||||
}
|
||||
|
||||
public List<Application> getAllApplication(Duration duration) throws ParseException {
|
||||
public List<Application> getAllApplication(Duration duration) {
|
||||
long startSecondTimeBucket = DurationUtils.INSTANCE.startTimeDurationToSecondTimeBucket(duration.getStep(), duration.getStart());
|
||||
long endSecondTimeBucket = DurationUtils.INSTANCE.endTimeDurationToSecondTimeBucket(duration.getStep(), duration.getEnd());
|
||||
|
||||
|
|
@ -88,7 +84,7 @@ public class ApplicationQuery implements Query {
|
|||
}
|
||||
|
||||
public List<ServiceMetric> getSlowService(int applicationId, Duration duration,
|
||||
Integer topN) throws ParseException {
|
||||
Integer topN) {
|
||||
long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart());
|
||||
long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd());
|
||||
|
||||
|
|
|
|||
|
|
@ -21,22 +21,11 @@ package org.apache.skywalking.apm.collector.ui.query;
|
|||
import java.text.ParseException;
|
||||
import java.util.List;
|
||||
import org.apache.skywalking.apm.collector.core.module.ModuleManager;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.common.Duration;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.common.Topology;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.common.ValueType;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.overview.AlarmTrend;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.overview.ApplicationThroughput;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.overview.ClusterBrief;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.overview.ConjecturalAppBrief;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.overview.Thermodynamic;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.common.*;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.overview.*;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.service.ServiceMetric;
|
||||
import org.apache.skywalking.apm.collector.ui.graphql.Query;
|
||||
import org.apache.skywalking.apm.collector.ui.service.AlarmService;
|
||||
import org.apache.skywalking.apm.collector.ui.service.ApplicationService;
|
||||
import org.apache.skywalking.apm.collector.ui.service.ClusterTopologyService;
|
||||
import org.apache.skywalking.apm.collector.ui.service.NetworkAddressService;
|
||||
import org.apache.skywalking.apm.collector.ui.service.ResponseTimeDistributionService;
|
||||
import org.apache.skywalking.apm.collector.ui.service.ServiceNameService;
|
||||
import org.apache.skywalking.apm.collector.ui.service.*;
|
||||
import org.apache.skywalking.apm.collector.ui.utils.DurationUtils;
|
||||
|
||||
import static java.util.Objects.isNull;
|
||||
|
|
@ -100,7 +89,7 @@ public class OverViewLayerQuery implements Query {
|
|||
return timeDistributionService;
|
||||
}
|
||||
|
||||
public Topology getClusterTopology(Duration duration) throws ParseException {
|
||||
public Topology getClusterTopology(Duration duration) {
|
||||
long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart());
|
||||
long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd());
|
||||
|
||||
|
|
@ -110,7 +99,7 @@ public class OverViewLayerQuery implements Query {
|
|||
return getClusterTopologyService().getClusterTopology(duration.getStep(), startTimeBucket, endTimeBucket, startSecondTimeBucket, endSecondTimeBucket);
|
||||
}
|
||||
|
||||
public ClusterBrief getClusterBrief(Duration duration) throws ParseException {
|
||||
public ClusterBrief getClusterBrief(Duration duration) {
|
||||
long startSecondTimeBucket = DurationUtils.INSTANCE.startTimeDurationToSecondTimeBucket(duration.getStep(), duration.getStart());
|
||||
long endSecondTimeBucket = DurationUtils.INSTANCE.endTimeDurationToSecondTimeBucket(duration.getStep(), duration.getEnd());
|
||||
|
||||
|
|
@ -133,14 +122,14 @@ public class OverViewLayerQuery implements Query {
|
|||
return getAlarmService().getApplicationAlarmTrend(duration.getStep(), startTimeBucket, endTimeBucket, startSecondTimeBucket, endSecondTimeBucket);
|
||||
}
|
||||
|
||||
public ConjecturalAppBrief getConjecturalApps(Duration duration) throws ParseException {
|
||||
public ConjecturalAppBrief getConjecturalApps(Duration duration) {
|
||||
long startSecondTimeBucket = DurationUtils.INSTANCE.startTimeDurationToSecondTimeBucket(duration.getStep(), duration.getStart());
|
||||
long endSecondTimeBucket = DurationUtils.INSTANCE.endTimeDurationToSecondTimeBucket(duration.getStep(), duration.getEnd());
|
||||
|
||||
return getApplicationService().getConjecturalApps(duration.getStep(), startSecondTimeBucket, endSecondTimeBucket);
|
||||
}
|
||||
|
||||
public List<ServiceMetric> getTopNSlowService(Duration duration, int topN) throws ParseException {
|
||||
public List<ServiceMetric> getTopNSlowService(Duration duration, int topN) {
|
||||
long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart());
|
||||
long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd());
|
||||
|
||||
|
|
|
|||
|
|
@ -18,25 +18,15 @@
|
|||
|
||||
package org.apache.skywalking.apm.collector.ui.service;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import org.apache.skywalking.apm.collector.configuration.ConfigurationModule;
|
||||
import org.apache.skywalking.apm.collector.configuration.service.IComponentLibraryCatalogService;
|
||||
import org.apache.skywalking.apm.collector.core.module.ModuleManager;
|
||||
import org.apache.skywalking.apm.collector.storage.StorageModule;
|
||||
import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationComponentUIDAO;
|
||||
import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMappingUIDAO;
|
||||
import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMetricUIDAO;
|
||||
import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationReferenceMetricUIDAO;
|
||||
import org.apache.skywalking.apm.collector.storage.dao.ui.*;
|
||||
import org.apache.skywalking.apm.collector.storage.table.MetricSource;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.common.Step;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.common.Topology;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.common.*;
|
||||
import org.slf4j.*;
|
||||
|
||||
/**
|
||||
* @author peng-yongsheng
|
||||
|
|
@ -62,7 +52,7 @@ public class ApplicationTopologyService {
|
|||
}
|
||||
|
||||
public Topology getApplicationTopology(Step step, int applicationId, long startTimeBucket,
|
||||
long endTimeBucket, long startSecondTimeBucket, long endSecondTimeBucket) throws ParseException {
|
||||
long endTimeBucket, long startSecondTimeBucket, long endSecondTimeBucket) {
|
||||
logger.debug("startTimeBucket: {}, endTimeBucket: {}", startTimeBucket, endTimeBucket);
|
||||
List<IApplicationComponentUIDAO.ApplicationComponent> applicationComponents = applicationComponentUIDAO.load(step, startTimeBucket, endTimeBucket);
|
||||
List<IApplicationMappingUIDAO.ApplicationMapping> applicationMappings = applicationMappingUIDAO.load(step, startTimeBucket, endTimeBucket);
|
||||
|
|
|
|||
|
|
@ -61,7 +61,8 @@ class TopologyBuilder {
|
|||
List<IApplicationReferenceMetricUIDAO.ApplicationReferenceMetric> callerReferenceMetric,
|
||||
List<IApplicationReferenceMetricUIDAO.ApplicationReferenceMetric> calleeReferenceMetric,
|
||||
Step step, long startTimeBucket, long endTimeBucket, long startSecondTimeBucket, long endSecondTimeBucket) {
|
||||
Map<Integer, String> components = changeNodeComp2Map(applicationComponents);
|
||||
Map<Integer, String> nodeCompMap = buildNodeCompMap(applicationComponents);
|
||||
Map<Integer, String> conjecturalNodeCompMap = buildConjecturalNodeCompMap(applicationComponents);
|
||||
Map<Integer, Integer> mappings = changeMapping2Map(applicationMappings);
|
||||
|
||||
filterZeroSourceOrTargetReference(callerReferenceMetric);
|
||||
|
|
@ -76,7 +77,7 @@ class TopologyBuilder {
|
|||
ApplicationNode applicationNode = new ApplicationNode();
|
||||
applicationNode.setId(applicationId);
|
||||
applicationNode.setName(application.getApplicationCode());
|
||||
applicationNode.setType(components.getOrDefault(application.getApplicationId(), Const.UNKNOWN));
|
||||
applicationNode.setType(nodeCompMap.getOrDefault(application.getApplicationId(), Const.UNKNOWN));
|
||||
|
||||
applicationNode.setSla(SLACalculator.INSTANCE.calculate(applicationMetric.getErrorCalls(), applicationMetric.getCalls()));
|
||||
try {
|
||||
|
|
@ -124,7 +125,7 @@ class TopologyBuilder {
|
|||
ConjecturalNode conjecturalNode = new ConjecturalNode();
|
||||
conjecturalNode.setId(target.getApplicationId());
|
||||
conjecturalNode.setName(target.getApplicationCode());
|
||||
conjecturalNode.setType(components.getOrDefault(target.getApplicationId(), Const.UNKNOWN));
|
||||
conjecturalNode.setType(conjecturalNodeCompMap.getOrDefault(target.getApplicationId(), Const.UNKNOWN));
|
||||
nodes.add(conjecturalNode);
|
||||
nodeIds.add(target.getApplicationId());
|
||||
}
|
||||
|
|
@ -135,7 +136,7 @@ class TopologyBuilder {
|
|||
ApplicationNode applicationNode = new ApplicationNode();
|
||||
applicationNode.setId(source.getApplicationId());
|
||||
applicationNode.setName(source.getApplicationCode());
|
||||
applicationNode.setType(components.getOrDefault(source.getApplicationId(), Const.UNKNOWN));
|
||||
applicationNode.setType(nodeCompMap.getOrDefault(source.getApplicationId(), Const.UNKNOWN));
|
||||
applicationNode.setApdex(100);
|
||||
applicationNode.setSla(100);
|
||||
nodes.add(applicationNode);
|
||||
|
|
@ -149,7 +150,7 @@ class TopologyBuilder {
|
|||
call.setTarget(actualTargetId);
|
||||
call.setTargetName(applicationCacheService.getApplicationById(actualTargetId).getApplicationCode());
|
||||
call.setAlert(false);
|
||||
call.setCallType(components.get(referenceMetric.getTarget()));
|
||||
call.setCallType(nodeCompMap.get(referenceMetric.getTarget()));
|
||||
try {
|
||||
call.setCpm(referenceMetric.getCalls() / dateBetweenService.minutesBetween(source.getApplicationId(), startSecondTimeBucket, endSecondTimeBucket));
|
||||
} catch (ParseException e) {
|
||||
|
|
@ -179,7 +180,7 @@ class TopologyBuilder {
|
|||
ConjecturalNode conjecturalNode = new ConjecturalNode();
|
||||
conjecturalNode.setId(source.getApplicationId());
|
||||
conjecturalNode.setName(source.getApplicationCode());
|
||||
conjecturalNode.setType(components.getOrDefault(source.getApplicationId(), Const.UNKNOWN));
|
||||
conjecturalNode.setType(conjecturalNodeCompMap.getOrDefault(target.getApplicationId(), Const.UNKNOWN));
|
||||
nodeIds.add(source.getApplicationId());
|
||||
nodes.add(conjecturalNode);
|
||||
}
|
||||
|
|
@ -195,7 +196,7 @@ class TopologyBuilder {
|
|||
if (source.getApplicationId() == Const.NONE_APPLICATION_ID) {
|
||||
call.setCallType(Const.EMPTY_STRING);
|
||||
} else {
|
||||
call.setCallType(components.get(referenceMetric.getTarget()));
|
||||
call.setCallType(nodeCompMap.get(referenceMetric.getTarget()));
|
||||
}
|
||||
try {
|
||||
call.setCpm(referenceMetric.getCalls() / dateBetweenService.minutesBetween(target.getApplicationId(), startSecondTimeBucket, endSecondTimeBucket));
|
||||
|
|
@ -239,7 +240,18 @@ class TopologyBuilder {
|
|||
return mappings;
|
||||
}
|
||||
|
||||
private Map<Integer, String> changeNodeComp2Map(
|
||||
private Map<Integer, String> buildConjecturalNodeCompMap(
|
||||
List<IApplicationComponentUIDAO.ApplicationComponent> applicationComponents) {
|
||||
Map<Integer, String> components = new HashMap<>();
|
||||
applicationComponents.forEach(applicationComponent -> {
|
||||
int componentServerId = this.componentLibraryCatalogService.getServerIdBasedOnComponent(applicationComponent.getComponentId());
|
||||
String componentName = this.componentLibraryCatalogService.getServerName(componentServerId);
|
||||
components.put(applicationComponent.getApplicationId(), componentName);
|
||||
});
|
||||
return components;
|
||||
}
|
||||
|
||||
private Map<Integer, String> buildNodeCompMap(
|
||||
List<IApplicationComponentUIDAO.ApplicationComponent> applicationComponents) {
|
||||
Map<Integer, String> components = new HashMap<>();
|
||||
applicationComponents.forEach(applicationComponent -> {
|
||||
|
|
|
|||
Loading…
Reference in New Issue