From 8419aa3e71dffbc707eda86c4f6893ab0909391e Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Wed, 28 Feb 2018 17:32:27 +0800 Subject: [PATCH 1/8] Refactor topology build logic. --- .../dao/ui/IApplicationComponentUIDAO.java | 2 +- .../dao/ui/IApplicationMappingUIDAO.java | 2 +- .../ui/IApplicationReferenceMetricUIDAO.java | 9 +- .../dao/ui/ApplicationComponentEsUIDAO.java | 6 +- .../es/dao/ui/ApplicationMappingEsUIDAO.java | 4 +- .../ui/ApplicationReferenceMetricEsUIDAO.java | 56 +++--------- .../dao/ui/ApplicationComponentH2UIDAO.java | 4 +- .../h2/dao/ui/ApplicationMappingH2UIDAO.java | 4 +- .../ui/ApplicationReferenceMetricH2UIDAO.java | 46 +--------- .../collector/ui/query/ApplicationQuery.java | 9 +- .../service/ApplicationTopologyService.java | 85 ++++++------------- 11 files changed, 59 insertions(+), 168 deletions(-) diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IApplicationComponentUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IApplicationComponentUIDAO.java index cfcf1dfb2..263ce1229 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IApplicationComponentUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IApplicationComponentUIDAO.java @@ -27,7 +27,7 @@ import org.apache.skywalking.apm.collector.storage.ui.common.Step; */ public interface IApplicationComponentUIDAO extends DAO { - List load(Step step, long startTime, long endTime); + List load(Step step, long startTimeBucket, long endTimeBucket); class ApplicationComponent { private int componentId; diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IApplicationMappingUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IApplicationMappingUIDAO.java index d98ca7339..1692a2bc7 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IApplicationMappingUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IApplicationMappingUIDAO.java @@ -26,7 +26,7 @@ import org.apache.skywalking.apm.collector.storage.ui.common.Step; * @author peng-yongsheng */ public interface IApplicationMappingUIDAO extends DAO { - List load(Step step, long startTime, long endTime); + List load(Step step, long startTimeBucket, long endTimeBucket); class ApplicationMapping { private int applicationId; diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IApplicationReferenceMetricUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IApplicationReferenceMetricUIDAO.java index 1d60dddc7..ef7e50344 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IApplicationReferenceMetricUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IApplicationReferenceMetricUIDAO.java @@ -27,14 +27,9 @@ import org.apache.skywalking.apm.collector.storage.ui.common.Step; * @author peng-yongsheng */ public interface IApplicationReferenceMetricUIDAO extends DAO { - List getFrontApplications(Step step, int applicationId, long startTime, long endTime, - MetricSource metricSource); - List getBehindApplications(Step step, int applicationId, long startTime, long endTime, - MetricSource metricSource); - - List getReferences(Step step, long startTime, long endTime, - MetricSource metricSource); + List getReferences(Step step, long startTimeBucket, long endTimeBucket, + MetricSource metricSource, Integer... applicationIds); class ApplicationReferenceMetric { private int source; diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ApplicationComponentEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ApplicationComponentEsUIDAO.java index be40e5ee2..12e977209 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ApplicationComponentEsUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ApplicationComponentEsUIDAO.java @@ -46,13 +46,13 @@ public class ApplicationComponentEsUIDAO extends EsDAO implements IApplicationCo super(client); } - @Override public List load(Step step, long startTime, long endTime) { - logger.debug("application component load, start time: {}, end time: {}", startTime, endTime); + @Override public List load(Step step, long startTimeBucket, long endTimeBucket) { + logger.debug("application component load, start time: {}, end time: {}", startTimeBucket, endTimeBucket); String tableName = TimePyramidTableNameBuilder.build(step, ApplicationComponentTable.TABLE); SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(tableName); searchRequestBuilder.setTypes(ApplicationComponentTable.TABLE_TYPE); searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH); - searchRequestBuilder.setQuery(QueryBuilders.rangeQuery(ApplicationComponentTable.COLUMN_TIME_BUCKET).gte(startTime).lte(endTime)); + searchRequestBuilder.setQuery(QueryBuilders.rangeQuery(ApplicationComponentTable.COLUMN_TIME_BUCKET).gte(startTimeBucket).lte(endTimeBucket)); searchRequestBuilder.setSize(0); searchRequestBuilder.addAggregation(AggregationBuilders.terms(ApplicationComponentTable.COLUMN_COMPONENT_ID).field(ApplicationComponentTable.COLUMN_COMPONENT_ID).size(100) diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ApplicationMappingEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ApplicationMappingEsUIDAO.java index 227e1094f..949af12da 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ApplicationMappingEsUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ApplicationMappingEsUIDAO.java @@ -46,13 +46,13 @@ public class ApplicationMappingEsUIDAO extends EsDAO implements IApplicationMapp super(client); } - @Override public List load(Step step, long startTime, long endTime) { + @Override public List load(Step step, long startTimeBucket, long endTimeBucket) { String tableName = TimePyramidTableNameBuilder.build(step, ApplicationMappingTable.TABLE); SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(tableName); searchRequestBuilder.setTypes(ApplicationMappingTable.TABLE_TYPE); searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH); - searchRequestBuilder.setQuery(QueryBuilders.rangeQuery(ApplicationMappingTable.COLUMN_TIME_BUCKET).gte(startTime).lte(endTime)); + searchRequestBuilder.setQuery(QueryBuilders.rangeQuery(ApplicationMappingTable.COLUMN_TIME_BUCKET).gte(startTimeBucket).lte(endTimeBucket)); searchRequestBuilder.setSize(0); searchRequestBuilder.addAggregation( diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ApplicationReferenceMetricEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ApplicationReferenceMetricEsUIDAO.java index efcbf137f..d7a7254af 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ApplicationReferenceMetricEsUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ApplicationReferenceMetricEsUIDAO.java @@ -21,6 +21,7 @@ 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.core.util.CollectionUtils; import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationReferenceMetricUIDAO; import org.apache.skywalking.apm.collector.storage.es.base.dao.EsDAO; import org.apache.skywalking.apm.collector.storage.table.MetricSource; @@ -46,9 +47,8 @@ public class ApplicationReferenceMetricEsUIDAO extends EsDAO implements IApplica super(client); } - @Override public List getFrontApplications(Step step, int applicationId, long startTime, - long endTime, - MetricSource metricSource) { + @Override public List getReferences(Step step, long startTimeBucket, long endTimeBucket, + MetricSource metricSource, Integer... applicationIds) { String tableName = TimePyramidTableNameBuilder.build(step, ApplicationReferenceMetricTable.TABLE); SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(tableName); @@ -56,48 +56,20 @@ public class ApplicationReferenceMetricEsUIDAO extends EsDAO implements IApplica searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH); BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); - boolQuery.must().add(QueryBuilders.rangeQuery(ApplicationReferenceMetricTable.COLUMN_TIME_BUCKET).gte(startTime).lte(endTime)); - boolQuery.must().add(QueryBuilders.termQuery(ApplicationReferenceMetricTable.COLUMN_BEHIND_APPLICATION_ID, applicationId)); + boolQuery.must().add(QueryBuilders.rangeQuery(ApplicationReferenceMetricTable.COLUMN_TIME_BUCKET).gte(startTimeBucket).lte(endTimeBucket)); boolQuery.must().add(QueryBuilders.termQuery(ApplicationReferenceMetricTable.COLUMN_SOURCE_VALUE, metricSource.getValue())); - searchRequestBuilder.setQuery(boolQuery); - searchRequestBuilder.setSize(0); + if (CollectionUtils.isNotEmpty(applicationIds)) { + BoolQueryBuilder applicationBoolQuery = QueryBuilders.boolQuery(); + int[] ids = new int[applicationIds.length]; + for (int i = 0; i < applicationIds.length; i++) { + ids[i] = applicationIds[i]; + } - return buildMetrics(searchRequestBuilder); - } - - @Override - public List getBehindApplications(Step step, int applicationId, long startTime, - long endTime, - MetricSource metricSource) { - String tableName = TimePyramidTableNameBuilder.build(step, ApplicationReferenceMetricTable.TABLE); - - SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(tableName); - searchRequestBuilder.setTypes(ApplicationReferenceMetricTable.TABLE_TYPE); - searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH); - - BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); - boolQuery.must().add(QueryBuilders.rangeQuery(ApplicationReferenceMetricTable.COLUMN_TIME_BUCKET).gte(startTime).lte(endTime)); - boolQuery.must().add(QueryBuilders.termQuery(ApplicationReferenceMetricTable.COLUMN_FRONT_APPLICATION_ID, applicationId)); - boolQuery.must().add(QueryBuilders.termQuery(ApplicationReferenceMetricTable.COLUMN_SOURCE_VALUE, metricSource.getValue())); - - searchRequestBuilder.setQuery(boolQuery); - searchRequestBuilder.setSize(0); - - return buildMetrics(searchRequestBuilder); - } - - @Override public List getReferences(Step step, long startTime, long endTime, - MetricSource metricSource) { - String tableName = TimePyramidTableNameBuilder.build(step, ApplicationReferenceMetricTable.TABLE); - - SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(tableName); - searchRequestBuilder.setTypes(ApplicationReferenceMetricTable.TABLE_TYPE); - searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH); - - BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); - boolQuery.must().add(QueryBuilders.rangeQuery(ApplicationReferenceMetricTable.COLUMN_TIME_BUCKET).gte(startTime).lte(endTime)); - boolQuery.must().add(QueryBuilders.termQuery(ApplicationReferenceMetricTable.COLUMN_SOURCE_VALUE, metricSource.getValue())); + applicationBoolQuery.should().add(QueryBuilders.termsQuery(ApplicationReferenceMetricTable.COLUMN_FRONT_APPLICATION_ID, ids)); + applicationBoolQuery.should().add(QueryBuilders.termsQuery(ApplicationReferenceMetricTable.COLUMN_BEHIND_APPLICATION_ID, ids)); + boolQuery.must().add(applicationBoolQuery); + } searchRequestBuilder.setQuery(boolQuery); searchRequestBuilder.setSize(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/ApplicationComponentH2UIDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ApplicationComponentH2UIDAO.java index d9cf10aef..cb78c9241 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ApplicationComponentH2UIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ApplicationComponentH2UIDAO.java @@ -45,7 +45,7 @@ public class ApplicationComponentH2UIDAO extends H2DAO implements IApplicationCo super(client); } - @Override public List load(Step step, long startTime, long endTime) { + @Override public List load(Step step, long startTimeBucket, long endTimeBucket) { H2Client client = getClient(); String tableName = TimePyramidTableNameBuilder.build(step, ApplicationComponentTable.TABLE); @@ -54,7 +54,7 @@ public class ApplicationComponentH2UIDAO extends H2DAO implements IApplicationCo String sql = SqlBuilder.buildSql(AGGREGATE_COMPONENT_SQL, ApplicationComponentTable.COLUMN_COMPONENT_ID, ApplicationComponentTable.COLUMN_APPLICATION_ID, tableName, ApplicationComponentTable.COLUMN_TIME_BUCKET); - Object[] params = new Object[] {startTime, endTime}; + Object[] params = new Object[] {startTimeBucket, endTimeBucket}; try (ResultSet rs = client.executeQuery(sql, params)) { while (rs.next()) { int applicationId = rs.getInt(ApplicationComponentTable.COLUMN_APPLICATION_ID); diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ApplicationMappingH2UIDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ApplicationMappingH2UIDAO.java index 9669f5891..c92ba6aa5 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ApplicationMappingH2UIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ApplicationMappingH2UIDAO.java @@ -45,7 +45,7 @@ public class ApplicationMappingH2UIDAO extends H2DAO implements IApplicationMapp super(client); } - @Override public List load(Step step, long startTime, long endTime) { + @Override public List load(Step step, long startTimeBucket, long endTimeBucket) { String tableName = TimePyramidTableNameBuilder.build(step, ApplicationMappingTable.TABLE); H2Client client = getClient(); @@ -53,7 +53,7 @@ public class ApplicationMappingH2UIDAO extends H2DAO implements IApplicationMapp ApplicationMappingTable.COLUMN_MAPPING_APPLICATION_ID, tableName, ApplicationMappingTable.COLUMN_TIME_BUCKET); List applicationMappings = new LinkedList<>(); - Object[] params = new Object[] {startTime, endTime}; + Object[] params = new Object[] {startTimeBucket, endTimeBucket}; try (ResultSet rs = client.executeQuery(sql, params)) { while (rs.next()) { int applicationId = rs.getInt(ApplicationMappingTable.COLUMN_APPLICATION_ID); diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ApplicationReferenceMetricH2UIDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ApplicationReferenceMetricH2UIDAO.java index fdab59e8c..f4866ecf7 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ApplicationReferenceMetricH2UIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ApplicationReferenceMetricH2UIDAO.java @@ -18,7 +18,6 @@ package org.apache.skywalking.apm.collector.storage.h2.dao.ui; -import com.google.gson.JsonArray; import java.util.List; import org.apache.skywalking.apm.collector.client.h2.H2Client; import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationReferenceMetricUIDAO; @@ -41,49 +40,8 @@ public class ApplicationReferenceMetricH2UIDAO extends H2DAO implements IApplica super(client); } - @Override public List getFrontApplications(Step step, int applicationId, long startTime, - long endTime, - MetricSource metricSource) { - H2Client client = getClient(); - JsonArray applicationReferenceMetricArray = new JsonArray(); -// String sql = SqlBuilder.buildSql(APPLICATION_REFERENCE_SQL, ApplicationReferenceMetricTable.COLUMN_S1_LTE, -// ApplicationReferenceMetricTable.COLUMN_S3_LTE, ApplicationReferenceMetricTable.COLUMN_S5_LTE, -// ApplicationReferenceMetricTable.COLUMN_S5_GT, ApplicationReferenceMetricTable.COLUMN_SUMMARY, -// ApplicationReferenceMetricTable.COLUMN_ERROR, ApplicationReferenceMetricTable.TABLE, ApplicationReferenceMetricTable.COLUMN_TIME_BUCKET, -// ApplicationReferenceMetricTable.COLUMN_FRONT_APPLICATION_ID, ApplicationReferenceMetricTable.COLUMN_BEHIND_APPLICATION_ID); -// -// Object[] params = new Object[] {startTime, endTime}; -// try (ResultSet rs = client.executeQuery(sql, params)) { -// while (rs.next()) { -// int frontApplicationId = rs.getInt(ApplicationReferenceMetricTable.COLUMN_FRONT_APPLICATION_ID); -// int behindApplicationId = rs.getInt(ApplicationReferenceMetricTable.COLUMN_BEHIND_APPLICATION_ID); -// JsonObject nodeRefResSumObj = new JsonObject(); -// nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(ApplicationReferenceMetricTable.COLUMN_FRONT_APPLICATION_ID), frontApplicationId); -// nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(ApplicationReferenceMetricTable.COLUMN_BEHIND_APPLICATION_ID), behindApplicationId); -// nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(ApplicationReferenceMetricTable.COLUMN_S1_LTE), rs.getDouble(ApplicationReferenceMetricTable.COLUMN_S1_LTE)); -// nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(ApplicationReferenceMetricTable.COLUMN_S3_LTE), rs.getDouble(ApplicationReferenceMetricTable.COLUMN_S3_LTE)); -// nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(ApplicationReferenceMetricTable.COLUMN_S5_LTE), rs.getDouble(ApplicationReferenceMetricTable.COLUMN_S5_LTE)); -// nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(ApplicationReferenceMetricTable.COLUMN_S5_GT), rs.getDouble(ApplicationReferenceMetricTable.COLUMN_S5_GT)); -// nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(ApplicationReferenceMetricTable.COLUMN_ERROR), rs.getDouble(ApplicationReferenceMetricTable.COLUMN_ERROR)); -// nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(ApplicationReferenceMetricTable.COLUMN_SUMMARY), rs.getDouble(ApplicationReferenceMetricTable.COLUMN_SUMMARY)); -// nodeRefResSumArray.add(nodeRefResSumObj); -// } -// } catch (SQLException | H2ClientException e) { -// logger.error(e.getMessage(), e); -// } - return null; - } - - @Override - public List getBehindApplications(Step step, int applicationId, long startTime, - long endTime, - MetricSource metricSource) { - return null; - } - - @Override - public List getReferences(Step step, long startTime, - long endTime, MetricSource metricSource) { + @Override public List getReferences(Step step, + long startTimeBucket, long endTimeBucket, MetricSource metricSource, Integer... applicationIds) { return null; } } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ApplicationQuery.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ApplicationQuery.java index 526be281a..acae9b324 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ApplicationQuery.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ApplicationQuery.java @@ -76,10 +76,13 @@ public class ApplicationQuery implements Query { } public Topology getApplicationTopology(int applicationId, Duration duration) throws ParseException { - long start = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); - long end = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); + long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); + long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); - return getApplicationTopologyService().getApplicationTopology(duration.getStep(), applicationId, start, end); + long startSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getStart()); + long endSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getEnd()); + + return getApplicationTopologyService().getApplicationTopology(duration.getStep(), applicationId, startTimeBucket, endTimeBucket, startSecondTimeBucket, endSecondTimeBucket); } public List getSlowService(int applicationId, Duration duration, 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 884f0d8da..ecb02d2ec 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 @@ -20,13 +20,17 @@ package org.apache.skywalking.apm.collector.ui.service; import java.text.ParseException; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import org.apache.skywalking.apm.collector.core.module.ModuleManager; import org.apache.skywalking.apm.collector.storage.StorageModule; import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationComponentUIDAO; import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMappingUIDAO; +import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMetricUIDAO; import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationReferenceMetricUIDAO; +import org.apache.skywalking.apm.collector.storage.table.MetricSource; 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.network.trace.component.ComponentsDefine; @@ -42,6 +46,7 @@ public class ApplicationTopologyService { private final IApplicationComponentUIDAO applicationComponentUIDAO; private final IApplicationMappingUIDAO applicationMappingUIDAO; + private final IApplicationMetricUIDAO applicationMetricUIDAO; private final IApplicationReferenceMetricUIDAO applicationReferenceMetricUIDAO; private final ModuleManager moduleManager; @@ -49,76 +54,34 @@ public class ApplicationTopologyService { this.moduleManager = moduleManager; this.applicationComponentUIDAO = moduleManager.find(StorageModule.NAME).getService(IApplicationComponentUIDAO.class); this.applicationMappingUIDAO = moduleManager.find(StorageModule.NAME).getService(IApplicationMappingUIDAO.class); + this.applicationMetricUIDAO = moduleManager.find(StorageModule.NAME).getService(IApplicationMetricUIDAO.class); this.applicationReferenceMetricUIDAO = moduleManager.find(StorageModule.NAME).getService(IApplicationReferenceMetricUIDAO.class); } - public Topology getApplicationTopology(Step step, int applicationId, long startTime, - long endTime) throws ParseException { - logger.debug("startTime: {}, endTime: {}", startTime, endTime); - List applicationComponents = applicationComponentUIDAO.load(step, startTime, endTime); - List applicationMappings = applicationMappingUIDAO.load(step, startTime, endTime); + public Topology getApplicationTopology(Step step, int applicationId, long startTimeBucket, + long endTimeBucket, long startSecondTimeBucket, long endSecondTimeBucket) throws ParseException { + logger.debug("startTime: {}, endTime: {}", startTimeBucket, endTimeBucket); + List applicationComponents = applicationComponentUIDAO.load(step, startTimeBucket, endTimeBucket); + List applicationMappings = applicationMappingUIDAO.load(step, startTimeBucket, endTimeBucket); + + Set applicationIds = new HashSet<>(); + applicationIds.add(applicationId); + applicationMappings.forEach(mapping -> { + if (mapping.getApplicationId() == applicationId) { + applicationIds.add(mapping.getMappingApplicationId()); + } + }); Map components = new HashMap<>(); applicationComponents.forEach(component -> components.put(component.getApplicationId(), ComponentsDefine.getInstance().getComponentName(component.getComponentId()))); -// List callerCalls = applicationReferenceMetricUIDAO.getFrontApplications(step, applicationId, startTime, endTime, MetricSource.Caller); -// callerCalls.addAll(applicationReferenceMetricUIDAO.getBehindApplications(step, applicationId, startTime, endTime, MetricSource.Caller)); -// -// callerCalls.forEach(callerCall -> callerCall.setCallType(components.get(callerCall.getTarget()))); -// -// List calleeCalls = applicationReferenceMetricUIDAO.getFrontApplications(step, applicationId, startTime, endTime, MetricSource.Callee); -// calleeCalls.addAll(applicationReferenceMetricUIDAO.getBehindApplications(step, applicationId, startTime, endTime, MetricSource.Callee)); -// -// calleeCalls.forEach(calleeCall -> calleeCall.setCallType(components.get(calleeCall.getTarget()))); -// -// Set mappings = new HashSet<>(); -// applicationMappings.forEach(mapping -> { -// if (applicationId == mapping.getApplicationId()) { -// mappings.add(mapping.getMappingApplicationId()); -// } -// }); -// -// mappings.forEach(mappingApplicationId -> { -// List frontCallerApplications = applicationReferenceMetricUIDAO.getFrontApplications(step, mappingApplicationId, startTime, endTime, MetricSource.Caller); -// frontCallerApplications.forEach(call -> { -// call.setCallType(components.get(call.getTarget())); -// call.setTarget(applicationId); -// callerCalls.add(call); -// }); -// -// List behindCallerApplications = applicationReferenceMetricUIDAO.getBehindApplications(step, mappingApplicationId, startTime, endTime, MetricSource.Caller); -// behindCallerApplications.forEach(call -> { -// call.setCallType(components.get(call.getTarget())); -// call.setSource(applicationId); -// callerCalls.add(call); -// }); -// -// List frontCalleeApplications = applicationReferenceMetricUIDAO.getFrontApplications(step, mappingApplicationId, startTime, endTime, MetricSource.Callee); -// frontCalleeApplications.forEach(call -> { -// call.setCallType(components.get(call.getTarget())); -// call.setTarget(applicationId); -// calleeCalls.add(call); -// }); -// -// List behindCalleeApplications = applicationReferenceMetricUIDAO.getBehindApplications(step, mappingApplicationId, startTime, endTime, MetricSource.Callee); -// behindCalleeApplications.forEach(call -> { -// call.setCallType(components.get(call.getTarget())); -// call.setSource(applicationId); -// calleeCalls.add(call); -// }); -// }); + List applicationMetrics = applicationMetricUIDAO.getApplications(step, startTimeBucket, endTimeBucket, MetricSource.Callee); + + List callerReferenceMetric = applicationReferenceMetricUIDAO.getReferences(step, startTimeBucket, endTimeBucket, MetricSource.Caller, applicationIds.toArray(new Integer[0])); + List calleeReferenceMetric = applicationReferenceMetricUIDAO.getReferences(step, startTimeBucket, endTimeBucket, MetricSource.Callee, applicationIds.toArray(new Integer[0])); TopologyBuilder builder = new TopologyBuilder(moduleManager); -// long secondsBetween = DurationUtils.INSTANCE.secondsBetween(step, startTime, endTime); -// Topology topology = builder.build(applicationComponents, applicationMappings, callerCalls, calleeCalls, secondsBetween); -// -// topology.getCalls().forEach(call -> { -// long calls = call.getCalls(); -// long responseTimes = call.getResponseTimes(); -// call.setCallsPerSec(calls / secondsBetween); -// call.setAvgResponseTime(responseTimes / secondsBetween); -// }); - return null; + return builder.build(applicationComponents, applicationMappings, applicationMetrics, callerReferenceMetric, calleeReferenceMetric, startSecondTimeBucket, endSecondTimeBucket); } } From 9b24f52750758766a03856d72e2ef5996796f236 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Wed, 28 Feb 2018 18:21:36 +0800 Subject: [PATCH 2/8] Calculate callsPerSec metric. --- .../collector/ui/query/ApplicationQuery.java | 9 ++++--- .../ui/service/ApplicationService.java | 24 ++++++++++++++----- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ApplicationQuery.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ApplicationQuery.java index acae9b324..ae4d628f5 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ApplicationQuery.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ApplicationQuery.java @@ -87,10 +87,13 @@ public class ApplicationQuery implements Query { public List getSlowService(int applicationId, Duration duration, Integer topN) throws ParseException { - long start = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); - long end = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); + long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); + long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); - return getApplicationService().getSlowService(applicationId, duration.getStep(), start, end, topN); + long startSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getStart()); + long endSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getEnd()); + + return getApplicationService().getSlowService(applicationId, duration.getStep(), startTimeBucket, endTimeBucket, startSecondTimeBucket, endSecondTimeBucket, topN); } public List getServerThroughput(int applicationId, Duration duration, 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 b0564282a..3080af6fe 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 @@ -32,6 +32,7 @@ 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.table.register.ServiceName; 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; @@ -39,18 +40,23 @@ 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.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ public class ApplicationService { + private final Logger logger = LoggerFactory.getLogger(ApplicationService.class); + private final IInstanceUIDAO instanceDAO; private final IServiceMetricUIDAO serviceMetricUIDAO; private final IApplicationMetricUIDAO applicationMetricUIDAO; private final INetworkAddressUIDAO networkAddressUIDAO; private final ApplicationCacheService applicationCacheService; private final ServiceNameCacheService serviceNameCacheService; + private final SecondBetweenService secondBetweenService; public ApplicationService(ModuleManager moduleManager) { this.instanceDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceUIDAO.class); @@ -59,6 +65,7 @@ public class ApplicationService { 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); + this.secondBetweenService = new SecondBetweenService(moduleManager); } public List getApplications(long startSecondTimeBucket, long endSecondTimeBucket, @@ -78,13 +85,18 @@ public class ApplicationService { return applications; } - public List getSlowService(int applicationId, Step step, long start, long end, - Integer top) throws ParseException { - List slowServices = serviceMetricUIDAO.getSlowService(applicationId, step, start, end, top, MetricSource.Callee); + public List getSlowService(int applicationId, Step step, long startTimeBucket, long endTimeBucket, + long startSecondTimeBucket, long endSecondTimeBucket, Integer topN) throws ParseException { + List slowServices = serviceMetricUIDAO.getSlowService(applicationId, step, startTimeBucket, endTimeBucket, topN, MetricSource.Callee); slowServices.forEach(slowService -> { - slowService.setName(serviceNameCacheService.get(slowService.getId()).getServiceName()); - //TODO - slowService.setCallsPerSec(1); + ServiceName serviceName = serviceNameCacheService.get(slowService.getId()); + + try { + slowService.setCallsPerSec((int)(slowService.getCalls() / secondBetweenService.calculate(serviceName.getApplicationId(), startSecondTimeBucket, endSecondTimeBucket))); + } catch (ParseException e) { + logger.error(e.getMessage(), e); + } + slowService.setName(serviceName.getServiceName()); }); return slowServices; } From 8dd788de6aa044d03313c3c1fced8c74343fefb8 Mon Sep 17 00:00:00 2001 From: carlvine Date: Wed, 28 Feb 2018 19:35:19 +0800 Subject: [PATCH 3/8] HttpGet:add http time out --- .../agent/core/remote/DiscoveryRestServiceClient.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/remote/DiscoveryRestServiceClient.java b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/remote/DiscoveryRestServiceClient.java index 1c81fcd00..565a7d7d4 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/remote/DiscoveryRestServiceClient.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/remote/DiscoveryRestServiceClient.java @@ -26,6 +26,7 @@ import java.io.IOException; import java.util.LinkedList; import java.util.List; import java.util.Random; +import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; @@ -46,6 +47,9 @@ import static org.apache.skywalking.apm.agent.core.conf.RemoteDownstreamConfig.C */ public class DiscoveryRestServiceClient implements Runnable { private static final ILog logger = LogManager.getLogger(DiscoveryRestServiceClient.class); + private static final int HTTP_CONNECT_TIMEOUT = 2000; + private static final int HTTP_CONNECTION_REQUEST_TIMEOUT = 1000; + private static final int HTTP_SOCKET_TIMEOUT = 2000; private String[] serverList; private volatile int selectedServer = -1; @@ -133,7 +137,11 @@ public class DiscoveryRestServiceClient implements Runnable { return null; } HttpGet httpGet = new HttpGet("http://" + serverList[selectedServer] + Config.Collector.DISCOVERY_SERVICE_NAME); - + RequestConfig requestConfig = RequestConfig.custom() + .setConnectTimeout(HTTP_CONNECT_TIMEOUT) + .setConnectionRequestTimeout(HTTP_CONNECTION_REQUEST_TIMEOUT) + .setSocketTimeout(HTTP_SOCKET_TIMEOUT).build(); + httpGet.setConfig(requestConfig); return httpGet; } From c1fedb02b5e290fa46dfb87e86349c68730dcb15 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Wed, 28 Feb 2018 20:24:24 +0800 Subject: [PATCH 4/8] 1. Changed the attribute name from TPS to callsPerSec. 2. Calculate the callsPerSec. --- .../storage/dao/ui/IInstanceMetricUIDAO.java | 5 ++--- .../collector/storage/ui/server/AppServerInfo.java | 10 +++++----- .../storage/es/dao/ui/InstanceMetricEsUIDAO.java | 8 ++++---- .../storage/h2/dao/ui/InstanceMetricH2UIDAO.java | 4 ++-- .../apm/collector/ui/query/ApplicationQuery.java | 9 ++++++--- .../apm/collector/ui/service/ServerService.java | 11 +++++++---- .../main/resources/ui-graphql/server-layer.graphqls | 2 +- 7 files changed, 27 insertions(+), 22 deletions(-) diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IInstanceMetricUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IInstanceMetricUIDAO.java index bb089ddd8..51a8335df 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IInstanceMetricUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IInstanceMetricUIDAO.java @@ -30,9 +30,8 @@ import org.apache.skywalking.apm.collector.storage.utils.DurationPoint; */ public interface IInstanceMetricUIDAO extends DAO { - List getServerThroughput(int applicationId, Step step, long start, long end, long secondBetween, - int topN, - MetricSource metricSource); + List getServerThroughput(int applicationId, Step step, long startTimeBucket, long endTimeBucket, + int secondBetween, int topN, MetricSource metricSource); List getServerTPSTrend(int instanceId, Step step, List durationPoints); diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/server/AppServerInfo.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/server/AppServerInfo.java index c1ee6f307..ae6ac38db 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/server/AppServerInfo.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/server/AppServerInfo.java @@ -29,7 +29,7 @@ public class AppServerInfo { private String applicationCode; private String osInfo; private String name; - private int tps; + private int callsPerSec; private String host; private int pid; private List ipv4; @@ -74,12 +74,12 @@ public class AppServerInfo { this.name = name; } - public int getTps() { - return tps; + public int getCallsPerSec() { + return callsPerSec; } - public void setTps(int tps) { - this.tps = tps; + public void setCallsPerSec(int callsPerSec) { + this.callsPerSec = callsPerSec; } public String getHost() { diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceMetricEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceMetricEsUIDAO.java index 352f24cdb..a52eba8f2 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceMetricEsUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceMetricEsUIDAO.java @@ -58,8 +58,8 @@ public class InstanceMetricEsUIDAO extends EsDAO implements IInstanceMetricUIDAO super(client); } - @Override public List getServerThroughput(int applicationId, Step step, long start, long end, - long secondBetween, int topN, MetricSource metricSource) { + @Override public List getServerThroughput(int applicationId, Step step, long startTimeBucket, long endTimeBucket, + int secondBetween, int topN, MetricSource metricSource) { String tableName = TimePyramidTableNameBuilder.build(step, InstanceMetricTable.TABLE); SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(tableName); @@ -67,7 +67,7 @@ public class InstanceMetricEsUIDAO extends EsDAO implements IInstanceMetricUIDAO searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH); BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); - boolQuery.must().add(QueryBuilders.rangeQuery(InstanceMetricTable.COLUMN_TIME_BUCKET).gte(start).lte(end)); + boolQuery.must().add(QueryBuilders.rangeQuery(InstanceMetricTable.COLUMN_TIME_BUCKET).gte(startTimeBucket).lte(endTimeBucket)); if (applicationId != 0) { boolQuery.must().add(QueryBuilders.termQuery(InstanceMetricTable.COLUMN_APPLICATION_ID, applicationId)); } @@ -102,7 +102,7 @@ public class InstanceMetricEsUIDAO extends EsDAO implements IInstanceMetricUIDAO InternalSimpleValue simpleValue = serviceIdTerm.getAggregations().get(AVG_TPS); appServerInfo.setId(instanceId); - appServerInfo.setTps((int)simpleValue.getValue()); + appServerInfo.setCallsPerSec((int)simpleValue.getValue()); appServerInfos.add(appServerInfo); }); return appServerInfos; diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/InstanceMetricH2UIDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/InstanceMetricH2UIDAO.java index d7fb12e56..410ccd366 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/InstanceMetricH2UIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/InstanceMetricH2UIDAO.java @@ -49,8 +49,8 @@ public class InstanceMetricH2UIDAO extends H2DAO implements IInstanceMetricUIDAO super(client); } - @Override public List getServerThroughput(int applicationId, Step step, long start, long end, - long secondBetween, int topN, MetricSource metricSource) { + @Override public List getServerThroughput(int applicationId, Step step, long startTimeBucket, long endTimeBucket, + int secondBetween, int topN, MetricSource metricSource) { return null; } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ApplicationQuery.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ApplicationQuery.java index ae4d628f5..aa48d3d97 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ApplicationQuery.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ApplicationQuery.java @@ -98,9 +98,12 @@ public class ApplicationQuery implements Query { public List getServerThroughput(int applicationId, Duration duration, Integer topN) throws ParseException { - long start = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); - long end = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); + long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); + long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); - return getServerService().getServerThroughput(applicationId, duration.getStep(), start, end, topN); + long startSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getStart()); + long endSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getEnd()); + + return getServerService().getServerThroughput(applicationId, duration.getStep(), startTimeBucket, endTimeBucket, startSecondTimeBucket, endSecondTimeBucket, topN); } } 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 577e159a9..ba43a1bf7 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 @@ -61,6 +61,7 @@ public class ServerService { private final IMemoryMetricUIDAO memoryMetricUIDAO; private final InstanceCacheService instanceCacheService; private final ApplicationCacheService applicationCacheService; + private final SecondBetweenService secondBetweenService; public ServerService(ModuleManager moduleManager) { this.instanceUIDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceUIDAO.class); @@ -70,6 +71,7 @@ public class ServerService { 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 start, long end) { @@ -99,10 +101,11 @@ public class ServerService { return responseTimeTrend; } - public List getServerThroughput(int applicationId, Step step, long start, - long end, Integer topN) throws ParseException { - //TODO - List serverThroughput = instanceMetricUIDAO.getServerThroughput(applicationId, step, start, end, 1000, topN, MetricSource.Callee); + public List getServerThroughput(int applicationId, Step step, long startTimeBucket, + long endTimeBucket, long startSecondTimeBucket, long endSecondTimeBucket, Integer topN) throws ParseException { + int secondBetween = secondBetweenService.calculate(applicationId, startSecondTimeBucket, endSecondTimeBucket); + + List serverThroughput = instanceMetricUIDAO.getServerThroughput(applicationId, step, startTimeBucket, endTimeBucket, secondBetween, topN, MetricSource.Callee); serverThroughput.forEach(appServerInfo -> { String applicationCode = applicationCacheService.getApplicationById(applicationId).getApplicationCode(); appServerInfo.setApplicationCode(applicationCode); diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/server-layer.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/server-layer.graphqls index 0251ec126..5de5b4cc0 100644 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/server-layer.graphqls +++ b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/server-layer.graphqls @@ -8,7 +8,7 @@ type AppServerInfo { name: String! applicationId: Int! applicationCode: String - tps: Int! + callsPerSec: Int! host: String pid: Int ipv4: [String!]! From d66f56a3d7683097129a3d5cc4780d6e5a9d6242 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Wed, 28 Feb 2018 20:34:50 +0800 Subject: [PATCH 5/8] Change the parameter name: Start -> startSecondTimeBucket End -> endSecondTimeBucket --- .../apm/collector/storage/dao/ui/IInstanceUIDAO.java | 2 +- .../apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java | 6 +++--- .../apm/collector/storage/h2/dao/ui/InstanceH2UIDAO.java | 6 +++--- .../skywalking/apm/collector/ui/query/ServerQuery.java | 6 +++--- .../skywalking/apm/collector/ui/service/ServerService.java | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IInstanceUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IInstanceUIDAO.java index b772bc617..92492e79a 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IInstanceUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IInstanceUIDAO.java @@ -36,7 +36,7 @@ public interface IInstanceUIDAO extends DAO { Instance getInstance(int instanceId); - List searchServer(String keyword, long start, long end); + List searchServer(String keyword, long startSecondTimeBucket, long endSecondTimeBucket); List getAllServer(int applicationId, long startSecondTimeBucket, long endSecondTimeBucket); diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java index faeefd402..50c76f580 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java @@ -150,15 +150,15 @@ public class InstanceEsUIDAO extends EsDAO implements IInstanceUIDAO { return null; } - @Override public List searchServer(String keyword, long start, long end) { - logger.debug("get instances info, keyword: {}, start: {}, end: {}", keyword, start, end); + @Override public List searchServer(String keyword, long startSecondTimeBucket, long endSecondTimeBucket) { + logger.debug("get instances info, keyword: {}, start: {}, end: {}", keyword, startSecondTimeBucket, endSecondTimeBucket); SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(InstanceTable.TABLE); searchRequestBuilder.setTypes(InstanceTable.TABLE_TYPE); searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH); searchRequestBuilder.setSize(1000); BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); - boolQuery.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(start).lte(end)); + boolQuery.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket)); if (StringUtils.isNotEmpty(keyword)) { boolQuery.must().add(QueryBuilders.queryStringQuery(keyword)); } diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/InstanceH2UIDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/InstanceH2UIDAO.java index 5622ac347..5518343a6 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/InstanceH2UIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/InstanceH2UIDAO.java @@ -131,11 +131,11 @@ public class InstanceH2UIDAO extends H2DAO implements IInstanceUIDAO { return null; } - @Override public List searchServer(String keyword, long start, long end) { - logger.debug("get instances info, keyword: {}, start: {}, end: {}", keyword, start, end); + @Override public List searchServer(String keyword, long startSecondTimeBucket, long endSecondTimeBucket) { + logger.debug("get instances info, keyword: {}, start: {}, end: {}", keyword, startSecondTimeBucket, endSecondTimeBucket); String dynamicSql = "select * from {0} where {1} like ? and {2} >= ? and {2} <= ? and {3} = ?"; String sql = SqlBuilder.buildSql(dynamicSql, InstanceTable.TABLE, InstanceTable.COLUMN_OS_INFO, InstanceTable.COLUMN_HEARTBEAT_TIME, InstanceTable.COLUMN_IS_ADDRESS); - Object[] params = new Object[] {keyword, start, end, BooleanUtils.FALSE}; + Object[] params = new Object[] {keyword, startSecondTimeBucket, endSecondTimeBucket, BooleanUtils.FALSE}; return buildAppServerInfo(sql, params); } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ServerQuery.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ServerQuery.java index 23e9a60a7..099ef4734 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ServerQuery.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ServerQuery.java @@ -53,9 +53,9 @@ public class ServerQuery implements Query { } public List searchServer(String keyword, Duration duration) throws ParseException { - long start = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getStart()); - long end = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getEnd()); - return getServerService().searchServer(keyword, start, end); + long startSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getStart()); + long endSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getEnd()); + return getServerService().searchServer(keyword, startSecondTimeBucket, endSecondTimeBucket); } public List getAllServer(int applicationId, Duration duration) throws ParseException { 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 ba43a1bf7..dae70573d 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 @@ -74,8 +74,8 @@ public class ServerService { this.secondBetweenService = new SecondBetweenService(moduleManager); } - public List searchServer(String keyword, long start, long end) { - List serverInfos = instanceUIDAO.searchServer(keyword, start, end); + 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); From a5216a933ac42bb437b5dc9803699d51af54dfe8 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Wed, 28 Feb 2018 20:53:19 +0800 Subject: [PATCH 6/8] 1. Change the parameter name: Start -> startSecondTimeBucket End -> endSecondTimeBucket 2. The time range of heart beat time and register time: Start time >= register time <= end time Start time >= heart beat time <= end time --- .../storage/es/dao/ui/InstanceEsUIDAO.java | 23 ++++++++++++++----- .../storage/h2/dao/ui/InstanceH2UIDAO.java | 16 +++++++------ .../apm/collector/ui/query/ServerQuery.java | 6 ++--- .../collector/ui/service/ServerService.java | 4 ++-- 4 files changed, 31 insertions(+), 18 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/InstanceEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java index 50c76f580..8c0e0c694 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/InstanceEsUIDAO.java @@ -97,7 +97,8 @@ public class InstanceEsUIDAO extends EsDAO implements IInstanceUIDAO { return heartBeatTime; } - @Override public List getApplications(long startSecondTimeBucket, long endSecondTimeBucket, int... applicationIds) { + @Override public List getApplications(long startSecondTimeBucket, long endSecondTimeBucket, + int... applicationIds) { logger.debug("application list get, start time: {}, end time: {}", startSecondTimeBucket, endSecondTimeBucket); SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(InstanceTable.TABLE); searchRequestBuilder.setTypes(InstanceTable.TABLE_TYPE); @@ -150,7 +151,8 @@ public class InstanceEsUIDAO extends EsDAO implements IInstanceUIDAO { return null; } - @Override public List searchServer(String keyword, long startSecondTimeBucket, long endSecondTimeBucket) { + @Override + public List searchServer(String keyword, long startSecondTimeBucket, long endSecondTimeBucket) { logger.debug("get instances info, keyword: {}, start: {}, end: {}", keyword, startSecondTimeBucket, endSecondTimeBucket); SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(InstanceTable.TABLE); searchRequestBuilder.setTypes(InstanceTable.TABLE_TYPE); @@ -158,11 +160,17 @@ public class InstanceEsUIDAO extends EsDAO implements IInstanceUIDAO { searchRequestBuilder.setSize(1000); BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); - boolQuery.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket)); if (StringUtils.isNotEmpty(keyword)) { boolQuery.must().add(QueryBuilders.queryStringQuery(keyword)); } boolQuery.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_IS_ADDRESS, BooleanUtils.FALSE)); + + BoolQueryBuilder timeBoolQuery = QueryBuilders.boolQuery(); + timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket)); + timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket)); + + boolQuery.must().add(timeBoolQuery); + searchRequestBuilder.setQuery(boolQuery); SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); @@ -180,11 +188,14 @@ public class InstanceEsUIDAO extends EsDAO implements IInstanceUIDAO { searchRequestBuilder.setSize(1000); BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); - boolQuery.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket)); - boolQuery.must().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket)); - boolQuery.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_APPLICATION_ID, applicationId)); boolQuery.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_IS_ADDRESS, BooleanUtils.FALSE)); + + BoolQueryBuilder timeBoolQuery = QueryBuilders.boolQuery(); + timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_REGISTER_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket)); + timeBoolQuery.should().add(QueryBuilders.rangeQuery(InstanceTable.COLUMN_HEARTBEAT_TIME).gte(startSecondTimeBucket).lte(endSecondTimeBucket)); + + boolQuery.must().add(timeBoolQuery); searchRequestBuilder.setQuery(boolQuery); SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/InstanceH2UIDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/InstanceH2UIDAO.java index 5518343a6..f520734fe 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/InstanceH2UIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/InstanceH2UIDAO.java @@ -88,7 +88,8 @@ public class InstanceH2UIDAO extends H2DAO implements IInstanceUIDAO { } @Override - public List getApplications(long startSecondTimeBucket, long endSecondTimeBucket, int... applicationIds) { + public List getApplications(long startSecondTimeBucket, long endSecondTimeBucket, + int... applicationIds) { H2Client client = getClient(); List applications = new LinkedList<>(); String sql = SqlBuilder.buildSql(GET_APPLICATIONS_SQL, InstanceTable.COLUMN_INSTANCE_ID, @@ -131,20 +132,21 @@ public class InstanceH2UIDAO extends H2DAO implements IInstanceUIDAO { return null; } - @Override public List searchServer(String keyword, long startSecondTimeBucket, long endSecondTimeBucket) { + @Override + public List searchServer(String keyword, long startSecondTimeBucket, long endSecondTimeBucket) { logger.debug("get instances info, keyword: {}, start: {}, end: {}", keyword, startSecondTimeBucket, endSecondTimeBucket); - String dynamicSql = "select * from {0} where {1} like ? and {2} >= ? and {2} <= ? and {3} = ?"; - String sql = SqlBuilder.buildSql(dynamicSql, InstanceTable.TABLE, InstanceTable.COLUMN_OS_INFO, InstanceTable.COLUMN_HEARTBEAT_TIME, InstanceTable.COLUMN_IS_ADDRESS); - Object[] params = new Object[] {keyword, startSecondTimeBucket, endSecondTimeBucket, BooleanUtils.FALSE}; + String dynamicSql = "select * from {0} where {1} like ? and (({2} >= ? and {2} <= ?) or ({3} >= ? and {3} <= ?)) and {4} = ?"; + String sql = SqlBuilder.buildSql(dynamicSql, InstanceTable.TABLE, InstanceTable.COLUMN_OS_INFO, InstanceTable.COLUMN_REGISTER_TIME, InstanceTable.COLUMN_HEARTBEAT_TIME, InstanceTable.COLUMN_IS_ADDRESS); + Object[] params = new Object[] {keyword, startSecondTimeBucket, endSecondTimeBucket, startSecondTimeBucket, endSecondTimeBucket, BooleanUtils.FALSE}; return buildAppServerInfo(sql, params); } @Override public List getAllServer(int applicationId, long startSecondTimeBucket, long endSecondTimeBucket) { logger.debug("get instances info, applicationId: {}, startSecondTimeBucket: {}, endSecondTimeBucket: {}", applicationId, startSecondTimeBucket, endSecondTimeBucket); - String dynamicSql = "select * from {0} where {1} = ? and {2} >= ? and {2} <= ? and {3} >= ? and {4} = ?"; + String dynamicSql = "select * from {0} where {1} = ? and (({2} >= ? and {2} <= ?) or ({3} >= ? and {3} <= ?)) and {4} = ?"; String sql = SqlBuilder.buildSql(dynamicSql, InstanceTable.TABLE, InstanceTable.COLUMN_APPLICATION_ID, InstanceTable.COLUMN_REGISTER_TIME, InstanceTable.COLUMN_HEARTBEAT_TIME, InstanceTable.COLUMN_IS_ADDRESS); - Object[] params = new Object[] {applicationId, startSecondTimeBucket, endSecondTimeBucket, startSecondTimeBucket, BooleanUtils.FALSE}; + Object[] params = new Object[] {applicationId, startSecondTimeBucket, endSecondTimeBucket, startSecondTimeBucket, endSecondTimeBucket, BooleanUtils.FALSE}; return buildAppServerInfo(sql, params); } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ServerQuery.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ServerQuery.java index 099ef4734..b269703ad 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ServerQuery.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ServerQuery.java @@ -59,9 +59,9 @@ public class ServerQuery implements Query { } public List getAllServer(int applicationId, Duration duration) throws ParseException { - long start = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getStart()); - long end = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getEnd()); - return getServerService().getAllServer(applicationId, start, end); + long startSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getStart()); + long endSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getEnd()); + return getServerService().getAllServer(applicationId, startSecondTimeBucket, endSecondTimeBucket); } public ResponseTimeTrend getServerResponseTimeTrend(int serverId, Duration duration) throws ParseException { 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 dae70573d..41620c751 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 @@ -86,8 +86,8 @@ public class ServerService { return serverInfos; } - public List getAllServer(int applicationId, long start, long end) { - List serverInfos = instanceUIDAO.getAllServer(applicationId, start, end); + public List getAllServer(int applicationId, long startSecondTimeBucket, long endSecondTimeBucket) { + List serverInfos = instanceUIDAO.getAllServer(applicationId, startSecondTimeBucket, endSecondTimeBucket); buildAppServerInfo(serverInfos); return serverInfos; } From 45a718de467e15f8f90bd9b6eddeb8982811e155 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Wed, 28 Feb 2018 21:11:59 +0800 Subject: [PATCH 7/8] 1. Change the parameter name: Start -> startTimeBucket End -> endTimeBucket --- .../skywalking/apm/collector/ui/query/ServerQuery.java | 6 +++--- .../apm/collector/ui/service/ServerService.java | 6 +++--- .../apm/collector/ui/utils/DurationUtils.java | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ServerQuery.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ServerQuery.java index b269703ad..5651a8d8d 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ServerQuery.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ServerQuery.java @@ -65,9 +65,9 @@ public class ServerQuery implements Query { } public ResponseTimeTrend getServerResponseTimeTrend(int serverId, Duration duration) throws ParseException { - long start = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); - long end = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); - return getServerService().getServerResponseTimeTrend(serverId, duration.getStep(), start, end); + long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); + long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); + return getServerService().getServerResponseTimeTrend(serverId, duration.getStep(), startTimeBucket, endTimeBucket); } public ThroughputTrend getServerTPSTrend(int serverId, Duration duration) throws ParseException { 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 41620c751..10f02715f 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 @@ -92,10 +92,10 @@ public class ServerService { return serverInfos; } - public ResponseTimeTrend getServerResponseTimeTrend(int instanceId, Step step, long start, - long end) throws ParseException { + public ResponseTimeTrend getServerResponseTimeTrend(int instanceId, Step step, long startTimeBucket, + long endTimeBucket) throws ParseException { ResponseTimeTrend responseTimeTrend = new ResponseTimeTrend(); - List durationPoints = DurationUtils.INSTANCE.getDurationPoints(step, start, end); + List durationPoints = DurationUtils.INSTANCE.getDurationPoints(step, startTimeBucket, endTimeBucket); List trends = instanceMetricUIDAO.getResponseTimeTrend(instanceId, step, durationPoints); responseTimeTrend.setTrendList(trends); return responseTimeTrend; diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/utils/DurationUtils.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/utils/DurationUtils.java index d88a23657..52e5976dd 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/utils/DurationUtils.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/utils/DurationUtils.java @@ -139,11 +139,11 @@ public enum DurationUtils { return dateTime; } - public List getDurationPoints(Step step, long start, long end) throws ParseException { - DateTime dateTime = parseToDateTime(step, start); + public List getDurationPoints(Step step, long startTimeBucket, long endTimeBucket) throws ParseException { + DateTime dateTime = parseToDateTime(step, startTimeBucket); List durations = new LinkedList<>(); - durations.add(new DurationPoint(start, secondsBetween(step, dateTime))); + durations.add(new DurationPoint(startTimeBucket, secondsBetween(step, dateTime))); int i = 0; do { @@ -176,10 +176,10 @@ public enum DurationUtils { } i++; if (i > 500) { - throw new UnexpectedException("Duration data error, step: " + step.name() + ", start: " + start + ", end: " + end); + throw new UnexpectedException("Duration data error, step: " + step.name() + ", start: " + startTimeBucket + ", end: " + endTimeBucket); } } - while (end != durations.get(durations.size() - 1).getPoint()); + while (endTimeBucket != durations.get(durations.size() - 1).getPoint()); return durations; } From 48981e87f2af9502d7b1a470d3d16201e689ea52 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Wed, 28 Feb 2018 21:29:01 +0800 Subject: [PATCH 8/8] 1. Change the parameter name: Start -> startTimeBucket End -> endTimeBucket --- .../apm/collector/ui/query/ServerQuery.java | 24 +++++++++---------- .../collector/ui/service/ServerService.java | 19 ++++++++------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ServerQuery.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ServerQuery.java index 5651a8d8d..cae9a389f 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ServerQuery.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/ServerQuery.java @@ -71,26 +71,26 @@ public class ServerQuery implements Query { } public ThroughputTrend getServerTPSTrend(int serverId, Duration duration) throws ParseException { - long start = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); - long end = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); - return getServerService().getServerTPSTrend(serverId, duration.getStep(), start, end); + long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); + long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); + return getServerService().getServerTPSTrend(serverId, duration.getStep(), startTimeBucket, endTimeBucket); } public CPUTrend getCPUTrend(int serverId, Duration duration) throws ParseException { - long start = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); - long end = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); - return getServerService().getCPUTrend(serverId, duration.getStep(), start, end); + long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); + long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); + return getServerService().getCPUTrend(serverId, duration.getStep(), startTimeBucket, endTimeBucket); } public GCTrend getGCTrend(int serverId, Duration duration) throws ParseException { - long start = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); - long end = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); - return getServerService().getGCTrend(serverId, duration.getStep(), start, end); + long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); + long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); + return getServerService().getGCTrend(serverId, duration.getStep(), startTimeBucket, endTimeBucket); } public MemoryTrend getMemoryTrend(int serverId, Duration duration) throws ParseException { - long start = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); - long end = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); - return getServerService().getMemoryTrend(serverId, duration.getStep(), start, end); + long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart()); + long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd()); + return getServerService().getMemoryTrend(serverId, duration.getStep(), startTimeBucket, endTimeBucket); } } 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 10f02715f..f3e7d85cf 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 @@ -117,25 +117,28 @@ public class ServerService { return serverThroughput; } - public ThroughputTrend getServerTPSTrend(int instanceId, Step step, long start, long end) throws ParseException { + public ThroughputTrend getServerTPSTrend(int instanceId, Step step, long startTimeBucket, + long endTimeBucket) throws ParseException { ThroughputTrend throughputTrend = new ThroughputTrend(); - List durationPoints = DurationUtils.INSTANCE.getDurationPoints(step, start, end); + List durationPoints = DurationUtils.INSTANCE.getDurationPoints(step, startTimeBucket, endTimeBucket); List trends = instanceMetricUIDAO.getServerTPSTrend(instanceId, step, durationPoints); throughputTrend.setTrendList(trends); return throughputTrend; } - public CPUTrend getCPUTrend(int instanceId, Step step, long start, long end) throws ParseException { + public CPUTrend getCPUTrend(int instanceId, Step step, long startTimeBucket, + long endTimeBucket) throws ParseException { CPUTrend cpuTrend = new CPUTrend(); - List durationPoints = DurationUtils.INSTANCE.getDurationPoints(step, start, end); + List durationPoints = DurationUtils.INSTANCE.getDurationPoints(step, startTimeBucket, endTimeBucket); List trends = cpuMetricUIDAO.getCPUTrend(instanceId, step, durationPoints); cpuTrend.setCost(trends); return cpuTrend; } - public GCTrend getGCTrend(int instanceId, Step step, long start, long end) throws ParseException { + public GCTrend getGCTrend(int instanceId, Step step, long startTimeBucket, + long endTimeBucket) throws ParseException { GCTrend gcTrend = new GCTrend(); - List durationPoints = DurationUtils.INSTANCE.getDurationPoints(step, start, end); + List durationPoints = DurationUtils.INSTANCE.getDurationPoints(step, startTimeBucket, endTimeBucket); List youngGCTrend = gcMetricUIDAO.getYoungGCTrend(instanceId, step, durationPoints); gcTrend.setYoungGC(youngGCTrend); List oldGCTrend = gcMetricUIDAO.getOldGCTrend(instanceId, step, durationPoints); @@ -143,9 +146,9 @@ public class ServerService { return gcTrend; } - public MemoryTrend getMemoryTrend(int instanceId, Step step, long start, long end) throws ParseException { + public MemoryTrend getMemoryTrend(int instanceId, Step step, long startTimeBucket, long endTimeBucket) throws ParseException { MemoryTrend memoryTrend = new MemoryTrend(); - List durationPoints = DurationUtils.INSTANCE.getDurationPoints(step, start, end); + List durationPoints = DurationUtils.INSTANCE.getDurationPoints(step, startTimeBucket, endTimeBucket); IMemoryMetricUIDAO.Trend heapMemoryTrend = memoryMetricUIDAO.getHeapMemoryTrend(instanceId, step, durationPoints); memoryTrend.setHeap(heapMemoryTrend.getMetrics()); memoryTrend.setMaxHeap(heapMemoryTrend.getMaxMetrics());