From 58259141f9911704257ccd1699f427c3130e3f50 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sat, 3 Mar 2018 15:16:52 +0800 Subject: [PATCH 01/19] Fixed the Dashboard and Topology bug. --- .../apm/collector/ui/service/ApplicationService.java | 10 ++++++---- .../apm/collector/ui/service/SecondBetweenService.java | 6 +++++- .../apm/collector/ui/utils/ApdexCalculator.java | 6 +++++- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationService.java index 4493781c6..fff6d2a25 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationService.java @@ -72,11 +72,12 @@ public class ApplicationService { int... applicationIds) { List applications = instanceDAO.getApplications(startSecondTimeBucket, endSecondTimeBucket, applicationIds); - applications.forEach(application -> { + for (int i = applications.size() - 1; i >= 0; i--) { + Application application = applications.get(i); if (application.getId() == Const.NONE_APPLICATION_ID) { - applications.remove(application); + applications.remove(i); } - }); + } applications.forEach(application -> { String applicationCode = applicationCacheService.getApplicationById(application.getId()).getApplicationCode(); @@ -112,7 +113,8 @@ public class ApplicationService { return applicationThroughput; } - public ConjecturalAppBrief getConjecturalApps(Step step, long startSecondTimeBucket, long endSecondTimeBucket) throws ParseException { + public ConjecturalAppBrief getConjecturalApps(Step step, long startSecondTimeBucket, + long endSecondTimeBucket) throws ParseException { List conjecturalApps = networkAddressUIDAO.getConjecturalApps(); conjecturalApps.forEach(conjecturalApp -> { String name = ServerTypeDefine.getInstance().getServerType(conjecturalApp.getId()); diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/SecondBetweenService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/SecondBetweenService.java index f4db0a00a..63de26189 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/SecondBetweenService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/SecondBetweenService.java @@ -53,6 +53,10 @@ class SecondBetweenService { Date startDate = new SimpleDateFormat("yyyyMMddHHmmss").parse(String.valueOf(startSecondTimeBucket)); Date endDate = new SimpleDateFormat("yyyyMMddHHmmss").parse(String.valueOf(endSecondTimeBucket)); - return Seconds.secondsBetween(new DateTime(startDate), new DateTime(endDate)).getSeconds(); + int seconds = Seconds.secondsBetween(new DateTime(startDate), new DateTime(endDate)).getSeconds(); + if (seconds == 0) { + seconds = 1; + } + return seconds; } } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/utils/ApdexCalculator.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/utils/ApdexCalculator.java index 126e0dea2..33e9cf059 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/utils/ApdexCalculator.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/utils/ApdexCalculator.java @@ -25,6 +25,10 @@ public enum ApdexCalculator { INSTANCE; public int calculate(long satisfiedCount, long toleratingCount, long frustratedCount) { - return (int)(((satisfiedCount + toleratingCount / 2) * 100) / (satisfiedCount + toleratingCount + frustratedCount)); + if (satisfiedCount + toleratingCount + frustratedCount == 0) { + return 100; + } else { + return (int)(((satisfiedCount + toleratingCount / 2) * 100) / (satisfiedCount + toleratingCount + frustratedCount)); + } } } From 6ba5453086ab0bf3c84132b6dbf3e6eee1d85f0f Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sat, 3 Mar 2018 15:22:35 +0800 Subject: [PATCH 02/19] Use JVM metric to update instance heart beat time when using java agent. --- .../grpc/provider/handler/JVMMetricsServiceHandler.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/JVMMetricsServiceHandler.java b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/JVMMetricsServiceHandler.java index 1ff4a7f94..555884224 100644 --- a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/JVMMetricsServiceHandler.java +++ b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/JVMMetricsServiceHandler.java @@ -25,6 +25,8 @@ import org.apache.skywalking.apm.collector.analysis.jvm.define.service.ICpuMetri import org.apache.skywalking.apm.collector.analysis.jvm.define.service.IGCMetricService; import org.apache.skywalking.apm.collector.analysis.jvm.define.service.IMemoryMetricService; import org.apache.skywalking.apm.collector.analysis.jvm.define.service.IMemoryPoolMetricService; +import org.apache.skywalking.apm.collector.analysis.metric.define.AnalysisMetricModule; +import org.apache.skywalking.apm.collector.analysis.metric.define.service.IInstanceHeartBeatService; import org.apache.skywalking.apm.collector.core.module.ModuleManager; import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils; import org.apache.skywalking.apm.collector.server.grpc.GRPCHandler; @@ -49,12 +51,14 @@ public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsSe private final IGCMetricService gcMetricService; private final IMemoryMetricService memoryMetricService; private final IMemoryPoolMetricService memoryPoolMetricService; + private final IInstanceHeartBeatService instanceHeartBeatService; public JVMMetricsServiceHandler(ModuleManager moduleManager) { this.cpuMetricService = moduleManager.find(AnalysisJVMModule.NAME).getService(ICpuMetricService.class); this.gcMetricService = moduleManager.find(AnalysisJVMModule.NAME).getService(IGCMetricService.class); this.memoryMetricService = moduleManager.find(AnalysisJVMModule.NAME).getService(IMemoryMetricService.class); this.memoryPoolMetricService = moduleManager.find(AnalysisJVMModule.NAME).getService(IMemoryPoolMetricService.class); + this.instanceHeartBeatService = moduleManager.find(AnalysisMetricModule.NAME).getService(IInstanceHeartBeatService.class); } @Override public void collect(JVMMetrics request, StreamObserver responseObserver) { @@ -67,6 +71,7 @@ public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsSe sendToMemoryMetricService(instanceId, time, metric.getMemoryList()); sendToMemoryPoolMetricService(instanceId, time, metric.getMemoryPoolList()); sendToGCMetricService(instanceId, time, metric.getGcList()); + sendToInstanceHeartBeatService(instanceId, metric.getTime()); }); responseObserver.onNext(Downstream.newBuilder().build()); @@ -90,4 +95,8 @@ public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsSe private void sendToGCMetricService(int instanceId, long timeBucket, List gcs) { gcs.forEach(gc -> gcMetricService.send(instanceId, timeBucket, gc.getPhraseValue(), gc.getCount(), gc.getTime())); } + + private void sendToInstanceHeartBeatService(int instanceId, long heartBeatTime) { + instanceHeartBeatService.heartBeat(instanceId, heartBeatTime); + } } From 41840ce85164106f3b5a7485664828841104c5cd Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sat, 3 Mar 2018 16:05:21 +0800 Subject: [PATCH 03/19] Fixed the bug which the memory max non heap metric value is -1 when using JDK 1.8. --- .../es/dao/ui/MemoryMetricEsUIDAO.java | 8 +++++++- .../h2/dao/ui/MemoryMetricH2UIDAO.java | 7 ++++++- .../collector/ui/service/ServerService.java | 20 +++++++++++-------- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/MemoryMetricEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/MemoryMetricEsUIDAO.java index 66f2290d4..6e5e891d4 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/MemoryMetricEsUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/MemoryMetricEsUIDAO.java @@ -66,8 +66,14 @@ public class MemoryMetricEsUIDAO extends EsDAO implements IMemoryMetricUIDAO { long max = ((Number)response.getResponse().getSource().get(MemoryMetricTable.COLUMN_MAX)).longValue(); long used = ((Number)response.getResponse().getSource().get(MemoryMetricTable.COLUMN_USED)).longValue(); long times = ((Number)response.getResponse().getSource().get(MemoryMetricTable.COLUMN_TIMES)).longValue(); + trend.getMetrics().add((int)(used / times)); - trend.getMaxMetrics().add((int)(max / times)); + + if (max < 0) { + trend.getMaxMetrics().add((int)(used / times)); + } else { + trend.getMaxMetrics().add((int)(max / times)); + } } else { trend.getMetrics().add(0); trend.getMaxMetrics().add(0); diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/MemoryMetricH2UIDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/MemoryMetricH2UIDAO.java index bc84318cf..87c733d83 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/MemoryMetricH2UIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/MemoryMetricH2UIDAO.java @@ -71,7 +71,12 @@ public class MemoryMetricH2UIDAO extends H2DAO implements IMemoryMetricUIDAO { long used = rs.getLong(MemoryMetricTable.COLUMN_USED); long times = rs.getLong(MemoryMetricTable.COLUMN_TIMES); trend.getMetrics().add((int)(used / times)); - trend.getMaxMetrics().add((int)(max / times)); + + if (max < 0) { + trend.getMaxMetrics().add((int)(used / times)); + } else { + trend.getMaxMetrics().add((int)(max / times)); + } } else { trend.getMetrics().add(0); trend.getMaxMetrics().add(0); diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServerService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServerService.java index 93528977a..667c1b864 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServerService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServerService.java @@ -26,7 +26,6 @@ import java.util.LinkedList; import java.util.List; 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.module.ModuleManager; import org.apache.skywalking.apm.collector.core.util.Const; import org.apache.skywalking.apm.collector.core.util.StringUtils; @@ -59,7 +58,6 @@ public class ServerService { private final ICpuMetricUIDAO cpuMetricUIDAO; private final IGCMetricUIDAO gcMetricUIDAO; private final IMemoryMetricUIDAO memoryMetricUIDAO; - private final InstanceCacheService instanceCacheService; private final ApplicationCacheService applicationCacheService; private final SecondBetweenService secondBetweenService; @@ -69,18 +67,18 @@ public class ServerService { this.cpuMetricUIDAO = moduleManager.find(StorageModule.NAME).getService(ICpuMetricUIDAO.class); this.gcMetricUIDAO = moduleManager.find(StorageModule.NAME).getService(IGCMetricUIDAO.class); this.memoryMetricUIDAO = moduleManager.find(StorageModule.NAME).getService(IMemoryMetricUIDAO.class); - this.instanceCacheService = moduleManager.find(CacheModule.NAME).getService(InstanceCacheService.class); this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class); this.secondBetweenService = new SecondBetweenService(moduleManager); } public List searchServer(String keyword, long startSecondTimeBucket, long endSecondTimeBucket) { List serverInfos = instanceUIDAO.searchServer(keyword, startSecondTimeBucket, endSecondTimeBucket); - serverInfos.forEach(serverInfo -> { - if (serverInfo.getId() == Const.NONE_INSTANCE_ID) { - serverInfos.remove(serverInfo); + + for (int i = serverInfos.size() - 1; i >= 0; i--) { + if (serverInfos.get(i).getId() == Const.NONE_INSTANCE_ID) { + serverInfos.remove(i); } - }); + } buildAppServerInfo(serverInfos); return serverInfos; @@ -164,6 +162,8 @@ public class ServerService { private void buildAppServerInfo(List serverInfos) { serverInfos.forEach(serverInfo -> { serverInfo.setApplicationCode(applicationCacheService.getApplicationById(serverInfo.getApplicationId()).getApplicationCode()); + StringBuilder nameBuilder = new StringBuilder(); + nameBuilder.append(serverInfo.getApplicationCode()); if (StringUtils.isNotEmpty(serverInfo.getOsInfo())) { JsonObject osInfoJson = gson.fromJson(serverInfo.getOsInfo(), JsonObject.class); if (osInfoJson.has("osName")) { @@ -180,10 +180,14 @@ public class ServerService { JsonArray ipv4Array = osInfoJson.get("ipv4s").getAsJsonArray(); List ipv4s = new LinkedList<>(); - ipv4Array.forEach(ipv4 -> ipv4s.add(ipv4.getAsString())); + ipv4Array.forEach(ipv4 -> { + ipv4s.add(ipv4.getAsString()); + nameBuilder.append(Const.ID_SPLIT).append(ipv4.getAsString()); + }); serverInfo.setIpv4(ipv4s); } } + serverInfo.setName(nameBuilder.toString()); }); } } From bdc0601c6d28c2377a4fd0ead494db7144e83793 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sat, 3 Mar 2018 20:03:45 +0800 Subject: [PATCH 04/19] Fixed the call type in calls of topology. --- .../standardization/SpanIdExchanger.java | 2 +- .../storage/table/register/ServerType.java | 14 ++-- .../table/register/ServerTypeDefine.java | 78 ++++++++++--------- .../register/ServerTypeDefineTestCase.java | 2 +- .../ui/service/ApplicationService.java | 5 +- .../collector/ui/service/TopologyBuilder.java | 25 ++++-- 6 files changed, 71 insertions(+), 55 deletions(-) diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java index 704d724f5..a30e4d103 100644 --- a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java @@ -65,7 +65,7 @@ public class SpanIdExchanger implements IdExchanger { standardBuilder.setPeer(Const.EMPTY_STRING); int spanLayer = standardBuilder.getSpanLayerValue(); - int serverType = ServerTypeDefine.getInstance().getServerTypeId(standardBuilder.getComponentId()); + int serverType = ServerTypeDefine.getInstance().getServerTypeByComponentId(standardBuilder.getComponentId()).getId(); networkAddressIDService.update(peerId, spanLayer, serverType); } } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerType.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerType.java index b7b71a22b..73449353b 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerType.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerType.java @@ -22,25 +22,25 @@ package org.apache.skywalking.apm.collector.storage.table.register; * @author peng-yongsheng */ public class ServerType { - private int componentId; private int id; + private int componentId; private String name; - public ServerType(int componentId, int id, String name) { - this.componentId = componentId; + public ServerType(int id, String name) { this.id = id; this.name = name; + this.componentId = id; } public int getId() { return id; } - public String getName() { - return name; - } - public int getComponentId() { return componentId; } + + public String getName() { + return name; + } } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefine.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefine.java index 61a91fb66..df5662283 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefine.java @@ -28,41 +28,46 @@ public class ServerTypeDefine { private static ServerTypeDefine INSTANCE = new ServerTypeDefine(); - private String[] serverTypeNames; private ServerType[] serverTypes; + private static final String HTTP = "http"; + private static final String GRPC = "gRPC"; + private static final String DUBBO = "dubbo"; + private static final String MOTAN = "motan"; + private static final String CLIENT = "client"; + private static final String JDBC_DRIVER = "JDBC driver"; + private ServerTypeDefine() { this.serverTypes = new ServerType[30]; - this.serverTypeNames = new String[11]; - addServerType(new ServerType(ComponentsDefine.TOMCAT.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.HTTPCLIENT.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.DUBBO.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.H2.getId(), 1, ComponentsDefine.H2.getName())); - addServerType(new ServerType(ComponentsDefine.MYSQL.getId(), 2, ComponentsDefine.MYSQL.getName())); - addServerType(new ServerType(ComponentsDefine.ORACLE.getId(), 3, ComponentsDefine.ORACLE.getName())); - addServerType(new ServerType(ComponentsDefine.REDIS.getId(), 4, ComponentsDefine.REDIS.getName())); - addServerType(new ServerType(ComponentsDefine.MOTAN.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.MONGODB.getId(), 5, ComponentsDefine.MONGODB.getName())); - addServerType(new ServerType(ComponentsDefine.RESIN.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.FEIGN.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.OKHTTP.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.SPRING_REST_TEMPLATE.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.SPRING_MVC_ANNOTATION.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.STRUTS2.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.NUTZ_MVC_ANNOTATION.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.NUTZ_HTTP.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.JETTY_CLIENT.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.JETTY_SERVER.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.MEMCACHED.getId(), 6, ComponentsDefine.MEMCACHED.getName())); - addServerType(new ServerType(ComponentsDefine.SHARDING_JDBC.getId(), 7, ComponentsDefine.SHARDING_JDBC.getName())); - addServerType(new ServerType(ComponentsDefine.POSTGRESQL.getId(), 8, ComponentsDefine.POSTGRESQL.getName())); - addServerType(new ServerType(ComponentsDefine.GRPC.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.ELASTIC_JOB.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.ROCKET_MQ.getId(), 9, ComponentsDefine.ROCKET_MQ.getName())); - addServerType(new ServerType(ComponentsDefine.HTTP_ASYNC_CLIENT.getId(), Const.NONE, Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.KAFKA.getId(), 10, ComponentsDefine.KAFKA.getName())); - addServerType(new ServerType(ComponentsDefine.SERVICECOMB.getId(), Const.NONE, ComponentsDefine.SERVICECOMB.getName())); - addServerType(new ServerType(ComponentsDefine.HYSTRIX.getId(), Const.NONE, ComponentsDefine.HYSTRIX.getName())); + addServerType(new ServerType(ComponentsDefine.TOMCAT.getId(), Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.HTTPCLIENT.getId(), Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.DUBBO.getId(), DUBBO)); + addServerType(new ServerType(ComponentsDefine.H2.getId(), JDBC_DRIVER)); + addServerType(new ServerType(ComponentsDefine.MYSQL.getId(), JDBC_DRIVER)); + addServerType(new ServerType(ComponentsDefine.ORACLE.getId(), JDBC_DRIVER)); + addServerType(new ServerType(ComponentsDefine.REDIS.getId(), CLIENT)); + addServerType(new ServerType(ComponentsDefine.MOTAN.getId(), MOTAN)); + addServerType(new ServerType(ComponentsDefine.MONGODB.getId(), CLIENT)); + addServerType(new ServerType(ComponentsDefine.RESIN.getId(), Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.FEIGN.getId(), Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.OKHTTP.getId(), Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.SPRING_REST_TEMPLATE.getId(), Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.SPRING_MVC_ANNOTATION.getId(), Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.STRUTS2.getId(), Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.NUTZ_MVC_ANNOTATION.getId(), Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.NUTZ_HTTP.getId(), HTTP)); + addServerType(new ServerType(ComponentsDefine.JETTY_CLIENT.getId(), HTTP)); + addServerType(new ServerType(ComponentsDefine.JETTY_SERVER.getId(), Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.MEMCACHED.getId(), CLIENT)); + addServerType(new ServerType(ComponentsDefine.SHARDING_JDBC.getId(), JDBC_DRIVER)); + addServerType(new ServerType(ComponentsDefine.POSTGRESQL.getId(), JDBC_DRIVER)); + addServerType(new ServerType(ComponentsDefine.GRPC.getId(), GRPC)); + addServerType(new ServerType(ComponentsDefine.ELASTIC_JOB.getId(), Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.ROCKET_MQ.getId(), CLIENT)); + addServerType(new ServerType(ComponentsDefine.HTTP_ASYNC_CLIENT.getId(), HTTP)); + addServerType(new ServerType(ComponentsDefine.KAFKA.getId(), CLIENT)); + addServerType(new ServerType(ComponentsDefine.SERVICECOMB.getId(), Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.HYSTRIX.getId(), Const.EMPTY_STRING)); } public static ServerTypeDefine getInstance() { @@ -70,15 +75,14 @@ public class ServerTypeDefine { } private void addServerType(ServerType serverType) { - serverTypeNames[serverType.getId()] = serverType.getName(); - serverTypes[serverType.getComponentId()] = serverType; + serverTypes[serverType.getId()] = serverType; } - public int getServerTypeId(int componentId) { - return serverTypes[componentId].getId(); + public ServerType getServerTypeByComponentId(int componentId) { + return serverTypes[componentId]; } - public String getServerType(int serverTypeId) { - return serverTypeNames[serverTypeId]; + public ServerType getServerType(int serverTypeId) { + return serverTypes[serverTypeId]; } } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/test/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefineTestCase.java b/apm-collector/apm-collector-storage/collector-storage-define/src/test/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefineTestCase.java index 015eff79b..1ccc4534f 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/test/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefineTestCase.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/test/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefineTestCase.java @@ -35,7 +35,7 @@ public class ServerTypeDefineTestCase { for (Field field : fields) { if (field.getType().equals(OfficialComponent.class)) { OfficialComponent component = (OfficialComponent)field.get(ComponentsDefine.getInstance()); - ServerTypeDefine.getInstance().getServerTypeId(component.getId()); + ServerTypeDefine.getInstance().getServerTypeByComponentId(component.getId()); } } } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationService.java index fff6d2a25..e9082d53c 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationService.java @@ -40,6 +40,7 @@ import org.apache.skywalking.apm.collector.storage.ui.overview.ConjecturalApp; import org.apache.skywalking.apm.collector.storage.ui.overview.ConjecturalAppBrief; import org.apache.skywalking.apm.collector.storage.ui.service.ServiceMetric; import org.apache.skywalking.apm.collector.ui.utils.DurationUtils; +import org.apache.skywalking.apm.network.trace.component.ComponentsDefine; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -117,8 +118,8 @@ public class ApplicationService { long endSecondTimeBucket) throws ParseException { List conjecturalApps = networkAddressUIDAO.getConjecturalApps(); conjecturalApps.forEach(conjecturalApp -> { - String name = ServerTypeDefine.getInstance().getServerType(conjecturalApp.getId()); - conjecturalApp.setName(name); + int componentId = ServerTypeDefine.getInstance().getServerType(conjecturalApp.getId()).getComponentId(); + conjecturalApp.setName(ComponentsDefine.getInstance().getComponentName(componentId)); }); ConjecturalAppBrief conjecturalAppBrief = new ConjecturalAppBrief(); 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 cbd013e2d..74c7148b2 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 @@ -33,6 +33,7 @@ import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMappingUID 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.table.register.Application; +import org.apache.skywalking.apm.collector.storage.table.register.ServerTypeDefine; import org.apache.skywalking.apm.collector.storage.ui.alarm.Alarm; import org.apache.skywalking.apm.collector.storage.ui.application.ApplicationNode; import org.apache.skywalking.apm.collector.storage.ui.application.ConjecturalNode; @@ -71,7 +72,8 @@ class TopologyBuilder { List callerReferenceMetric, List calleeReferenceMetric, long startTimeBucket, long endTimeBucket, long startSecondTimeBucket, long endSecondTimeBucket) { - Map components = changeNodeComp2Map(applicationComponents); + Map componentNames = changeNodeCompName2Map(applicationComponents); + Map componentIds = changeNodeCompId2Map(applicationComponents); Map mappings = changeMapping2Map(applicationMappings); calleeReferenceMetric = calleeReferenceMetricFilter(calleeReferenceMetric); @@ -83,7 +85,7 @@ class TopologyBuilder { ApplicationNode applicationNode = new ApplicationNode(); applicationNode.setId(applicationId); applicationNode.setName(application.getApplicationCode()); - applicationNode.setType(components.getOrDefault(application.getApplicationId(), Const.UNKNOWN)); + applicationNode.setType(componentNames.getOrDefault(application.getApplicationId(), Const.UNKNOWN)); applicationNode.setSla(SLACalculator.INSTANCE.calculate(applicationMetric.getErrorCalls(), applicationMetric.getCalls())); try { @@ -129,7 +131,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(componentNames.getOrDefault(target.getApplicationId(), Const.UNKNOWN)); nodes.add(conjecturalNode); } @@ -141,7 +143,7 @@ class TopologyBuilder { call.setTarget(actualTargetId); call.setTargetName(applicationCacheService.getApplicationById(actualTargetId).getApplicationCode()); call.setAlert(false); - call.setCallType(components.get(referenceMetric.getTarget())); + call.setCallType(ServerTypeDefine.getInstance().getServerTypeByComponentId(componentIds.get(referenceMetric.getTarget())).getName()); try { call.setCallsPerSec(referenceMetric.getCalls() / secondBetweenService.calculate(source.getApplicationId(), startSecondTimeBucket, endSecondTimeBucket)); } catch (ParseException e) { @@ -167,7 +169,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(componentNames.getOrDefault(source.getApplicationId(), Const.UNKNOWN)); nodes.add(conjecturalNode); } @@ -181,7 +183,7 @@ class TopologyBuilder { if (source.getApplicationId() == Const.NONE_APPLICATION_ID) { call.setCallType(Const.EMPTY_STRING); } else { - call.setCallType(components.get(referenceMetric.getTarget())); + call.setCallType(ServerTypeDefine.getInstance().getServerTypeByComponentId(componentIds.get(referenceMetric.getTarget())).getName()); } try { call.setCallsPerSec(referenceMetric.getCalls() / secondBetweenService.calculate(target.getApplicationId(), startSecondTimeBucket, endSecondTimeBucket)); @@ -219,7 +221,7 @@ class TopologyBuilder { return mappings; } - private Map changeNodeComp2Map( + private Map changeNodeCompName2Map( List applicationComponents) { Map components = new HashMap<>(); applicationComponents.forEach(applicationComponent -> { @@ -228,4 +230,13 @@ class TopologyBuilder { }); return components; } + + private Map changeNodeCompId2Map( + List applicationComponents) { + Map components = new HashMap<>(); + applicationComponents.forEach(applicationComponent -> { + components.put(applicationComponent.getApplicationId(), applicationComponent.getComponentId()); + }); + return components; + } } From 09f9c1200eea09419c3f39d26c2d1fc78e296269 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sat, 3 Mar 2018 20:15:49 +0800 Subject: [PATCH 05/19] Fixed the pagination bug. --- .../skywalking/apm/collector/ui/query/TraceQuery.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/TraceQuery.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/TraceQuery.java index 74c002e9b..0ce17ee84 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/TraceQuery.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/TraceQuery.java @@ -31,6 +31,7 @@ import org.apache.skywalking.apm.collector.ui.graphql.Query; import org.apache.skywalking.apm.collector.ui.service.SegmentTopService; import org.apache.skywalking.apm.collector.ui.service.TraceStackService; import org.apache.skywalking.apm.collector.ui.utils.DurationUtils; +import org.apache.skywalking.apm.collector.ui.utils.PaginationUtils; /** * @author peng-yongsheng @@ -77,10 +78,9 @@ public class TraceQuery implements Query { long maxDuration = condition.getMaxTraceDuration(); String operationName = condition.getOperationName(); int applicationId = condition.getApplicationId(); - int limit = condition.getPaging().getPageSize(); - int from = condition.getPaging().getPageSize() * condition.getPaging().getPageNum(); - return getSegmentTopService().loadTop(startSecondTimeBucket, endSecondTimeBucket, minDuration, maxDuration, operationName, traceId, applicationId, limit, from); + PaginationUtils.Page page = PaginationUtils.INSTANCE.exchange(condition.getPaging()); + return getSegmentTopService().loadTop(startSecondTimeBucket, endSecondTimeBucket, minDuration, maxDuration, operationName, traceId, applicationId, page.getLimit(), page.getFrom()); } public Trace queryTrace(String traceId) { From 73f108a7de8edaf57a7725df0b0d269bbea3b8de Mon Sep 17 00:00:00 2001 From: wusheng Date: Sat, 3 Mar 2018 20:29:53 +0800 Subject: [PATCH 06/19] Fix dist deploy --- .gitignore | 1 + apm-dist/pom.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 608628014..8d6d2d3fd 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ target/ packages/ **/dependency-reduced-pom.xml /skywalking-agent/ +/dist/ diff --git a/apm-dist/pom.xml b/apm-dist/pom.xml index 115592c26..7729c53da 100644 --- a/apm-dist/pom.xml +++ b/apm-dist/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - apm-backend-dist + apm-dist pom From 21c58f07d52770faf0f404128f7b6915dd2eaee6 Mon Sep 17 00:00:00 2001 From: wusheng Date: Sat, 3 Mar 2018 22:36:15 +0800 Subject: [PATCH 07/19] Update some documents for 5.0.0-alpha release. --- apm-sniffer/config/agent.config | 2 +- docs/en/Deploy-collector-in-cluster-mode.md | 3 ++- docs/en/Deploy-collector-in-standalone-mode.md | 6 ++++-- docs/en/Deploy-skywalking-agent.md | 2 +- docs/en/Quick-start.md | 5 +++-- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/apm-sniffer/config/agent.config b/apm-sniffer/config/agent.config index 8616a4b04..4600bbc92 100644 --- a/apm-sniffer/config/agent.config +++ b/apm-sniffer/config/agent.config @@ -17,7 +17,7 @@ agent.application_code=Your_ApplicationName # agent.is_open_debugging_class = true # Server addresses. -# Mapping to `agent_server/jetty/port` in `config/application.yml` of Collector. +# Mapping to `naming/jetty/ip:port` in `config/application.yml` of Collector. # Examples: # Single collector:SERVERS="127.0.0.1:8080" # Collector cluster:SERVERS="10.2.45.126:8080,10.2.45.127:7600" diff --git a/docs/en/Deploy-collector-in-cluster-mode.md b/docs/en/Deploy-collector-in-cluster-mode.md index 2cc58795e..a9fec046f 100644 --- a/docs/en/Deploy-collector-in-cluster-mode.md +++ b/docs/en/Deploy-collector-in-cluster-mode.md @@ -25,7 +25,8 @@ thread_pool.bulk.queue_size: 1000 1. Run `tar -xvf skywalking-collector.tar.gz` 2. Config collector in cluster mode. -Cluster mode depends on Zookeeper register and application discovery capabilities. So, you just need to adjust the IP config items in `config/application.yml`. Change IP and port configs of agent_server, agent_stream, ui, collector_inside, replace them to the real ip or hostname which you want to use for cluster. +Cluster mode depends on Zookeeper register and application discovery capabilities. So, you just need to adjust the IP config items in `config/application.yml`. Change IP and port configs of naming, remote, agent_gRPC, agent_jetty and ui, +replace them to the real ip or hostname which you want to use for cluster. - `config/application.yml` ``` diff --git a/docs/en/Deploy-collector-in-standalone-mode.md b/docs/en/Deploy-collector-in-standalone-mode.md index 7e3292d00..3697fe1f1 100644 --- a/docs/en/Deploy-collector-in-standalone-mode.md +++ b/docs/en/Deploy-collector-in-standalone-mode.md @@ -1,7 +1,9 @@ # Usage scenario Default standalong mode collector means don't support cluster. It uses H2 as storage layer implementation, suggest that use only for preview, test, demonstration, low throughputs and small scale system. -If you are using skywalking in a low throughputs monitoring scenario, and don't want to deploy cluster, at least, swith the storage implementation from H2 to Elasticsearch. +If you are using skywalking in a low throughputs monitoring scenario, and don't want to deploy cluster, at least, switch the storage implementation from H2 to Elasticsearch. + +**H2 storage implementation is not provided in 5.0.0-alpha** ## Requirements * JDK 8+ @@ -24,7 +26,7 @@ Even in standalone mode, collector can run with Elastic Search as storage. If so - Modify `elasticsearch.yml` - Set `cluster.name: CollectorDBCluster` - Set `node.name: anyname`, this name can be any, it based on Elasticsearch. - - Add the following configurations to + - Add the following configurations ``` # The ip used for listening diff --git a/docs/en/Deploy-skywalking-agent.md b/docs/en/Deploy-skywalking-agent.md index c42ee3b51..900c39f9c 100644 --- a/docs/en/Deploy-skywalking-agent.md +++ b/docs/en/Deploy-skywalking-agent.md @@ -42,5 +42,5 @@ CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/skywalking-agent/skywalking-ag - Tomcat 8 Change the first line of `tomcat/bin/catalina.sh`. ```shell -set "CATALINA_OPTS=-javaagent:E:\apache-tomcat-8.5.20\skywalking-agent\skywalking-agent.jar -Dconfig=\skywalking\config\dir" +set "CATALINA_OPTS=-javaagent:E:\apache-tomcat-8.5.20\skywalking-agent\skywalking-agent.jar" ``` \ No newline at end of file diff --git a/docs/en/Quick-start.md b/docs/en/Quick-start.md index 9e604336d..64b8eacfc 100644 --- a/docs/en/Quick-start.md +++ b/docs/en/Quick-start.md @@ -1,7 +1,8 @@ # Quick start +1. Download `org.apache.skywalking.apm-dist` in maven central. Or find `skywalking-dist.tar.gz/.zip` in `dist` folder after `mvn clean package`. 1. Deploy Collector 1. [Standalone Mode](Deploy-collector-in-standalone-mode.md) 1. [Cluster Mode](Deploy-collector-in-cluster-mode.md) -1. Deploy webui server, [doc](https://github.com/apache/incubator-skywalking-ui#quickstart) -1. Doploy Java Agent,[doc](Deploy-skywalking-agent.md) +1. Deploy webui server [WIP] +1. Deploy Java Agent,[doc](Deploy-skywalking-agent.md) 1. Reboot your applications, and open UI. \ No newline at end of file From 00a9cde2821a39bacdbb2e8d33ee6ab42d06637d Mon Sep 17 00:00:00 2001 From: wusheng Date: Sat, 3 Mar 2018 22:47:25 +0800 Subject: [PATCH 08/19] Add UI startup.sh description. --- docs/en/Deploy-collector-in-cluster-mode.md | 2 ++ docs/en/Deploy-collector-in-standalone-mode.md | 4 +++- docs/en/Quick-start.md | 7 +++---- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/en/Deploy-collector-in-cluster-mode.md b/docs/en/Deploy-collector-in-cluster-mode.md index a9fec046f..c6fa1ffd9 100644 --- a/docs/en/Deploy-collector-in-cluster-mode.md +++ b/docs/en/Deploy-collector-in-cluster-mode.md @@ -77,3 +77,5 @@ storage: 3. Run `bin/startup.sh` + +- NOTICE: **In 5.0.0-alpha, startup.sh will start two processes, collector and UI, and UI uses 127.0.0.1:10800 as default.** diff --git a/docs/en/Deploy-collector-in-standalone-mode.md b/docs/en/Deploy-collector-in-standalone-mode.md index 3697fe1f1..56b1cdaf4 100644 --- a/docs/en/Deploy-collector-in-standalone-mode.md +++ b/docs/en/Deploy-collector-in-standalone-mode.md @@ -3,7 +3,7 @@ Default standalong mode collector means don't support cluster. It uses H2 as sto If you are using skywalking in a low throughputs monitoring scenario, and don't want to deploy cluster, at least, switch the storage implementation from H2 to Elasticsearch. -**H2 storage implementation is not provided in 5.0.0-alpha** +**H2 storage implementation is not provided in 5.0.0-alpha, so you must deploy ElasticSearch before try to start backend** ## Requirements * JDK 8+ @@ -19,6 +19,8 @@ You can simplely tar/unzip and startup if ports 10800, 11800, 12800 are free. You should keep the `config/application.yml` as default. +- NOTICE: **In 5.0.0-alpha, startup.sh will start two processes, collector and UI, and UI uses 127.0.0.1:10800 as default.** + ## Use Elastic Search instead of H2 as storage layer implementation Even in standalone mode, collector can run with Elastic Search as storage. If so, uncomment the `storage` section in `application.yml`, set the config right. The default configs fit for collector and Elasticsearch both running in same machine, and not cluster. diff --git a/docs/en/Quick-start.md b/docs/en/Quick-start.md index 64b8eacfc..cdc15d93a 100644 --- a/docs/en/Quick-start.md +++ b/docs/en/Quick-start.md @@ -1,8 +1,7 @@ # Quick start 1. Download `org.apache.skywalking.apm-dist` in maven central. Or find `skywalking-dist.tar.gz/.zip` in `dist` folder after `mvn clean package`. -1. Deploy Collector - 1. [Standalone Mode](Deploy-collector-in-standalone-mode.md) - 1. [Cluster Mode](Deploy-collector-in-cluster-mode.md) -1. Deploy webui server [WIP] +1. Deploy Backend + - [Standalone Mode](Deploy-collector-in-standalone-mode.md) + - [Cluster Mode](Deploy-collector-in-cluster-mode.md) 1. Deploy Java Agent,[doc](Deploy-skywalking-agent.md) 1. Reboot your applications, and open UI. \ No newline at end of file From 293fd9a1cd1396d1368845f6602b3a9376bc1483 Mon Sep 17 00:00:00 2001 From: wusheng Date: Sat, 3 Mar 2018 22:55:35 +0800 Subject: [PATCH 09/19] Sync Chinese doc --- docs/cn/Deploy-collector-in-cluster-mode-CN.md | 3 +++ docs/cn/Deploy-collector-in-standalone-mode-CN.md | 8 +++++++- docs/cn/Quick-start-CN.md | 4 ++-- docs/en/Deploy-collector-in-cluster-mode.md | 3 ++- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/docs/cn/Deploy-collector-in-cluster-mode-CN.md b/docs/cn/Deploy-collector-in-cluster-mode-CN.md index e73f3fd96..b892eac8c 100644 --- a/docs/cn/Deploy-collector-in-cluster-mode-CN.md +++ b/docs/cn/Deploy-collector-in-cluster-mode-CN.md @@ -78,3 +78,6 @@ storage: 3. 运行`bin/startup.sh`启动。windows用户为.bat文件。 + +- **注意:startup.sh将会启动collector和UI两个进程,UI通过127.0.0.1:10800访问本地collector,无需额外配置。 +如需保证UI负载均衡,推荐使用类nginx的HTTP代理服务。** \ No newline at end of file diff --git a/docs/cn/Deploy-collector-in-standalone-mode-CN.md b/docs/cn/Deploy-collector-in-standalone-mode-CN.md index 86351b574..fb0166d80 100644 --- a/docs/cn/Deploy-collector-in-standalone-mode-CN.md +++ b/docs/cn/Deploy-collector-in-standalone-mode-CN.md @@ -1,5 +1,9 @@ # 用途说明 -单机模式默认使用本地H2数据库,不支持集群部署。主要用于:预览、功能测试、演示和低压力系统。如果使用单机collector用于非演示环境,你可选择使用Elasticsearch作为存储实现。 +单机模式默认使用本地H2数据库,不支持集群部署。主要用于:预览、功能测试、演示和低压力系统。 + +如果使用单机collector用于非演示环境,你可选择使用Elasticsearch作为存储实现。 + +**在5.0.0-alpha版本中,暂不提供H2实现** ## 所需的第三方软件 - JDK8+ @@ -14,6 +18,8 @@ Collector单机模拟启动简单,提供和集群模式相同的功能,单 1. 解压安装包`tar -xvf skywalking-collector.tar.gz`,windows用户可以选择zip包 1. 运行`bin/startup.sh`启动。windows用户为.bat文件。 +- **注意:startup.sh将会启动collector和UI两个进程,UI通过127.0.0.1:10800访问本地collector,无需额外配置。** + ## 使用Elastic Search代替H2存储 - 在单机模式下除了支持内置的H2数据库运行,也支持其他的存储(当前已支持的ElasticSearch 5.3),取消Storage相关配置节的注释,并修改配置。 ```yaml diff --git a/docs/cn/Quick-start-CN.md b/docs/cn/Quick-start-CN.md index 21c2b6799..9567bf38d 100644 --- a/docs/cn/Quick-start-CN.md +++ b/docs/cn/Quick-start-CN.md @@ -1,7 +1,7 @@ # 部署步骤 -1. 部署 Collector +1. 在Maven Central中下载 `org.apache.skywalking.apm-dist`. 或者本地编译程序,在`dist`目录中找到`skywalking-dist.tar.gz/.zip`. +1. 部署 Backend 1. [单机模式](Deploy-collector-in-standalone-mode-CN.md) 1. [集群模式](Deploy-collector-in-cluster-mode-CN.md) -1. 部署 webui server, [doc](https://github.com/apache/incubator-skywalking-ui#quickstart) 1. 部署 Java Agent,[doc](Deploy-skywalking-agent-CN.md) 1. 重启并访问系统功能,查看UI即可。 \ No newline at end of file diff --git a/docs/en/Deploy-collector-in-cluster-mode.md b/docs/en/Deploy-collector-in-cluster-mode.md index c6fa1ffd9..29025b9b3 100644 --- a/docs/en/Deploy-collector-in-cluster-mode.md +++ b/docs/en/Deploy-collector-in-cluster-mode.md @@ -78,4 +78,5 @@ storage: 3. Run `bin/startup.sh` -- NOTICE: **In 5.0.0-alpha, startup.sh will start two processes, collector and UI, and UI uses 127.0.0.1:10800 as default.** +- NOTICE: **In 5.0.0-alpha, startup.sh will start two processes, collector and UI, and UI uses 127.0.0.1:10800 as default. +Recommend use http proxy to access UI in product, otherwise, access any UI.** From 5765b1e4ff63a041d5f82a955a00dc5813008f43 Mon Sep 17 00:00:00 2001 From: wusheng Date: Sat, 3 Mar 2018 22:59:52 +0800 Subject: [PATCH 10/19] Remove all bintray related. --- apm-application-toolkit/apm-toolkit-log4j-1.x/pom.xml | 9 --------- apm-application-toolkit/apm-toolkit-log4j-2.x/pom.xml | 8 -------- apm-application-toolkit/apm-toolkit-logback-1.x/pom.xml | 9 --------- apm-application-toolkit/apm-toolkit-opentracing/pom.xml | 9 +-------- apm-application-toolkit/apm-toolkit-trace/pom.xml | 9 --------- docs/README_ZH.md | 2 +- .../{skywalking-opentracing-CN.md => Opentracing-CN.md} | 2 -- docs/en/Opentracing.md | 1 - 8 files changed, 2 insertions(+), 47 deletions(-) rename docs/cn/{skywalking-opentracing-CN.md => Opentracing-CN.md} (65%) diff --git a/apm-application-toolkit/apm-toolkit-log4j-1.x/pom.xml b/apm-application-toolkit/apm-toolkit-log4j-1.x/pom.xml index c019fe1a5..5d536b510 100644 --- a/apm-application-toolkit/apm-toolkit-log4j-1.x/pom.xml +++ b/apm-application-toolkit/apm-toolkit-log4j-1.x/pom.xml @@ -59,13 +59,4 @@ - - - - bintray-wu-sheng-sky-walking-repository - wu-sheng-sky-walking-repository - https://api.bintray.com/maven/wu-sheng/skywalking/org.apache.skywalking.apm-toolkit-log4j-1.x/;publish=1 - - - diff --git a/apm-application-toolkit/apm-toolkit-log4j-2.x/pom.xml b/apm-application-toolkit/apm-toolkit-log4j-2.x/pom.xml index a85dff077..02087118a 100644 --- a/apm-application-toolkit/apm-toolkit-log4j-2.x/pom.xml +++ b/apm-application-toolkit/apm-toolkit-log4j-2.x/pom.xml @@ -60,12 +60,4 @@ - - - bintray-wu-sheng-sky-walking-repository - wu-sheng-sky-walking-repository - https://api.bintray.com/maven/wu-sheng/skywalking/org.apache.skywalking.apm-toolkit-log4j-2.x/;publish=1 - - - diff --git a/apm-application-toolkit/apm-toolkit-logback-1.x/pom.xml b/apm-application-toolkit/apm-toolkit-logback-1.x/pom.xml index c0ec486fb..caa88a3ce 100644 --- a/apm-application-toolkit/apm-toolkit-logback-1.x/pom.xml +++ b/apm-application-toolkit/apm-toolkit-logback-1.x/pom.xml @@ -59,13 +59,4 @@ - - - - bintray-wu-sheng-sky-walking-repository - wu-sheng-sky-walking-repository - https://api.bintray.com/maven/wu-sheng/skywalking/org.apache.skywalking.apm-toolkit-logback-1.x/;publish=1 - - - diff --git a/apm-application-toolkit/apm-toolkit-opentracing/pom.xml b/apm-application-toolkit/apm-toolkit-opentracing/pom.xml index b05e70ca0..dee31cb5e 100644 --- a/apm-application-toolkit/apm-toolkit-opentracing/pom.xml +++ b/apm-application-toolkit/apm-toolkit-opentracing/pom.xml @@ -42,12 +42,5 @@ - - - bintray-wu-sheng-sky-walking-repository - wu-sheng-sky-walking-repository - https://api.bintray.com/maven/wu-sheng/skywalking/org.apache.skywalking.apm-toolkit-opentracing/;publish=1 - - - + diff --git a/apm-application-toolkit/apm-toolkit-trace/pom.xml b/apm-application-toolkit/apm-toolkit-trace/pom.xml index 394ccb2a3..fbee8e8e2 100644 --- a/apm-application-toolkit/apm-toolkit-trace/pom.xml +++ b/apm-application-toolkit/apm-toolkit-trace/pom.xml @@ -52,13 +52,4 @@ - - - bintray-wu-sheng-sky-walking-repository - wu-sheng-sky-walking-repository - - https://api.bintray.com/maven/wu-sheng/skywalking/org.apache.skywalking.apm-toolkit-trace/;publish=1 - - - diff --git a/docs/README_ZH.md b/docs/README_ZH.md index db6bbb2db..ea7fed228 100644 --- a/docs/README_ZH.md +++ b/docs/README_ZH.md @@ -10,7 +10,7 @@ * [OpenTracing中文版](https://github.com/opentracing-contrib/opentracing-specification-zh) * Application Toolkit,应用程序工具包 * [概述](cn/Application-toolkit-CN.md) - * [OpenTracing Tracer](cn/skywalking-opentracing-CN.md) + * [OpenTracing Tracer](cn/Opentracing-CN.md) * 日志组件 * [log4j组件](cn/Application-toolkit-log4j-1.x-CN.md) * [log4j2组件](cn/Application-toolkit-log4j-2.x-CN.md) diff --git a/docs/cn/skywalking-opentracing-CN.md b/docs/cn/Opentracing-CN.md similarity index 65% rename from docs/cn/skywalking-opentracing-CN.md rename to docs/cn/Opentracing-CN.md index 588641915..3bb3d2a37 100644 --- a/docs/cn/skywalking-opentracing-CN.md +++ b/docs/cn/Opentracing-CN.md @@ -7,8 +7,6 @@ ``` -   [ ![Download](https://api.bintray.com/packages/wu-sheng/skywalking/org.apache.skywalking.apm-toolkit-opentracing/images/download.svg) ](https://bintray.com/wu-sheng/skywalking/org.apache.skywalking.apm-toolkit-opentracing/_latestVersion) - * 使用OpenTracing的标准API和桥接器,使用手动埋点 ```java Tracer tracer = new org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer(); diff --git a/docs/en/Opentracing.md b/docs/en/Opentracing.md index ce270c6e8..e6215f1e9 100644 --- a/docs/en/Opentracing.md +++ b/docs/en/Opentracing.md @@ -7,7 +7,6 @@ ``` -   [ ![Download](https://api.bintray.com/packages/wu-sheng/skywalking/org.apache.skywalking.apm-toolkit-opentracing/images/download.svg) ](https://bintray.com/wu-sheng/skywalking/org.apache.skywalking.apm-toolkit-opentracing/_latestVersion) * Use our OpenTracing tracer implementation ```java From 9ae8318c1d5664335f5116bbf5322ee7f14c09d7 Mon Sep 17 00:00:00 2001 From: wusheng Date: Sat, 3 Mar 2018 23:02:29 +0800 Subject: [PATCH 11/19] Rename collector to backend --- ...luster-mode-CN.md => Deploy-backend-in-cluster-mode-CN.md} | 0 ...one-mode-CN.md => Deploy-backend-in-standalone-mode-CN.md} | 0 docs/cn/Quick-start-CN.md | 4 ++-- ...r-in-cluster-mode.md => Deploy-backend-in-cluster-mode.md} | 0 ...tandalone-mode.md => Deploy-backend-in-standalone-mode.md} | 0 docs/en/Quick-start.md | 4 ++-- 6 files changed, 4 insertions(+), 4 deletions(-) rename docs/cn/{Deploy-collector-in-cluster-mode-CN.md => Deploy-backend-in-cluster-mode-CN.md} (100%) rename docs/cn/{Deploy-collector-in-standalone-mode-CN.md => Deploy-backend-in-standalone-mode-CN.md} (100%) rename docs/en/{Deploy-collector-in-cluster-mode.md => Deploy-backend-in-cluster-mode.md} (100%) rename docs/en/{Deploy-collector-in-standalone-mode.md => Deploy-backend-in-standalone-mode.md} (100%) diff --git a/docs/cn/Deploy-collector-in-cluster-mode-CN.md b/docs/cn/Deploy-backend-in-cluster-mode-CN.md similarity index 100% rename from docs/cn/Deploy-collector-in-cluster-mode-CN.md rename to docs/cn/Deploy-backend-in-cluster-mode-CN.md diff --git a/docs/cn/Deploy-collector-in-standalone-mode-CN.md b/docs/cn/Deploy-backend-in-standalone-mode-CN.md similarity index 100% rename from docs/cn/Deploy-collector-in-standalone-mode-CN.md rename to docs/cn/Deploy-backend-in-standalone-mode-CN.md diff --git a/docs/cn/Quick-start-CN.md b/docs/cn/Quick-start-CN.md index 9567bf38d..211982c25 100644 --- a/docs/cn/Quick-start-CN.md +++ b/docs/cn/Quick-start-CN.md @@ -1,7 +1,7 @@ # 部署步骤 1. 在Maven Central中下载 `org.apache.skywalking.apm-dist`. 或者本地编译程序,在`dist`目录中找到`skywalking-dist.tar.gz/.zip`. 1. 部署 Backend - 1. [单机模式](Deploy-collector-in-standalone-mode-CN.md) - 1. [集群模式](Deploy-collector-in-cluster-mode-CN.md) + 1. [单机模式](Deploy-backend-in-standalone-mode-CN.md) + 1. [集群模式](Deploy-backend-in-cluster-mode-CN.md) 1. 部署 Java Agent,[doc](Deploy-skywalking-agent-CN.md) 1. 重启并访问系统功能,查看UI即可。 \ No newline at end of file diff --git a/docs/en/Deploy-collector-in-cluster-mode.md b/docs/en/Deploy-backend-in-cluster-mode.md similarity index 100% rename from docs/en/Deploy-collector-in-cluster-mode.md rename to docs/en/Deploy-backend-in-cluster-mode.md diff --git a/docs/en/Deploy-collector-in-standalone-mode.md b/docs/en/Deploy-backend-in-standalone-mode.md similarity index 100% rename from docs/en/Deploy-collector-in-standalone-mode.md rename to docs/en/Deploy-backend-in-standalone-mode.md diff --git a/docs/en/Quick-start.md b/docs/en/Quick-start.md index cdc15d93a..398ac04c1 100644 --- a/docs/en/Quick-start.md +++ b/docs/en/Quick-start.md @@ -1,7 +1,7 @@ # Quick start 1. Download `org.apache.skywalking.apm-dist` in maven central. Or find `skywalking-dist.tar.gz/.zip` in `dist` folder after `mvn clean package`. 1. Deploy Backend - - [Standalone Mode](Deploy-collector-in-standalone-mode.md) - - [Cluster Mode](Deploy-collector-in-cluster-mode.md) + - [Standalone Mode](Deploy-backend-in-standalone-mode.md) + - [Cluster Mode](Deploy-backend-in-cluster-mode.md) 1. Deploy Java Agent,[doc](Deploy-skywalking-agent.md) 1. Reboot your applications, and open UI. \ No newline at end of file From a7bbe2f4bc36fda48b202e32eb6b664a20ac4f81 Mon Sep 17 00:00:00 2001 From: wusheng Date: Sat, 3 Mar 2018 23:51:10 +0800 Subject: [PATCH 12/19] Sync UI updates. --- skywalking-ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skywalking-ui b/skywalking-ui index d785fc123..122df58cf 160000 --- a/skywalking-ui +++ b/skywalking-ui @@ -1 +1 @@ -Subproject commit d785fc123850605e2506e18f749aa14337878d0d +Subproject commit 122df58cff515dedf205b6497e7d8a2b57aba22f From 40eeb8739ab6e4e5f9debcc9868022f73798c354 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sun, 4 Mar 2018 00:22:45 +0800 Subject: [PATCH 13/19] 1. Get the service id only when agent register service name. 2. Setting the src span type when agent register service name. 3. Revert the topology build logic. --- .../ServiceNameDiscoveryServiceHandler.java | 2 +- .../define/service/IServiceNameService.java | 3 + .../provider/service/ServiceNameService.java | 4 + .../define/decorator/ReferenceDecorator.java | 1 + .../standardization/SpanIdExchanger.java | 2 +- .../storage/table/register/ServerType.java | 14 ++-- .../table/register/ServerTypeDefine.java | 78 +++++++++---------- .../register/ServerTypeDefineTestCase.java | 2 +- .../ui/service/ApplicationService.java | 5 +- .../ui/service/ServiceTopologyService.java | 4 +- .../collector/ui/service/TopologyBuilder.java | 25 ++---- .../dictionary/OperationNameDictionary.java | 22 +++++- 12 files changed, 85 insertions(+), 77 deletions(-) diff --git a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/ServiceNameDiscoveryServiceHandler.java b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/ServiceNameDiscoveryServiceHandler.java index bd644ebb3..35dedf385 100644 --- a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/ServiceNameDiscoveryServiceHandler.java +++ b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/ServiceNameDiscoveryServiceHandler.java @@ -54,7 +54,7 @@ public class ServiceNameDiscoveryServiceHandler extends ServiceNameDiscoveryServ int applicationId = serviceNameElement.getApplicationId(); String serviceName = serviceNameElement.getServiceName(); int srcSpanType = serviceNameElement.getSrcSpanTypeValue(); - int serviceId = serviceNameService.getOrCreate(applicationId, srcSpanType, serviceName); + int serviceId = serviceNameService.get(applicationId, srcSpanType, serviceName); if (serviceId != 0) { ServiceNameMappingElement.Builder mappingElement = ServiceNameMappingElement.newBuilder(); diff --git a/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IServiceNameService.java b/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IServiceNameService.java index 42656c397..184a397c6 100644 --- a/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IServiceNameService.java +++ b/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IServiceNameService.java @@ -24,5 +24,8 @@ import org.apache.skywalking.apm.collector.core.module.Service; * @author peng-yongsheng */ public interface IServiceNameService extends Service { + int getOrCreate(int applicationId, int srcSpanType, String serviceName); + + int get(int applicationId, int srcSpanType, String serviceName); } diff --git a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/ServiceNameService.java b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/ServiceNameService.java index 7e0579b2a..ac751bfc4 100644 --- a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/ServiceNameService.java +++ b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/ServiceNameService.java @@ -74,4 +74,8 @@ public class ServiceNameService implements IServiceNameService { } return serviceId; } + + @Override public int get(int applicationId, int srcSpanType, String serviceName) { + return getServiceIdCacheService().get(applicationId, srcSpanType, serviceName); + } } diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/ReferenceDecorator.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/ReferenceDecorator.java index 1c005c796..5f21f8229 100644 --- a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/ReferenceDecorator.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/ReferenceDecorator.java @@ -27,6 +27,7 @@ import org.apache.skywalking.apm.network.proto.UniqueId; * @author peng-yongsheng */ public class ReferenceDecorator implements StandardBuilder { + private boolean isOrigin = true; private StandardBuilder standardBuilder; private TraceSegmentReference referenceObject; diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java index a30e4d103..704d724f5 100644 --- a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java @@ -65,7 +65,7 @@ public class SpanIdExchanger implements IdExchanger { standardBuilder.setPeer(Const.EMPTY_STRING); int spanLayer = standardBuilder.getSpanLayerValue(); - int serverType = ServerTypeDefine.getInstance().getServerTypeByComponentId(standardBuilder.getComponentId()).getId(); + int serverType = ServerTypeDefine.getInstance().getServerTypeId(standardBuilder.getComponentId()); networkAddressIDService.update(peerId, spanLayer, serverType); } } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerType.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerType.java index 73449353b..b7b71a22b 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerType.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerType.java @@ -22,25 +22,25 @@ package org.apache.skywalking.apm.collector.storage.table.register; * @author peng-yongsheng */ public class ServerType { - private int id; private int componentId; + private int id; private String name; - public ServerType(int id, String name) { + public ServerType(int componentId, int id, String name) { + this.componentId = componentId; this.id = id; this.name = name; - this.componentId = id; } public int getId() { return id; } - public int getComponentId() { - return componentId; - } - public String getName() { return name; } + + public int getComponentId() { + return componentId; + } } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefine.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefine.java index df5662283..61a91fb66 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefine.java @@ -28,46 +28,41 @@ public class ServerTypeDefine { private static ServerTypeDefine INSTANCE = new ServerTypeDefine(); + private String[] serverTypeNames; private ServerType[] serverTypes; - private static final String HTTP = "http"; - private static final String GRPC = "gRPC"; - private static final String DUBBO = "dubbo"; - private static final String MOTAN = "motan"; - private static final String CLIENT = "client"; - private static final String JDBC_DRIVER = "JDBC driver"; - private ServerTypeDefine() { this.serverTypes = new ServerType[30]; - addServerType(new ServerType(ComponentsDefine.TOMCAT.getId(), Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.HTTPCLIENT.getId(), Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.DUBBO.getId(), DUBBO)); - addServerType(new ServerType(ComponentsDefine.H2.getId(), JDBC_DRIVER)); - addServerType(new ServerType(ComponentsDefine.MYSQL.getId(), JDBC_DRIVER)); - addServerType(new ServerType(ComponentsDefine.ORACLE.getId(), JDBC_DRIVER)); - addServerType(new ServerType(ComponentsDefine.REDIS.getId(), CLIENT)); - addServerType(new ServerType(ComponentsDefine.MOTAN.getId(), MOTAN)); - addServerType(new ServerType(ComponentsDefine.MONGODB.getId(), CLIENT)); - addServerType(new ServerType(ComponentsDefine.RESIN.getId(), Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.FEIGN.getId(), Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.OKHTTP.getId(), Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.SPRING_REST_TEMPLATE.getId(), Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.SPRING_MVC_ANNOTATION.getId(), Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.STRUTS2.getId(), Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.NUTZ_MVC_ANNOTATION.getId(), Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.NUTZ_HTTP.getId(), HTTP)); - addServerType(new ServerType(ComponentsDefine.JETTY_CLIENT.getId(), HTTP)); - addServerType(new ServerType(ComponentsDefine.JETTY_SERVER.getId(), Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.MEMCACHED.getId(), CLIENT)); - addServerType(new ServerType(ComponentsDefine.SHARDING_JDBC.getId(), JDBC_DRIVER)); - addServerType(new ServerType(ComponentsDefine.POSTGRESQL.getId(), JDBC_DRIVER)); - addServerType(new ServerType(ComponentsDefine.GRPC.getId(), GRPC)); - addServerType(new ServerType(ComponentsDefine.ELASTIC_JOB.getId(), Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.ROCKET_MQ.getId(), CLIENT)); - addServerType(new ServerType(ComponentsDefine.HTTP_ASYNC_CLIENT.getId(), HTTP)); - addServerType(new ServerType(ComponentsDefine.KAFKA.getId(), CLIENT)); - addServerType(new ServerType(ComponentsDefine.SERVICECOMB.getId(), Const.EMPTY_STRING)); - addServerType(new ServerType(ComponentsDefine.HYSTRIX.getId(), Const.EMPTY_STRING)); + this.serverTypeNames = new String[11]; + addServerType(new ServerType(ComponentsDefine.TOMCAT.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.HTTPCLIENT.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.DUBBO.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.H2.getId(), 1, ComponentsDefine.H2.getName())); + addServerType(new ServerType(ComponentsDefine.MYSQL.getId(), 2, ComponentsDefine.MYSQL.getName())); + addServerType(new ServerType(ComponentsDefine.ORACLE.getId(), 3, ComponentsDefine.ORACLE.getName())); + addServerType(new ServerType(ComponentsDefine.REDIS.getId(), 4, ComponentsDefine.REDIS.getName())); + addServerType(new ServerType(ComponentsDefine.MOTAN.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.MONGODB.getId(), 5, ComponentsDefine.MONGODB.getName())); + addServerType(new ServerType(ComponentsDefine.RESIN.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.FEIGN.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.OKHTTP.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.SPRING_REST_TEMPLATE.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.SPRING_MVC_ANNOTATION.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.STRUTS2.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.NUTZ_MVC_ANNOTATION.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.NUTZ_HTTP.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.JETTY_CLIENT.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.JETTY_SERVER.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.MEMCACHED.getId(), 6, ComponentsDefine.MEMCACHED.getName())); + addServerType(new ServerType(ComponentsDefine.SHARDING_JDBC.getId(), 7, ComponentsDefine.SHARDING_JDBC.getName())); + addServerType(new ServerType(ComponentsDefine.POSTGRESQL.getId(), 8, ComponentsDefine.POSTGRESQL.getName())); + addServerType(new ServerType(ComponentsDefine.GRPC.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.ELASTIC_JOB.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.ROCKET_MQ.getId(), 9, ComponentsDefine.ROCKET_MQ.getName())); + addServerType(new ServerType(ComponentsDefine.HTTP_ASYNC_CLIENT.getId(), Const.NONE, Const.EMPTY_STRING)); + addServerType(new ServerType(ComponentsDefine.KAFKA.getId(), 10, ComponentsDefine.KAFKA.getName())); + addServerType(new ServerType(ComponentsDefine.SERVICECOMB.getId(), Const.NONE, ComponentsDefine.SERVICECOMB.getName())); + addServerType(new ServerType(ComponentsDefine.HYSTRIX.getId(), Const.NONE, ComponentsDefine.HYSTRIX.getName())); } public static ServerTypeDefine getInstance() { @@ -75,14 +70,15 @@ public class ServerTypeDefine { } private void addServerType(ServerType serverType) { - serverTypes[serverType.getId()] = serverType; + serverTypeNames[serverType.getId()] = serverType.getName(); + serverTypes[serverType.getComponentId()] = serverType; } - public ServerType getServerTypeByComponentId(int componentId) { - return serverTypes[componentId]; + public int getServerTypeId(int componentId) { + return serverTypes[componentId].getId(); } - public ServerType getServerType(int serverTypeId) { - return serverTypes[serverTypeId]; + public String getServerType(int serverTypeId) { + return serverTypeNames[serverTypeId]; } } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/test/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefineTestCase.java b/apm-collector/apm-collector-storage/collector-storage-define/src/test/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefineTestCase.java index 1ccc4534f..015eff79b 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/test/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefineTestCase.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/test/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefineTestCase.java @@ -35,7 +35,7 @@ public class ServerTypeDefineTestCase { for (Field field : fields) { if (field.getType().equals(OfficialComponent.class)) { OfficialComponent component = (OfficialComponent)field.get(ComponentsDefine.getInstance()); - ServerTypeDefine.getInstance().getServerTypeByComponentId(component.getId()); + ServerTypeDefine.getInstance().getServerTypeId(component.getId()); } } } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationService.java index e9082d53c..bb69d9b3c 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationService.java @@ -40,7 +40,6 @@ import org.apache.skywalking.apm.collector.storage.ui.overview.ConjecturalApp; import org.apache.skywalking.apm.collector.storage.ui.overview.ConjecturalAppBrief; import org.apache.skywalking.apm.collector.storage.ui.service.ServiceMetric; import org.apache.skywalking.apm.collector.ui.utils.DurationUtils; -import org.apache.skywalking.apm.network.trace.component.ComponentsDefine; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -118,8 +117,8 @@ public class ApplicationService { long endSecondTimeBucket) throws ParseException { List conjecturalApps = networkAddressUIDAO.getConjecturalApps(); conjecturalApps.forEach(conjecturalApp -> { - int componentId = ServerTypeDefine.getInstance().getServerType(conjecturalApp.getId()).getComponentId(); - conjecturalApp.setName(ComponentsDefine.getInstance().getComponentName(componentId)); + String serverType = ServerTypeDefine.getInstance().getServerType(conjecturalApp.getId()); + conjecturalApp.setName(serverType); }); ConjecturalAppBrief conjecturalAppBrief = new ConjecturalAppBrief(); diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServiceTopologyService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServiceTopologyService.java index c8f54712b..1eb54b359 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServiceTopologyService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServiceTopologyService.java @@ -73,8 +73,8 @@ public class ServiceTopologyService { Map components = new HashMap<>(); applicationComponents.forEach(component -> components.put(component.getApplicationId(), ComponentsDefine.getInstance().getComponentName(component.getComponentId()))); - List referenceMetrics = serviceReferenceMetricUIDAO.getFrontServices(step, startTimeBucket, endTimeBucket, MetricSource.Callee, serviceId); - referenceMetrics.addAll(serviceReferenceMetricUIDAO.getBehindServices(step, startTimeBucket, endTimeBucket, MetricSource.Caller, serviceId)); + List referenceMetrics = serviceReferenceMetricUIDAO.getFrontServices(step, startTimeBucket, endTimeBucket, MetricSource.Caller, serviceId); + referenceMetrics.addAll(serviceReferenceMetricUIDAO.getBehindServices(step, startTimeBucket, endTimeBucket, MetricSource.Callee, serviceId)); Set nodeIds = new HashSet<>(); 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 74c7148b2..cbd013e2d 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 @@ -33,7 +33,6 @@ import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMappingUID 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.table.register.Application; -import org.apache.skywalking.apm.collector.storage.table.register.ServerTypeDefine; import org.apache.skywalking.apm.collector.storage.ui.alarm.Alarm; import org.apache.skywalking.apm.collector.storage.ui.application.ApplicationNode; import org.apache.skywalking.apm.collector.storage.ui.application.ConjecturalNode; @@ -72,8 +71,7 @@ class TopologyBuilder { List callerReferenceMetric, List calleeReferenceMetric, long startTimeBucket, long endTimeBucket, long startSecondTimeBucket, long endSecondTimeBucket) { - Map componentNames = changeNodeCompName2Map(applicationComponents); - Map componentIds = changeNodeCompId2Map(applicationComponents); + Map components = changeNodeComp2Map(applicationComponents); Map mappings = changeMapping2Map(applicationMappings); calleeReferenceMetric = calleeReferenceMetricFilter(calleeReferenceMetric); @@ -85,7 +83,7 @@ class TopologyBuilder { ApplicationNode applicationNode = new ApplicationNode(); applicationNode.setId(applicationId); applicationNode.setName(application.getApplicationCode()); - applicationNode.setType(componentNames.getOrDefault(application.getApplicationId(), Const.UNKNOWN)); + applicationNode.setType(components.getOrDefault(application.getApplicationId(), Const.UNKNOWN)); applicationNode.setSla(SLACalculator.INSTANCE.calculate(applicationMetric.getErrorCalls(), applicationMetric.getCalls())); try { @@ -131,7 +129,7 @@ class TopologyBuilder { ConjecturalNode conjecturalNode = new ConjecturalNode(); conjecturalNode.setId(target.getApplicationId()); conjecturalNode.setName(target.getApplicationCode()); - conjecturalNode.setType(componentNames.getOrDefault(target.getApplicationId(), Const.UNKNOWN)); + conjecturalNode.setType(components.getOrDefault(target.getApplicationId(), Const.UNKNOWN)); nodes.add(conjecturalNode); } @@ -143,7 +141,7 @@ class TopologyBuilder { call.setTarget(actualTargetId); call.setTargetName(applicationCacheService.getApplicationById(actualTargetId).getApplicationCode()); call.setAlert(false); - call.setCallType(ServerTypeDefine.getInstance().getServerTypeByComponentId(componentIds.get(referenceMetric.getTarget())).getName()); + call.setCallType(components.get(referenceMetric.getTarget())); try { call.setCallsPerSec(referenceMetric.getCalls() / secondBetweenService.calculate(source.getApplicationId(), startSecondTimeBucket, endSecondTimeBucket)); } catch (ParseException e) { @@ -169,7 +167,7 @@ class TopologyBuilder { ConjecturalNode conjecturalNode = new ConjecturalNode(); conjecturalNode.setId(source.getApplicationId()); conjecturalNode.setName(source.getApplicationCode()); - conjecturalNode.setType(componentNames.getOrDefault(source.getApplicationId(), Const.UNKNOWN)); + conjecturalNode.setType(components.getOrDefault(source.getApplicationId(), Const.UNKNOWN)); nodes.add(conjecturalNode); } @@ -183,7 +181,7 @@ class TopologyBuilder { if (source.getApplicationId() == Const.NONE_APPLICATION_ID) { call.setCallType(Const.EMPTY_STRING); } else { - call.setCallType(ServerTypeDefine.getInstance().getServerTypeByComponentId(componentIds.get(referenceMetric.getTarget())).getName()); + call.setCallType(components.get(referenceMetric.getTarget())); } try { call.setCallsPerSec(referenceMetric.getCalls() / secondBetweenService.calculate(target.getApplicationId(), startSecondTimeBucket, endSecondTimeBucket)); @@ -221,7 +219,7 @@ class TopologyBuilder { return mappings; } - private Map changeNodeCompName2Map( + private Map changeNodeComp2Map( List applicationComponents) { Map components = new HashMap<>(); applicationComponents.forEach(applicationComponent -> { @@ -230,13 +228,4 @@ class TopologyBuilder { }); return components; } - - private Map changeNodeCompId2Map( - List applicationComponents) { - Map components = new HashMap<>(); - applicationComponents.forEach(applicationComponent -> { - components.put(applicationComponent.getApplicationId(), applicationComponent.getComponentId()); - }); - return components; - } } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/dictionary/OperationNameDictionary.java b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/dictionary/OperationNameDictionary.java index 7075f2860..ed4832f32 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/dictionary/OperationNameDictionary.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/dictionary/OperationNameDictionary.java @@ -74,6 +74,7 @@ public enum OperationNameDictionary { ServiceNameElement serviceNameElement = ServiceNameElement.newBuilder() .setApplicationId(operationNameKey.getApplicationId()) .setServiceName(operationNameKey.getOperationName()) + .setSrcSpanType(operationNameKey.getSpanType()) .build(); builder.addElements(serviceNameElement); } @@ -122,9 +123,14 @@ public enum OperationNameDictionary { OperationNameKey key = (OperationNameKey)o; - if (applicationId != key.applicationId) - return false; - return operationName.equals(key.operationName); + boolean isApplicationMatch = false; + if (applicationId == key.applicationId) { + isApplicationMatch = true; + } else if (operationName.equals(key.operationName)) { + isApplicationMatch = true; + } + return isApplicationMatch && isEntry == key.isEntry + && isExit == key.isExit; } @Override public int hashCode() { @@ -140,5 +146,15 @@ public enum OperationNameDictionary { boolean isExit() { return isExit; } + + SpanType getSpanType() { + if (isEntry) { + return SpanType.Entry; + } else if (isExit) { + return SpanType.Exit; + } else { + return SpanType.Local; + } + } } } From 8e3e0a3c5536ea01eaed6826b4b2954ffeeef1b8 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sun, 4 Mar 2018 11:30:08 +0800 Subject: [PATCH 14/19] Clear the duration in query condition when trace id is not empty. --- .../skywalking/apm/collector/ui/query/TraceQuery.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/TraceQuery.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/TraceQuery.java index 0ce17ee84..a39c1cf0d 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/TraceQuery.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/TraceQuery.java @@ -65,11 +65,11 @@ public class TraceQuery implements Query { long endSecondTimeBucket = 0; String traceId = Const.EMPTY_STRING; - if (ObjectUtils.isNotEmpty(condition.getQueryDuration())) { + if (StringUtils.isNotEmpty(condition.getTraceId())) { + traceId = condition.getTraceId(); + } else if (ObjectUtils.isNotEmpty(condition.getQueryDuration())) { startSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(condition.getQueryDuration().getStep(), condition.getQueryDuration().getStart()); endSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(condition.getQueryDuration().getStep(), condition.getQueryDuration().getEnd()); - } else if (StringUtils.isNotEmpty(condition.getTraceId())) { - traceId = condition.getTraceId(); } else { throw new UnexpectedException("The condition must contains either queryDuration or traceId."); } From c7dae338f053892ff0d50e94f4e4fb6d8b14bb5a Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sun, 4 Mar 2018 11:35:07 +0800 Subject: [PATCH 15/19] Make the alarm trend rate value is 0 when application size equal to 0. --- .../skywalking/apm/collector/ui/service/AlarmService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/AlarmService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/AlarmService.java index 62bd60bfa..0af55fa97 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/AlarmService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/AlarmService.java @@ -146,7 +146,11 @@ public class AlarmService { AlarmTrend alarmTrend = new AlarmTrend(); durationPoints.forEach(durationPoint -> { - alarmTrend.getNumOfAlarmRate().add((trendsMap.getOrDefault(durationPoint.getPoint(), 0) * 10000) / (applications.size())); + if (applications.size() == 0) { + alarmTrend.getNumOfAlarmRate().add(0); + } else { + alarmTrend.getNumOfAlarmRate().add((trendsMap.getOrDefault(durationPoint.getPoint(), 0) * 10000) / (applications.size())); + } }); return alarmTrend; } From da3d993e4ddf969787777c80c55394d3ba5c31ee Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sun, 4 Mar 2018 13:56:59 +0800 Subject: [PATCH 16/19] Add application node when the source of reference is not have application metric. --- .../service/SegmentBase64Printer.java | 78 +++++++++++++++++++ .../src/test/resources/log4j2.xml | 37 +++++++++ .../collector/ui/service/TopologyBuilder.java | 19 +++++ 3 files changed, 134 insertions(+) create mode 100644 apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/test/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentBase64Printer.java create mode 100644 apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/test/resources/log4j2.xml diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/test/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentBase64Printer.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/test/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentBase64Printer.java new file mode 100644 index 000000000..c729bf142 --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/test/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentBase64Printer.java @@ -0,0 +1,78 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.service; + +import com.google.protobuf.InvalidProtocolBufferException; +import java.util.Base64; +import java.util.List; +import org.apache.skywalking.apm.network.proto.SpanObject; +import org.apache.skywalking.apm.network.proto.TraceSegmentObject; +import org.apache.skywalking.apm.network.proto.UniqueId; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class SegmentBase64Printer { + + private static final Logger LOGGER = LoggerFactory.getLogger(SegmentBase64Printer.class); + + public static void main(String[] args) throws InvalidProtocolBufferException { + String segmentBase64 = "CgwKCgIBsv/x1L2vgBsSggEQ////////////ARirnsP1niwg9Z7D9Z4sOhhIMi9KREJJL0Nvbm5lY3Rpb24vY2xvc2VKDGxvY2FsaG9zdDotMVABWAFgBHoOCgdkYi50eXBlEgNzcWx6GQoLZGIuaW5zdGFuY2USCmRhdGFTb3VyY2V6DgoMZGIuc3RhdGVtZW50GP///////////wEgAg=="; + byte[] binarySegment = Base64.getDecoder().decode(segmentBase64); + TraceSegmentObject segmentObject = TraceSegmentObject.parseFrom(binarySegment); + + UniqueId segmentId = segmentObject.getTraceSegmentId(); + StringBuilder segmentIdBuilder = new StringBuilder(); + for (int i = 0; i < segmentId.getIdPartsList().size(); i++) { + if (i == 0) { + segmentIdBuilder.append(segmentId.getIdPartsList().get(i)); + } else { + segmentIdBuilder.append(".").append(segmentId.getIdPartsList().get(i)); + } + } + LOGGER.info("SegmentId: {}", segmentIdBuilder.toString()); + LOGGER.info("ApplicationId: {}", segmentObject.getApplicationId()); + LOGGER.info("ApplicationInstanceId: {}", segmentObject.getApplicationInstanceId()); + List spansList = segmentObject.getSpansList(); + LOGGER.info("Spans:"); + spansList.forEach(span -> { + LOGGER.info(" Span:"); + LOGGER.info(" SpanId: {}", span.getSpanId()); + LOGGER.info(" ParentSpanId: {}", span.getParentSpanId()); + LOGGER.info(" SpanLayer: {}", span.getSpanLayer()); + LOGGER.info(" SpanType: {}", span.getSpanType()); + LOGGER.info(" StartTime: {}", span.getStartTime()); + LOGGER.info(" EndTime: {}", span.getEndTime()); + LOGGER.info(" ComponentId: {}", span.getComponentId()); + LOGGER.info(" Component: {}", span.getComponent()); + LOGGER.info(" OperationNameId: {}", span.getOperationNameId()); + LOGGER.info(" OperationName: {}", span.getOperationName()); + LOGGER.info(" PeerId: {}", span.getPeerId()); + LOGGER.info(" Peer: {}", span.getPeer()); + LOGGER.info(" IsError: {}", span.getIsError()); + + LOGGER.info(" reference:"); + span.getRefsList().forEach(reference -> { + LOGGER.info(" EntryApplicationInstanceId: {}", reference.getEntryApplicationInstanceId()); + }); + }); + } +} diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/test/resources/log4j2.xml b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/test/resources/log4j2.xml new file mode 100644 index 000000000..6697ebf27 --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/test/resources/log4j2.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + 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 cbd013e2d..80caa04e3 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 @@ -20,9 +20,11 @@ package org.apache.skywalking.apm.collector.ui.service; import java.text.ParseException; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Set; import org.apache.skywalking.apm.collector.cache.CacheModule; import org.apache.skywalking.apm.collector.cache.service.ApplicationCacheService; import org.apache.skywalking.apm.collector.core.module.ModuleManager; @@ -133,6 +135,17 @@ class TopologyBuilder { nodes.add(conjecturalNode); } + Set nodeIds = buildNodeIds(nodes); + if (!nodeIds.contains(source.getApplicationId())) { + ApplicationNode applicationNode = new ApplicationNode(); + applicationNode.setId(source.getApplicationId()); + applicationNode.setName(source.getApplicationCode()); + applicationNode.setType(components.getOrDefault(source.getApplicationId(), Const.UNKNOWN)); + applicationNode.setApdex(100); + applicationNode.setSla(100); + nodes.add(applicationNode); + } + Call call = new Call(); call.setSource(source.getApplicationId()); call.setSourceName(source.getApplicationCode()); @@ -198,6 +211,12 @@ class TopologyBuilder { return topology; } + private Set buildNodeIds(List nodes) { + Set nodeIds = new HashSet<>(); + nodes.forEach(node -> nodeIds.add(node.getId())); + return nodeIds; + } + private List calleeReferenceMetricFilter( List calleeReferenceMetric) { List filteredMetrics = new LinkedList<>(); From 0006cb4b10072a05c6c2f45d5065ae56272ebc89 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sun, 4 Mar 2018 14:10:51 +0800 Subject: [PATCH 17/19] Fixed the NullPointerException in getServerThroughput method. --- .../skywalking/apm/collector/ui/service/ServerService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServerService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServerService.java index 667c1b864..dd5f3ca05 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServerService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServerService.java @@ -26,6 +26,7 @@ import java.util.LinkedList; import java.util.List; 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.module.ModuleManager; import org.apache.skywalking.apm.collector.core.util.Const; import org.apache.skywalking.apm.collector.core.util.StringUtils; @@ -59,6 +60,7 @@ public class ServerService { private final IGCMetricUIDAO gcMetricUIDAO; private final IMemoryMetricUIDAO memoryMetricUIDAO; private final ApplicationCacheService applicationCacheService; + private final InstanceCacheService instanceCacheService; private final SecondBetweenService secondBetweenService; public ServerService(ModuleManager moduleManager) { @@ -68,6 +70,7 @@ public class ServerService { this.gcMetricUIDAO = moduleManager.find(StorageModule.NAME).getService(IGCMetricUIDAO.class); this.memoryMetricUIDAO = moduleManager.find(StorageModule.NAME).getService(IMemoryMetricUIDAO.class); this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class); + this.instanceCacheService = moduleManager.find(CacheModule.NAME).getService(InstanceCacheService.class); this.secondBetweenService = new SecondBetweenService(moduleManager); } @@ -105,7 +108,8 @@ public class ServerService { List serverThroughput = instanceMetricUIDAO.getServerThroughput(applicationId, step, startTimeBucket, endTimeBucket, secondBetween, topN, MetricSource.Callee); serverThroughput.forEach(appServerInfo -> { - String applicationCode = applicationCacheService.getApplicationById(applicationId).getApplicationCode(); + appServerInfo.setApplicationId(instanceCacheService.getApplicationId(appServerInfo.getId())); + String applicationCode = applicationCacheService.getApplicationById(appServerInfo.getApplicationId()).getApplicationCode(); appServerInfo.setApplicationCode(applicationCode); Instance instance = instanceUIDAO.getInstance(appServerInfo.getId()); appServerInfo.setOsInfo(instance.getOsInfo()); From ca20d088377bca4d209db0642eeb4a18d1a254ed Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sun, 4 Mar 2018 14:29:26 +0800 Subject: [PATCH 18/19] Use application mapping to get the actual application id for the alarm title. --- .../apm/collector/ui/query/AlarmQuery.java | 6 ++-- .../collector/ui/service/AlarmService.java | 29 +++++++++++++++---- .../service/ApplicationTopologyService.java | 2 +- .../ui/service/ClusterTopologyService.java | 2 +- .../collector/ui/service/TopologyBuilder.java | 5 ++-- 5 files changed, 31 insertions(+), 13 deletions(-) diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/AlarmQuery.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/AlarmQuery.java index 678ab69d7..c56ae44a3 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/AlarmQuery.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/AlarmQuery.java @@ -58,11 +58,11 @@ public class AlarmQuery implements Query { switch (alarmType) { case APPLICATION: - return getAlarmService().loadApplicationAlarmList(keyword, startTimeBucket, endTimeBucket, page.getLimit(), page.getFrom()); + return getAlarmService().loadApplicationAlarmList(keyword, duration.getStep(), startTimeBucket, endTimeBucket, page.getLimit(), page.getFrom()); case SERVER: - return getAlarmService().loadInstanceAlarmList(keyword, startTimeBucket, endTimeBucket, page.getLimit(), page.getFrom()); + return getAlarmService().loadInstanceAlarmList(keyword, duration.getStep(), startTimeBucket, endTimeBucket, page.getLimit(), page.getFrom()); case SERVICE: - return getAlarmService().loadServiceAlarmList(keyword, startTimeBucket, endTimeBucket, page.getLimit(), page.getFrom()); + return getAlarmService().loadServiceAlarmList(keyword, duration.getStep(), startTimeBucket, endTimeBucket, page.getLimit(), page.getFrom()); default: return new Alarm(); } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/AlarmService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/AlarmService.java index 0af55fa97..f9080794f 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/AlarmService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/AlarmService.java @@ -32,6 +32,7 @@ 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.ui.IApplicationAlarmListUIDAO; import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationAlarmUIDAO; +import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMappingUIDAO; import org.apache.skywalking.apm.collector.storage.dao.ui.IInstanceAlarmUIDAO; import org.apache.skywalking.apm.collector.storage.dao.ui.IInstanceUIDAO; import org.apache.skywalking.apm.collector.storage.dao.ui.IServiceAlarmUIDAO; @@ -56,6 +57,7 @@ public class AlarmService { private final Gson gson = new Gson(); private final IInstanceUIDAO instanceDAO; private final IApplicationAlarmUIDAO applicationAlarmUIDAO; + private final IApplicationMappingUIDAO applicationMappingUIDAO; private final IInstanceAlarmUIDAO instanceAlarmUIDAO; private final IServiceAlarmUIDAO serviceAlarmUIDAO; private final IApplicationAlarmListUIDAO applicationAlarmListUIDAO; @@ -67,6 +69,7 @@ public class AlarmService { public AlarmService(ModuleManager moduleManager) { this.instanceDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceUIDAO.class); this.applicationAlarmUIDAO = moduleManager.find(StorageModule.NAME).getService(IApplicationAlarmUIDAO.class); + this.applicationMappingUIDAO = moduleManager.find(StorageModule.NAME).getService(IApplicationMappingUIDAO.class); this.instanceAlarmUIDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceAlarmUIDAO.class); this.serviceAlarmUIDAO = moduleManager.find(StorageModule.NAME).getService(IServiceAlarmUIDAO.class); this.applicationAlarmListUIDAO = moduleManager.find(StorageModule.NAME).getService(IApplicationAlarmListUIDAO.class); @@ -74,12 +77,16 @@ public class AlarmService { this.serviceNameCacheService = moduleManager.find(CacheModule.NAME).getService(ServiceNameCacheService.class); } - public Alarm loadApplicationAlarmList(String keyword, long startTimeBucket, long endTimeBucket, + public Alarm loadApplicationAlarmList(String keyword, Step step, long startTimeBucket, long endTimeBucket, int limit, int from) throws ParseException { logger.debug("keyword: {}, startTimeBucket: {}, endTimeBucket: {}, limit: {}, from: {}", keyword, startTimeBucket, endTimeBucket, limit, from); Alarm alarm = applicationAlarmUIDAO.loadAlarmList(keyword, startTimeBucket, endTimeBucket, limit, from); + List applicationMappings = applicationMappingUIDAO.load(step, startTimeBucket, endTimeBucket); + Map mappings = new HashMap<>(); + applicationMappings.forEach(applicationMapping -> mappings.put(applicationMapping.getMappingApplicationId(), applicationMapping.getApplicationId())); + alarm.getItems().forEach(item -> { - String applicationCode = applicationCacheService.getApplicationById(item.getId()).getApplicationCode(); + String applicationCode = applicationCacheService.getApplicationById(mappings.getOrDefault(item.getId(), item.getId())).getApplicationCode(); switch (item.getCauseType()) { case SLOW_RESPONSE: item.setTitle("Application " + applicationCode + RESPONSE_TIME_ALARM); @@ -92,13 +99,18 @@ public class AlarmService { return alarm; } - public Alarm loadInstanceAlarmList(String keyword, long startTimeBucket, long endTimeBucket, + public Alarm loadInstanceAlarmList(String keyword, Step step, long startTimeBucket, long endTimeBucket, int limit, int from) throws ParseException { logger.debug("keyword: {}, startTimeBucket: {}, endTimeBucket: {}, limit: {}, from: {}", keyword, startTimeBucket, endTimeBucket, limit, from); Alarm alarm = instanceAlarmUIDAO.loadAlarmList(keyword, startTimeBucket, endTimeBucket, limit, from); + + List applicationMappings = applicationMappingUIDAO.load(step, startTimeBucket, endTimeBucket); + Map mappings = new HashMap<>(); + applicationMappings.forEach(applicationMapping -> mappings.put(applicationMapping.getMappingApplicationId(), applicationMapping.getApplicationId())); + alarm.getItems().forEach(item -> { Instance instance = instanceDAO.getInstance(item.getId()); - String applicationCode = applicationCacheService.getApplicationById(instance.getApplicationId()).getApplicationCode(); + String applicationCode = applicationCacheService.getApplicationById(mappings.getOrDefault(instance.getApplicationId(), instance.getApplicationId())).getApplicationCode(); String serverName = buildServerName(instance.getOsInfo()); switch (item.getCauseType()) { case SLOW_RESPONSE: @@ -113,13 +125,18 @@ public class AlarmService { return alarm; } - public Alarm loadServiceAlarmList(String keyword, long startTimeBucket, long endTimeBucket, + public Alarm loadServiceAlarmList(String keyword, Step step, long startTimeBucket, long endTimeBucket, int limit, int from) throws ParseException { logger.debug("keyword: {}, startTimeBucket: {}, endTimeBucket: {}, limit: {}, from: {}", keyword, startTimeBucket, endTimeBucket, limit, from); Alarm alarm = serviceAlarmUIDAO.loadAlarmList(keyword, startTimeBucket, endTimeBucket, limit, from); + + List applicationMappings = applicationMappingUIDAO.load(step, startTimeBucket, endTimeBucket); + Map mappings = new HashMap<>(); + applicationMappings.forEach(applicationMapping -> mappings.put(applicationMapping.getMappingApplicationId(), applicationMapping.getApplicationId())); + alarm.getItems().forEach(item -> { ServiceName serviceName = serviceNameCacheService.get(item.getId()); - String applicationCode = applicationCacheService.getApplicationById(serviceName.getApplicationId()).getApplicationCode(); + String applicationCode = applicationCacheService.getApplicationById(mappings.getOrDefault(serviceName.getApplicationId(), serviceName.getApplicationId())).getApplicationCode(); switch (item.getCauseType()) { case SLOW_RESPONSE: item.setTitle("Service " + serviceName.getServiceName() + " of Application " + applicationCode + RESPONSE_TIME_ALARM); 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 7d4fe4180..d50b431b8 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 @@ -82,6 +82,6 @@ public class ApplicationTopologyService { TopologyBuilder builder = new TopologyBuilder(moduleManager); - return builder.build(applicationComponents, applicationMappings, applicationMetrics, callerReferenceMetric, calleeReferenceMetric, startTimeBucket, endTimeBucket, startSecondTimeBucket, endSecondTimeBucket); + return builder.build(applicationComponents, applicationMappings, applicationMetrics, callerReferenceMetric, calleeReferenceMetric, step, startTimeBucket, endTimeBucket, startSecondTimeBucket, endSecondTimeBucket); } } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ClusterTopologyService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ClusterTopologyService.java index 8e1609c72..fe9fa09bf 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ClusterTopologyService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ClusterTopologyService.java @@ -72,6 +72,6 @@ public class ClusterTopologyService { TopologyBuilder builder = new TopologyBuilder(moduleManager); - return builder.build(applicationComponents, applicationMappings, applicationMetrics, callerReferenceMetric, calleeReferenceMetric, startTimeBucket, endTimeBucket, startSecondTimeBucket, endSecondTimeBucket); + return builder.build(applicationComponents, applicationMappings, applicationMetrics, callerReferenceMetric, calleeReferenceMetric, step, startTimeBucket, endTimeBucket, startSecondTimeBucket, endSecondTimeBucket); } } 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 80caa04e3..7cb451362 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 @@ -40,6 +40,7 @@ import org.apache.skywalking.apm.collector.storage.ui.application.ApplicationNod import org.apache.skywalking.apm.collector.storage.ui.application.ConjecturalNode; import org.apache.skywalking.apm.collector.storage.ui.common.Call; import org.apache.skywalking.apm.collector.storage.ui.common.Node; +import org.apache.skywalking.apm.collector.storage.ui.common.Step; import org.apache.skywalking.apm.collector.storage.ui.common.Topology; import org.apache.skywalking.apm.collector.storage.ui.common.VisualUserNode; import org.apache.skywalking.apm.collector.ui.utils.ApdexCalculator; @@ -72,7 +73,7 @@ class TopologyBuilder { List applicationMetrics, List callerReferenceMetric, List calleeReferenceMetric, - long startTimeBucket, long endTimeBucket, long startSecondTimeBucket, long endSecondTimeBucket) { + Step step, long startTimeBucket, long endTimeBucket, long startSecondTimeBucket, long endSecondTimeBucket) { Map components = changeNodeComp2Map(applicationComponents); Map mappings = changeMapping2Map(applicationMappings); @@ -97,7 +98,7 @@ class TopologyBuilder { applicationNode.setApdex(ApdexCalculator.INSTANCE.calculate(applicationMetric.getSatisfiedCount(), applicationMetric.getToleratingCount(), applicationMetric.getFrustratedCount())); applicationNode.setAlarm(false); try { - Alarm alarm = alarmService.loadApplicationAlarmList(Const.EMPTY_STRING, startTimeBucket, endTimeBucket, 1, 0); + Alarm alarm = alarmService.loadApplicationAlarmList(Const.EMPTY_STRING, step, startTimeBucket, endTimeBucket, 1, 0); if (alarm.getItems().size() > 0) { applicationNode.setAlarm(true); } From 610edfe42662c0d709c9c74907285348b2c476ed Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sun, 4 Mar 2018 14:32:01 +0800 Subject: [PATCH 19/19] Fixed compile error. --- .../skywalking/apm/collector/ui/service/TopologyBuilder.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 7cb451362..5e7f699d4 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 @@ -108,14 +108,14 @@ class TopologyBuilder { applicationNode.setNumOfServer(serverService.getAllServer(applicationId, startSecondTimeBucket, endSecondTimeBucket).size()); try { - Alarm alarm = alarmService.loadInstanceAlarmList(Const.EMPTY_STRING, startTimeBucket, endTimeBucket, 1000, 0); + Alarm alarm = alarmService.loadInstanceAlarmList(Const.EMPTY_STRING, step, startTimeBucket, endTimeBucket, 1000, 0); applicationNode.setNumOfServerAlarm(alarm.getItems().size()); } catch (ParseException e) { logger.error(e.getMessage(), e); } try { - Alarm alarm = alarmService.loadServiceAlarmList(Const.EMPTY_STRING, startTimeBucket, endTimeBucket, 1000, 0); + Alarm alarm = alarmService.loadServiceAlarmList(Const.EMPTY_STRING, step, startTimeBucket, endTimeBucket, 1000, 0); applicationNode.setNumOfServiceAlarm(alarm.getItems().size()); } catch (ParseException e) { logger.error(e.getMessage(), e);