From 508b11dd46f28848f462bee74a712265f57167e5 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sun, 11 Feb 2018 18:00:48 +0800 Subject: [PATCH] Provide the getConjecturalApps query. --- .../storage/dao/ui/INetworkAddressUIDAO.java | 4 +++ .../storage/ui/overview/ConjecturalApp.java | 9 +++++ .../ui/overview/ConjecturalAppBrief.java | 5 +++ .../es/dao/ui/NetworkAddressEsUIDAO.java | 34 +++++++++++++++++++ .../h2/dao/ui/NetworkAddressH2UIDAO.java | 6 ++++ .../ui/query/OverViewLayerQuery.java | 7 ++-- .../ui/service/ApplicationService.java | 19 +++++++++++ 7 files changed, 82 insertions(+), 2 deletions(-) diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/INetworkAddressUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/INetworkAddressUIDAO.java index 7ec591128..c52dd39e3 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/INetworkAddressUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/INetworkAddressUIDAO.java @@ -18,11 +18,15 @@ package org.apache.skywalking.apm.collector.storage.dao.ui; +import java.util.List; import org.apache.skywalking.apm.collector.storage.base.dao.DAO; +import org.apache.skywalking.apm.collector.storage.ui.overview.ConjecturalApp; /** * @author peng-yongsheng */ public interface INetworkAddressUIDAO extends DAO { int getNumOfSpanLayer(int spanLayer); + + List getConjecturalApps(); } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/overview/ConjecturalApp.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/overview/ConjecturalApp.java index 5085e8926..e4a9ab64a 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/overview/ConjecturalApp.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/overview/ConjecturalApp.java @@ -22,9 +22,18 @@ package org.apache.skywalking.apm.collector.storage.ui.overview; * @author peng-yongsheng */ public class ConjecturalApp { + private int id; private String name; private int num; + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + 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/ui/overview/ConjecturalAppBrief.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/overview/ConjecturalAppBrief.java index 0d561359b..f425299c6 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/overview/ConjecturalAppBrief.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/overview/ConjecturalAppBrief.java @@ -18,6 +18,7 @@ package org.apache.skywalking.apm.collector.storage.ui.overview; +import java.util.LinkedList; import java.util.List; /** @@ -26,6 +27,10 @@ import java.util.List; public class ConjecturalAppBrief { private List apps; + public ConjecturalAppBrief() { + this.apps = new LinkedList<>(); + } + public List getApps() { return apps; } diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/NetworkAddressEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/NetworkAddressEsUIDAO.java index fa93aca55..9838e3a50 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/NetworkAddressEsUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/NetworkAddressEsUIDAO.java @@ -18,14 +18,21 @@ package org.apache.skywalking.apm.collector.storage.es.dao.ui; +import java.util.LinkedList; +import java.util.List; import org.apache.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.apache.skywalking.apm.collector.storage.dao.ui.INetworkAddressUIDAO; import org.apache.skywalking.apm.collector.storage.es.base.dao.EsDAO; import org.apache.skywalking.apm.collector.storage.table.register.NetworkAddressTable; +import org.apache.skywalking.apm.collector.storage.ui.overview.ConjecturalApp; +import org.apache.skywalking.apm.network.proto.SpanLayer; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchType; import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.search.aggregations.AggregationBuilders; +import org.elasticsearch.search.aggregations.bucket.terms.Terms; +import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder; /** * @author peng-yongsheng @@ -46,4 +53,31 @@ public class NetworkAddressEsUIDAO extends EsDAO implements INetworkAddressUIDAO SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); return (int)searchResponse.getHits().getTotalHits(); } + + @Override public List getConjecturalApps() { + SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(NetworkAddressTable.TABLE); + searchRequestBuilder.setTypes(NetworkAddressTable.TABLE_TYPE); + searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH); + + int[] spanLayers = new int[] {SpanLayer.Database_VALUE, SpanLayer.Cache_VALUE, SpanLayer.MQ_VALUE}; + searchRequestBuilder.setQuery(QueryBuilders.termsQuery(NetworkAddressTable.COLUMN_SPAN_LAYER, spanLayers)); + searchRequestBuilder.setSize(0); + + TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms(NetworkAddressTable.COLUMN_SERVER_TYPE).field(NetworkAddressTable.COLUMN_SERVER_TYPE).size(100); + + searchRequestBuilder.addAggregation(aggregationBuilder); + SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); + + List conjecturalApps = new LinkedList<>(); + Terms serverTypeTerms = searchResponse.getAggregations().get(NetworkAddressTable.COLUMN_SERVER_TYPE); + serverTypeTerms.getBuckets().forEach(serverTypeTerm -> { + int serverType = serverTypeTerm.getKeyAsNumber().intValue(); + + ConjecturalApp conjecturalApp = new ConjecturalApp(); + conjecturalApp.setId(serverType); + conjecturalApp.setNum((int)serverTypeTerm.getDocCount()); + conjecturalApps.add(conjecturalApp); + }); + return conjecturalApps; + } } diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/NetworkAddressH2UIDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/NetworkAddressH2UIDAO.java index 54383f0fd..09b865e1a 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/NetworkAddressH2UIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/NetworkAddressH2UIDAO.java @@ -20,12 +20,14 @@ package org.apache.skywalking.apm.collector.storage.h2.dao.ui; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.List; import org.apache.skywalking.apm.collector.client.h2.H2Client; import org.apache.skywalking.apm.collector.client.h2.H2ClientException; import org.apache.skywalking.apm.collector.storage.base.sql.SqlBuilder; import org.apache.skywalking.apm.collector.storage.dao.ui.INetworkAddressUIDAO; import org.apache.skywalking.apm.collector.storage.h2.base.dao.H2DAO; import org.apache.skywalking.apm.collector.storage.table.register.NetworkAddressTable; +import org.apache.skywalking.apm.collector.storage.ui.overview.ConjecturalApp; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -54,4 +56,8 @@ public class NetworkAddressH2UIDAO extends H2DAO implements INetworkAddressUIDAO } return 0; } + + @Override public List getConjecturalApps() { + return null; + } } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/OverViewLayerQuery.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/OverViewLayerQuery.java index 917146e11..5f2059daf 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/OverViewLayerQuery.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/OverViewLayerQuery.java @@ -115,8 +115,11 @@ public class OverViewLayerQuery implements Query { return getAlarmService().getApplicationAlarmTrend(duration.getStep(), start, end); } - public ConjecturalAppBrief getConjecturalApps(Duration duration) { - return null; + public ConjecturalAppBrief getConjecturalApps(Duration duration) throws ParseException { + long start = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getStart()); + long end = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getEnd()); + + return getApplicationService().getConjecturalApps(duration.getStep(), start, end); } public List getTopNSlowService(Duration duration, int topN) throws ParseException { 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 639a2bfd7..13ddaaf4d 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 @@ -27,11 +27,15 @@ import org.apache.skywalking.apm.collector.core.module.ModuleManager; import org.apache.skywalking.apm.collector.storage.StorageModule; import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMetricUIDAO; import org.apache.skywalking.apm.collector.storage.dao.ui.IInstanceUIDAO; +import org.apache.skywalking.apm.collector.storage.dao.ui.INetworkAddressUIDAO; import org.apache.skywalking.apm.collector.storage.dao.ui.IServiceMetricUIDAO; import org.apache.skywalking.apm.collector.storage.table.MetricSource; +import org.apache.skywalking.apm.collector.storage.table.register.ServerTypeDefine; import org.apache.skywalking.apm.collector.storage.ui.application.Application; import org.apache.skywalking.apm.collector.storage.ui.common.Step; import org.apache.skywalking.apm.collector.storage.ui.overview.ApplicationTPS; +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; /** @@ -42,6 +46,7 @@ public class ApplicationService { private final IInstanceUIDAO instanceDAO; private final IServiceMetricUIDAO serviceMetricUIDAO; private final IApplicationMetricUIDAO applicationMetricUIDAO; + private final INetworkAddressUIDAO networkAddressUIDAO; private final ApplicationCacheService applicationCacheService; private final ServiceNameCacheService serviceNameCacheService; @@ -49,6 +54,7 @@ public class ApplicationService { this.instanceDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceUIDAO.class); this.serviceMetricUIDAO = moduleManager.find(StorageModule.NAME).getService(IServiceMetricUIDAO.class); this.applicationMetricUIDAO = moduleManager.find(StorageModule.NAME).getService(IApplicationMetricUIDAO.class); + this.networkAddressUIDAO = moduleManager.find(StorageModule.NAME).getService(INetworkAddressUIDAO.class); this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class); this.serviceNameCacheService = moduleManager.find(CacheModule.NAME).getService(ServiceNameCacheService.class); } @@ -84,4 +90,17 @@ public class ApplicationService { }); return applicationThroughput; } + + public ConjecturalAppBrief getConjecturalApps(Step step, long start, long end) throws ParseException { + List conjecturalApps = networkAddressUIDAO.getConjecturalApps(); + conjecturalApps.forEach(conjecturalApp -> { + String name = ServerTypeDefine.getInstance().getServerType(conjecturalApp.getId()); + conjecturalApp.setName(name); + }); + + ConjecturalAppBrief conjecturalAppBrief = new ConjecturalAppBrief(); + conjecturalAppBrief.setApps(conjecturalApps); + return conjecturalAppBrief; + } + }