diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ApplicationQuery.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ApplicationQuery.java index a91f187d535d03764dcb972d73a70a5bd3f1b86f..359f5b5c27627a9b9d0080c152e140a9adaa6e25 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ApplicationQuery.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ApplicationQuery.java @@ -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 getAllApplication(Duration duration) throws ParseException { + public List 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 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()); diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/OverViewLayerQuery.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/OverViewLayerQuery.java index dcfd4d1f09d4adf356d471cc9a3fcdb971570ae8..b2ad2354b9e8ab15a3ad519b5b7a2d7ad0a077c0 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/OverViewLayerQuery.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/OverViewLayerQuery.java @@ -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 getTopNSlowService(Duration duration, int topN) throws ParseException { + public List getTopNSlowService(Duration duration, int topN) { long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationTopologyService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationTopologyService.java index b24fef8553e490f4d964dc023d05886d5c6b7c2c..61159c3583a5e740aae6ec6956ec6627a025c45d 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationTopologyService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationTopologyService.java @@ -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 applicationComponents = applicationComponentUIDAO.load(step, startTimeBucket, endTimeBucket); List applicationMappings = applicationMappingUIDAO.load(step, startTimeBucket, endTimeBucket); diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/TopologyBuilder.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/TopologyBuilder.java index 55d13711e2664aa2f1deaa49176edd67ad382ea8..81389f0282f70f033eecda06ce8bcaf356690e93 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/TopologyBuilder.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/TopologyBuilder.java @@ -61,7 +61,8 @@ class TopologyBuilder { List callerReferenceMetric, List calleeReferenceMetric, Step step, long startTimeBucket, long endTimeBucket, long startSecondTimeBucket, long endSecondTimeBucket) { - Map components = changeNodeComp2Map(applicationComponents); + Map nodeCompMap = buildNodeCompMap(applicationComponents); + Map conjecturalNodeCompMap = buildConjecturalNodeCompMap(applicationComponents); Map 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 changeNodeComp2Map( + private Map buildConjecturalNodeCompMap( + List applicationComponents) { + Map 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 buildNodeCompMap( List applicationComponents) { Map components = new HashMap<>(); applicationComponents.forEach(applicationComponent -> {