wu-sheng closed pull request #838: "getTopNSlowService" service, change the attribute name from TPS to callsPerSec. URL: https://github.com/apache/incubator-skywalking/pull/838
This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IServiceMetricUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IServiceMetricUIDAO.java index d97396ddc..94bd6fcfa 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IServiceMetricUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IServiceMetricUIDAO.java @@ -40,6 +40,6 @@ List<Node> getServicesMetric(Step step, long startTime, long endTime, MetricSource metricSource, Collection<Integer> serviceIds); - List<ServiceMetric> getSlowService(int applicationId, Step step, long start, long end, - Integer top, MetricSource metricSource); + List<ServiceMetric> getSlowService(int applicationId, Step step, long startTimeBucket, long endTimeBucket, + Integer topN, MetricSource metricSource); } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/service/ServiceMetric.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/service/ServiceMetric.java index 7db67f8b4..9993d88bf 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/service/ServiceMetric.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/service/ServiceMetric.java @@ -24,8 +24,9 @@ public class ServiceMetric { private int id; private String name; + private long calls; private int avgResponseTime; - private int tps; + private int callsPerSec; public int getId() { return id; @@ -51,11 +52,19 @@ public void setAvgResponseTime(int avgResponseTime) { this.avgResponseTime = avgResponseTime; } - 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 long getCalls() { + return calls; + } + + public void setCalls(long calls) { + this.calls = calls; } } diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ServiceMetricEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ServiceMetricEsUIDAO.java index 96ad55993..111355240 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ServiceMetricEsUIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ServiceMetricEsUIDAO.java @@ -175,7 +175,9 @@ public ServiceMetricEsUIDAO(ElasticSearchClient client) { return nodes; } - @Override public List<ServiceMetric> getSlowService(int applicationId, Step step, long start, long end, Integer top, + @Override + public List<ServiceMetric> getSlowService(int applicationId, Step step, long startTimeBucket, long endTimeBucket, + Integer topN, MetricSource metricSource) { String tableName = TimePyramidTableNameBuilder.build(step, ServiceMetricTable.TABLE); @@ -184,7 +186,7 @@ public ServiceMetricEsUIDAO(ElasticSearchClient client) { searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH); BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); - boolQuery.must().add(QueryBuilders.rangeQuery(ServiceMetricTable.COLUMN_TIME_BUCKET).gte(start).lte(end)); + boolQuery.must().add(QueryBuilders.rangeQuery(ServiceMetricTable.COLUMN_TIME_BUCKET).gte(startTimeBucket).lte(endTimeBucket)); if (applicationId != 0) { boolQuery.must().add(QueryBuilders.termQuery(ServiceMetricTable.COLUMN_APPLICATION_ID, applicationId)); } @@ -193,7 +195,7 @@ public ServiceMetricEsUIDAO(ElasticSearchClient client) { searchRequestBuilder.setQuery(boolQuery); searchRequestBuilder.setSize(0); - TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms(ServiceMetricTable.COLUMN_SERVICE_ID).field(ServiceMetricTable.COLUMN_SERVICE_ID).size(top); + TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms(ServiceMetricTable.COLUMN_SERVICE_ID).field(ServiceMetricTable.COLUMN_SERVICE_ID).size(topN); aggregationBuilder.subAggregation(AggregationBuilders.sum(ServiceMetricTable.COLUMN_TRANSACTION_CALLS).field(ServiceMetricTable.COLUMN_TRANSACTION_CALLS)); aggregationBuilder.subAggregation(AggregationBuilders.sum(ServiceMetricTable.COLUMN_TRANSACTION_ERROR_CALLS).field(ServiceMetricTable.COLUMN_TRANSACTION_ERROR_CALLS)); aggregationBuilder.subAggregation(AggregationBuilders.sum(ServiceMetricTable.COLUMN_TRANSACTION_DURATION_SUM).field(ServiceMetricTable.COLUMN_TRANSACTION_DURATION_SUM)); @@ -221,7 +223,9 @@ public ServiceMetricEsUIDAO(ElasticSearchClient client) { ServiceMetric serviceMetric = new ServiceMetric(); InternalSimpleValue simpleValue = serviceIdTerm.getAggregations().get(AVG_DURATION); + Sum calls = serviceIdTerm.getAggregations().get(ServiceMetricTable.COLUMN_TRANSACTION_CALLS); + serviceMetric.setCalls((long)calls.getValue()); serviceMetric.setId(serviceId); serviceMetric.setAvgResponseTime((int)simpleValue.getValue()); serviceMetrics.add(serviceMetric); diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ServiceMetricH2UIDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ServiceMetricH2UIDAO.java index d21b39196..247283b86 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ServiceMetricH2UIDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ServiceMetricH2UIDAO.java @@ -116,7 +116,7 @@ public ServiceMetricH2UIDAO(H2Client client) { return null; } - @Override public List<ServiceMetric> getSlowService(int applicationId, Step step, long start, long end, Integer top, + @Override public List<ServiceMetric> getSlowService(int applicationId, Step step, long startTimeBucket, long endTimeBucket, Integer 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/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 0503e504b..d9d856d6f 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 @@ -146,10 +146,13 @@ public ConjecturalAppBrief getConjecturalApps(Duration duration) throws ParseExc } public List<ServiceMetric> getTopNSlowService(Duration duration, int 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()); + + long startSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getStart()); + long endSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getEnd()); - return getServiceNameService().getSlowService(duration.getStep(), start, end, topN); + return getServiceNameService().getSlowService(duration.getStep(), startTimeBucket, endTimeBucket, startSecondTimeBucket, endSecondTimeBucket, topN); } public List<ApplicationTPS> getTopNApplicationThroughput(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 13ddaaf4d..81804f714 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 @@ -75,7 +75,7 @@ public ApplicationService(ModuleManager moduleManager) { slowServices.forEach(slowService -> { slowService.setName(serviceNameCacheService.get(slowService.getId()).getServiceName()); //TODO - slowService.setTps(1); + slowService.setCallsPerSec(1); }); return slowServices; } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServiceNameService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServiceNameService.java index 52061a754..30cb8b6b6 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServiceNameService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServiceNameService.java @@ -27,6 +27,7 @@ import org.apache.skywalking.apm.collector.storage.dao.ui.IServiceMetricUIDAO; import org.apache.skywalking.apm.collector.storage.dao.ui.IServiceNameServiceUIDAO; import org.apache.skywalking.apm.collector.storage.table.MetricSource; +import org.apache.skywalking.apm.collector.storage.table.register.ServiceName; import org.apache.skywalking.apm.collector.storage.ui.common.ResponseTimeTrend; import org.apache.skywalking.apm.collector.storage.ui.common.SLATrend; import org.apache.skywalking.apm.collector.storage.ui.common.Step; @@ -35,20 +36,26 @@ import org.apache.skywalking.apm.collector.storage.ui.service.ServiceMetric; import org.apache.skywalking.apm.collector.storage.utils.DurationPoint; import org.apache.skywalking.apm.collector.ui.utils.DurationUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ public class ServiceNameService { + private final Logger logger = LoggerFactory.getLogger(ServiceNameService.class); + private final IServiceNameServiceUIDAO serviceNameServiceUIDAO; private final IServiceMetricUIDAO serviceMetricUIDAO; private final ServiceNameCacheService serviceNameCacheService; + private final SecondBetweenService secondBetweenService; public ServiceNameService(ModuleManager moduleManager) { this.serviceNameServiceUIDAO = moduleManager.find(StorageModule.NAME).getService(IServiceNameServiceUIDAO.class); this.serviceMetricUIDAO = moduleManager.find(StorageModule.NAME).getService(IServiceMetricUIDAO.class); this.serviceNameCacheService = moduleManager.find(CacheModule.NAME).getService(ServiceNameCacheService.class); + this.secondBetweenService = new SecondBetweenService(moduleManager); } public int getCount() { @@ -85,13 +92,18 @@ public SLATrend getServiceSLATrend(int serviceId, Step step, long start, long en return slaTrend; } - public List<ServiceMetric> getSlowService(Step step, long start, long end, - Integer top) throws ParseException { - List<ServiceMetric> slowServices = serviceMetricUIDAO.getSlowService(0, step, start, end, top, MetricSource.Callee); + public List<ServiceMetric> getSlowService(Step step, long startTimeBucket, long endTimeBucket, + long startSecondTimeBucket, long endSecondTimeBucket, + Integer topN) throws ParseException { + List<ServiceMetric> slowServices = serviceMetricUIDAO.getSlowService(0, step, startTimeBucket, endTimeBucket, topN, MetricSource.Callee); slowServices.forEach(slowService -> { - slowService.setName(serviceNameCacheService.get(slowService.getId()).getServiceName()); - //TODO - slowService.setTps(1); + ServiceName serviceName = serviceNameCacheService.get(slowService.getId()); + slowService.setName(serviceName.getServiceName()); + try { + slowService.setCallsPerSec((int)(slowService.getCalls() / secondBetweenService.calculate(serviceName.getApplicationId(), startSecondTimeBucket, endSecondTimeBucket))); + } catch (ParseException e) { + logger.error(e.getMessage(), e); + } }); return slowServices; } diff --git a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/service-layer.graphqls b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/service-layer.graphqls index cf4b73ee8..3e33feebf 100644 --- a/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/service-layer.graphqls +++ b/apm-protocol/apm-ui-protocol/src/main/resources/ui-graphql/service-layer.graphqls @@ -21,7 +21,7 @@ type ServiceMetric { name: String # The unit is millisecond. avgResponseTime: Int! - tps: Int! + callsPerSec: Int! } type TraceItem { ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services