wu-sheng closed pull request #803: Provide the getTopNApplicationThroughput
query.
URL: https://github.com/apache/incubator-skywalking/pull/803
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/StorageModule.java
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/StorageModule.java
index b2230b947..9434ee859 100644
---
a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/StorageModule.java
+++
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/StorageModule.java
@@ -104,6 +104,7 @@
import
org.apache.skywalking.apm.collector.storage.dao.srmp.IServiceReferenceMonthMetricPersistenceDAO;
import
org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationComponentUIDAO;
import
org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMappingUIDAO;
+import
org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMetricUIDAO;
import
org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationReferenceMetricUIDAO;
import org.apache.skywalking.apm.collector.storage.dao.ui.ICpuMetricUIDAO;
import org.apache.skywalking.apm.collector.storage.dao.ui.IGCMetricUIDAO;
@@ -248,6 +249,7 @@ private void addUiDAO(List<Class> classes) {
classes.add(IInstanceMetricUIDAO.class);
classes.add(IApplicationComponentUIDAO.class);
classes.add(IApplicationMappingUIDAO.class);
+ classes.add(IApplicationMetricUIDAO.class);
classes.add(IApplicationReferenceMetricUIDAO.class);
classes.add(ISegmentDurationUIDAO.class);
classes.add(ISegmentUIDAO.class);
diff --git
a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IApplicationMetricUIDAO.java
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IApplicationMetricUIDAO.java
new file mode 100644
index 000000000..2ced95a36
--- /dev/null
+++
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/ui/IApplicationMetricUIDAO.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.dao.ui;
+
+import java.util.List;
+import org.apache.skywalking.apm.collector.storage.base.dao.DAO;
+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.overview.ApplicationTPS;
+
+/**
+ * @author peng-yongsheng
+ */
+public interface IApplicationMetricUIDAO extends DAO {
+ List<ApplicationTPS> getTopNApplicationThroughput(Step step, long start,
long end, long betweenSecond, int topN,
+ MetricSource metricSource);
+}
diff --git
a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/overview/ApplicationTPS.java
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/overview/ApplicationTPS.java
new file mode 100644
index 000000000..51e4c339c
--- /dev/null
+++
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/ui/overview/ApplicationTPS.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.ui.overview;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationTPS {
+ private int applicationId;
+ private String applicationCode;
+ private int tps;
+
+ public int getApplicationId() {
+ return applicationId;
+ }
+
+ public void setApplicationId(int applicationId) {
+ this.applicationId = applicationId;
+ }
+
+ public String getApplicationCode() {
+ return applicationCode;
+ }
+
+ public void setApplicationCode(String applicationCode) {
+ this.applicationCode = applicationCode;
+ }
+
+ public int getTps() {
+ return tps;
+ }
+
+ public void setTps(int tps) {
+ this.tps = tps;
+ }
+}
diff --git
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsProvider.java
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsProvider.java
index 943af2af3..789c9d652 100644
---
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsProvider.java
+++
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsProvider.java
@@ -113,6 +113,7 @@
import
org.apache.skywalking.apm.collector.storage.dao.srmp.IServiceReferenceMonthMetricPersistenceDAO;
import
org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationComponentUIDAO;
import
org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMappingUIDAO;
+import
org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMetricUIDAO;
import
org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationReferenceMetricUIDAO;
import org.apache.skywalking.apm.collector.storage.dao.ui.ICpuMetricUIDAO;
import org.apache.skywalking.apm.collector.storage.dao.ui.IGCMetricUIDAO;
@@ -211,6 +212,7 @@
import
org.apache.skywalking.apm.collector.storage.es.dao.srmp.ServiceReferenceMonthMetricEsPersistenceDAO;
import
org.apache.skywalking.apm.collector.storage.es.dao.ui.ApplicationComponentEsUIDAO;
import
org.apache.skywalking.apm.collector.storage.es.dao.ui.ApplicationMappingEsUIDAO;
+import
org.apache.skywalking.apm.collector.storage.es.dao.ui.ApplicationMetricEsUIDAO;
import
org.apache.skywalking.apm.collector.storage.es.dao.ui.ApplicationReferenceMetricEsUIDAO;
import org.apache.skywalking.apm.collector.storage.es.dao.ui.CpuMetricEsUIDAO;
import org.apache.skywalking.apm.collector.storage.es.dao.ui.GCMetricEsUIDAO;
@@ -407,6 +409,7 @@ private void registerUiDAO() throws
ServiceNotProvidedException {
this.registerServiceImplementation(IInstanceMetricUIDAO.class, new
InstanceMetricEsUIDAO(elasticSearchClient));
this.registerServiceImplementation(IApplicationComponentUIDAO.class,
new ApplicationComponentEsUIDAO(elasticSearchClient));
this.registerServiceImplementation(IApplicationMappingUIDAO.class, new
ApplicationMappingEsUIDAO(elasticSearchClient));
+ this.registerServiceImplementation(IApplicationMetricUIDAO.class, new
ApplicationMetricEsUIDAO(elasticSearchClient));
this.registerServiceImplementation(IApplicationReferenceMetricUIDAO.class, new
ApplicationReferenceMetricEsUIDAO(elasticSearchClient));
this.registerServiceImplementation(ISegmentDurationUIDAO.class, new
SegmentDurationEsUIDAO(elasticSearchClient));
this.registerServiceImplementation(ISegmentUIDAO.class, new
SegmentEsUIDAO(elasticSearchClient));
diff --git
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ApplicationMetricEsUIDAO.java
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ApplicationMetricEsUIDAO.java
new file mode 100644
index 000000000..0f67efc23
--- /dev/null
+++
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ui/ApplicationMetricEsUIDAO.java
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.es.dao.ui;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import
org.apache.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient;
+import
org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMetricUIDAO;
+import org.apache.skywalking.apm.collector.storage.es.base.dao.EsDAO;
+import org.apache.skywalking.apm.collector.storage.table.MetricSource;
+import
org.apache.skywalking.apm.collector.storage.table.application.ApplicationMetricTable;
+import org.apache.skywalking.apm.collector.storage.ui.common.Step;
+import org.apache.skywalking.apm.collector.storage.ui.overview.ApplicationTPS;
+import
org.apache.skywalking.apm.collector.storage.utils.TimePyramidTableNameBuilder;
+import org.elasticsearch.action.search.SearchRequestBuilder;
+import org.elasticsearch.action.search.SearchResponse;
+import org.elasticsearch.action.search.SearchType;
+import org.elasticsearch.index.query.BoolQueryBuilder;
+import org.elasticsearch.index.query.QueryBuilders;
+import org.elasticsearch.script.Script;
+import org.elasticsearch.search.aggregations.AggregationBuilders;
+import org.elasticsearch.search.aggregations.bucket.terms.Terms;
+import
org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
+import org.elasticsearch.search.aggregations.pipeline.InternalSimpleValue;
+import
org.elasticsearch.search.aggregations.pipeline.PipelineAggregatorBuilders;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationMetricEsUIDAO extends EsDAO implements
IApplicationMetricUIDAO {
+
+ public ApplicationMetricEsUIDAO(ElasticSearchClient client) {
+ super(client);
+ }
+
+ private static final String AVG_TPS = "avg_tps";
+
+ @Override
+ public List<ApplicationTPS> getTopNApplicationThroughput(Step step, long
start, long end, long betweenSecond,
+ int topN,
+ MetricSource metricSource) {
+ String tableName = TimePyramidTableNameBuilder.build(step,
ApplicationMetricTable.TABLE);
+
+ SearchRequestBuilder searchRequestBuilder =
getClient().prepareSearch(tableName);
+ searchRequestBuilder.setTypes(ApplicationMetricTable.TABLE_TYPE);
+ searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
+
+ BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
+
boolQuery.must().add(QueryBuilders.rangeQuery(ApplicationMetricTable.COLUMN_TIME_BUCKET).gte(start).lte(end));
+
boolQuery.must().add(QueryBuilders.termQuery(ApplicationMetricTable.COLUMN_SOURCE_VALUE,
metricSource.getValue()));
+
+ searchRequestBuilder.setQuery(boolQuery);
+ searchRequestBuilder.setSize(0);
+
+ TermsAggregationBuilder aggregationBuilder =
AggregationBuilders.terms(ApplicationMetricTable.COLUMN_APPLICATION_ID).field(ApplicationMetricTable.COLUMN_APPLICATION_ID).size(topN);
+
aggregationBuilder.subAggregation(AggregationBuilders.sum(ApplicationMetricTable.COLUMN_TRANSACTION_CALLS).field(ApplicationMetricTable.COLUMN_TRANSACTION_CALLS));
+
aggregationBuilder.subAggregation(AggregationBuilders.sum(ApplicationMetricTable.COLUMN_TRANSACTION_ERROR_CALLS).field(ApplicationMetricTable.COLUMN_TRANSACTION_ERROR_CALLS));
+
+ Map<String, String> bucketsPathsMap = new HashMap<>();
+ bucketsPathsMap.put(ApplicationMetricTable.COLUMN_TRANSACTION_CALLS,
ApplicationMetricTable.COLUMN_TRANSACTION_CALLS);
+
bucketsPathsMap.put(ApplicationMetricTable.COLUMN_TRANSACTION_ERROR_CALLS,
ApplicationMetricTable.COLUMN_TRANSACTION_ERROR_CALLS);
+
+ String idOrCode = "(params." +
ApplicationMetricTable.COLUMN_TRANSACTION_CALLS + " - params." +
ApplicationMetricTable.COLUMN_TRANSACTION_ERROR_CALLS + ")"
+ + " / "
+ + "(" + betweenSecond + ")";
+ Script script = new Script(idOrCode);
+
aggregationBuilder.subAggregation(PipelineAggregatorBuilders.bucketScript(AVG_TPS,
bucketsPathsMap, script));
+
+ searchRequestBuilder.addAggregation(aggregationBuilder);
+ SearchResponse searchResponse =
searchRequestBuilder.execute().actionGet();
+
+ List<ApplicationTPS> applicationTPSs = new LinkedList<>();
+ Terms serviceIdTerms =
searchResponse.getAggregations().get(ApplicationMetricTable.COLUMN_APPLICATION_ID);
+ serviceIdTerms.getBuckets().forEach(serviceIdTerm -> {
+ int applicationId = serviceIdTerm.getKeyAsNumber().intValue();
+
+ ApplicationTPS serviceMetric = new ApplicationTPS();
+ InternalSimpleValue simpleValue =
serviceIdTerm.getAggregations().get(AVG_TPS);
+
+ serviceMetric.setApplicationId(applicationId);
+ serviceMetric.setTps((int)simpleValue.getValue());
+ applicationTPSs.add(serviceMetric);
+ });
+ return applicationTPSs;
+ }
+}
diff --git
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/StorageModuleH2Provider.java
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/StorageModuleH2Provider.java
index ba2512525..55c3db8a0 100644
---
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/StorageModuleH2Provider.java
+++
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/StorageModuleH2Provider.java
@@ -109,6 +109,7 @@
import
org.apache.skywalking.apm.collector.storage.dao.srmp.IServiceReferenceMonthMetricPersistenceDAO;
import
org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationComponentUIDAO;
import
org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMappingUIDAO;
+import
org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMetricUIDAO;
import
org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationReferenceMetricUIDAO;
import org.apache.skywalking.apm.collector.storage.dao.ui.ICpuMetricUIDAO;
import org.apache.skywalking.apm.collector.storage.dao.ui.IGCMetricUIDAO;
@@ -207,6 +208,7 @@
import
org.apache.skywalking.apm.collector.storage.h2.dao.srmp.ServiceReferenceMonthMetricH2PersistenceDAO;
import
org.apache.skywalking.apm.collector.storage.h2.dao.ui.ApplicationComponentH2UIDAO;
import
org.apache.skywalking.apm.collector.storage.h2.dao.ui.ApplicationMappingH2UIDAO;
+import
org.apache.skywalking.apm.collector.storage.h2.dao.ui.ApplicationMetricH2UIDAO;
import
org.apache.skywalking.apm.collector.storage.h2.dao.ui.ApplicationReferenceMetricH2UIDAO;
import org.apache.skywalking.apm.collector.storage.h2.dao.ui.CpuMetricH2UIDAO;
import org.apache.skywalking.apm.collector.storage.h2.dao.ui.GCMetricH2UIDAO;
@@ -383,6 +385,7 @@ private void registerUiDAO() throws
ServiceNotProvidedException {
this.registerServiceImplementation(IInstanceMetricUIDAO.class, new
InstanceMetricH2UIDAO(h2Client));
this.registerServiceImplementation(IApplicationComponentUIDAO.class,
new ApplicationComponentH2UIDAO(h2Client));
this.registerServiceImplementation(IApplicationMappingUIDAO.class, new
ApplicationMappingH2UIDAO(h2Client));
+ this.registerServiceImplementation(IApplicationMetricUIDAO.class, new
ApplicationMetricH2UIDAO(h2Client));
this.registerServiceImplementation(IApplicationReferenceMetricUIDAO.class, new
ApplicationReferenceMetricH2UIDAO(h2Client));
this.registerServiceImplementation(ISegmentDurationUIDAO.class, new
SegmentDurationH2UIDAO(h2Client));
this.registerServiceImplementation(ISegmentUIDAO.class, new
SegmentH2UIDAO(h2Client));
diff --git
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ApplicationMetricH2UIDAO.java
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ApplicationMetricH2UIDAO.java
new file mode 100644
index 000000000..d055b60dc
--- /dev/null
+++
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ui/ApplicationMetricH2UIDAO.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.h2.dao.ui;
+
+import java.util.List;
+import org.apache.skywalking.apm.collector.client.h2.H2Client;
+import
org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMetricUIDAO;
+import org.apache.skywalking.apm.collector.storage.h2.base.dao.H2DAO;
+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.overview.ApplicationTPS;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationMetricH2UIDAO extends H2DAO implements
IApplicationMetricUIDAO {
+
+ private final Logger logger =
LoggerFactory.getLogger(ApplicationMetricH2UIDAO.class);
+
+ public ApplicationMetricH2UIDAO(H2Client client) {
+ super(client);
+ }
+
+ @Override
+ public List<ApplicationTPS> getTopNApplicationThroughput(Step step, long
start, long end, long betweenSecond,
+ 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/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 e424512dd..917146e11 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
@@ -25,16 +25,15 @@
import org.apache.skywalking.apm.collector.storage.ui.common.Duration;
import org.apache.skywalking.apm.collector.storage.ui.common.Topology;
import org.apache.skywalking.apm.collector.storage.ui.overview.AlarmTrend;
+import org.apache.skywalking.apm.collector.storage.ui.overview.ApplicationTPS;
import org.apache.skywalking.apm.collector.storage.ui.overview.ClusterBrief;
import
org.apache.skywalking.apm.collector.storage.ui.overview.ConjecturalAppBrief;
-import org.apache.skywalking.apm.collector.storage.ui.server.AppServerInfo;
import org.apache.skywalking.apm.collector.storage.ui.service.ServiceMetric;
import org.apache.skywalking.apm.collector.ui.graphql.Query;
import org.apache.skywalking.apm.collector.ui.service.AlarmService;
import org.apache.skywalking.apm.collector.ui.service.ApplicationService;
import org.apache.skywalking.apm.collector.ui.service.ClusterTopologyService;
import org.apache.skywalking.apm.collector.ui.service.NetworkAddressService;
-import org.apache.skywalking.apm.collector.ui.service.ServerService;
import org.apache.skywalking.apm.collector.ui.service.ServiceNameService;
import org.apache.skywalking.apm.collector.ui.utils.DurationUtils;
@@ -48,7 +47,6 @@
private ApplicationService applicationService;
private NetworkAddressService networkAddressService;
private ServiceNameService serviceNameService;
- private ServerService serverService;
private AlarmService alarmService;
public OverViewLayerQuery(ModuleManager moduleManager) {
@@ -90,13 +88,6 @@ private AlarmService getAlarmService() {
return alarmService;
}
- private ServerService getServerService() {
- if (ObjectUtils.isEmpty(serverService)) {
- this.serverService = new ServerService(moduleManager);
- }
- return serverService;
- }
-
public Topology getClusterTopology(Duration duration) throws
ParseException {
long start =
DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(),
duration.getStart());
long end =
DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(),
duration.getEnd());
@@ -135,11 +126,11 @@ public ConjecturalAppBrief getConjecturalApps(Duration
duration) {
return getServiceNameService().getSlowService(duration.getStep(),
start, end, topN);
}
- public List<AppServerInfo> getTopNServerThroughput(int applicationId,
Duration duration,
+ public List<ApplicationTPS> getTopNApplicationThroughput(Duration duration,
int topN) throws ParseException {
long start =
DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart());
long end =
DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd());
- return getServerService().getTopNServerThroughput(applicationId,
duration.getStep(), start, end, topN);
+ return
getApplicationService().getTopNApplicationThroughput(duration.getStep(), start,
end, topN);
}
}
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 42c094fe8..639a2bfd7 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
@@ -25,11 +25,13 @@
import
org.apache.skywalking.apm.collector.cache.service.ServiceNameCacheService;
import org.apache.skywalking.apm.collector.core.module.ModuleManager;
import org.apache.skywalking.apm.collector.storage.StorageModule;
+import
org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationMetricUIDAO;
import org.apache.skywalking.apm.collector.storage.dao.ui.IInstanceUIDAO;
import org.apache.skywalking.apm.collector.storage.dao.ui.IServiceMetricUIDAO;
import org.apache.skywalking.apm.collector.storage.table.MetricSource;
import org.apache.skywalking.apm.collector.storage.ui.application.Application;
import org.apache.skywalking.apm.collector.storage.ui.common.Step;
+import org.apache.skywalking.apm.collector.storage.ui.overview.ApplicationTPS;
import org.apache.skywalking.apm.collector.storage.ui.service.ServiceMetric;
/**
@@ -39,12 +41,14 @@
private final IInstanceUIDAO instanceDAO;
private final IServiceMetricUIDAO serviceMetricUIDAO;
+ private final IApplicationMetricUIDAO applicationMetricUIDAO;
private final ApplicationCacheService applicationCacheService;
private final ServiceNameCacheService serviceNameCacheService;
public ApplicationService(ModuleManager moduleManager) {
this.instanceDAO =
moduleManager.find(StorageModule.NAME).getService(IInstanceUIDAO.class);
this.serviceMetricUIDAO =
moduleManager.find(StorageModule.NAME).getService(IServiceMetricUIDAO.class);
+ this.applicationMetricUIDAO =
moduleManager.find(StorageModule.NAME).getService(IApplicationMetricUIDAO.class);
this.applicationCacheService =
moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class);
this.serviceNameCacheService =
moduleManager.find(CacheModule.NAME).getService(ServiceNameCacheService.class);
}
@@ -69,4 +73,15 @@ public ApplicationService(ModuleManager moduleManager) {
});
return slowServices;
}
+
+ public List<ApplicationTPS> getTopNApplicationThroughput(Step step, long
start, long end,
+ int topN) throws ParseException {
+ //TODO
+ List<ApplicationTPS> applicationThroughput =
applicationMetricUIDAO.getTopNApplicationThroughput(step, start, end, 1000,
topN, MetricSource.Callee);
+ applicationThroughput.forEach(applicationTPS -> {
+ String applicationCode =
applicationCacheService.getApplicationById(applicationTPS.getApplicationId()).getApplicationCode();
+ applicationTPS.setApplicationCode(applicationCode);
+ });
+ return applicationThroughput;
+ }
}
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 12a27420d..ce91185ee 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
@@ -36,8 +36,6 @@
import org.apache.skywalking.apm.collector.storage.dao.ui.IInstanceMetricUIDAO;
import org.apache.skywalking.apm.collector.storage.dao.ui.IInstanceUIDAO;
import org.apache.skywalking.apm.collector.storage.dao.ui.IMemoryMetricUIDAO;
-import org.apache.skywalking.apm.collector.storage.table.MetricSource;
-import org.apache.skywalking.apm.collector.storage.table.register.Instance;
import org.apache.skywalking.apm.collector.storage.ui.common.ResponseTimeTrend;
import org.apache.skywalking.apm.collector.storage.ui.common.Step;
import org.apache.skywalking.apm.collector.storage.ui.common.ThroughputTrend;
@@ -72,18 +70,6 @@ public ServerService(ModuleManager moduleManager) {
this.applicationCacheService =
moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class);
}
- public List<AppServerInfo> getTopNServerThroughput(int applicationId, Step
step, long start, long end, int topN) {
- //TODO
- List<AppServerInfo> appServerInfos =
instanceMetricUIDAO.getTopNServerThroughput(applicationId, step, start, end,
1000, topN, MetricSource.Callee);
- appServerInfos.forEach(appServerInfo -> {
- Instance instance =
instanceUIDAO.getInstance(appServerInfo.getId());
- appServerInfo.setOsInfo(instance.getOsInfo());
- });
- buildAppServerInfo(appServerInfos);
-
- return appServerInfos;
- }
-
public List<AppServerInfo> searchServer(String keyword, long start, long
end) {
List<AppServerInfo> serverInfos = instanceUIDAO.searchServer(keyword,
start, end);
serverInfos.forEach(serverInfo -> {
----------------------------------------------------------------
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:
[email protected]
With regards,
Apache Git Services