提交 62d51482 编写于 作者: P peng-yongsheng

1. Changed the attribute name from TPS to callsPerSec.

2. Calculate the callsPerSec.
上级 40861229
......@@ -28,8 +28,8 @@ 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);
List<ApplicationTPS> getTopNApplicationThroughput(Step step, long startTimeBucket, long endTimeBucket,
int betweenSecond, int topN, MetricSource metricSource);
List<ApplicationMetric> getApplications(Step step, long startTimeBucket, long endTimeBucket,
MetricSource metricSource);
......
......@@ -24,7 +24,7 @@ package org.apache.skywalking.apm.collector.storage.ui.overview;
public class ApplicationTPS {
private int applicationId;
private String applicationCode;
private int tps;
private int callsPerSec;
public int getApplicationId() {
return applicationId;
......@@ -42,11 +42,11 @@ public class ApplicationTPS {
this.applicationCode = applicationCode;
}
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;
}
}
......@@ -55,9 +55,8 @@ public class ApplicationMetricEsUIDAO extends EsDAO implements IApplicationMetri
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) {
public List<ApplicationTPS> getTopNApplicationThroughput(Step step, long startTimeBucket, long endTimeBucket,
int betweenSecond, int topN, MetricSource metricSource) {
String tableName = TimePyramidTableNameBuilder.build(step, ApplicationMetricTable.TABLE);
SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(tableName);
......@@ -65,7 +64,7 @@ public class ApplicationMetricEsUIDAO extends EsDAO implements IApplicationMetri
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.rangeQuery(ApplicationMetricTable.COLUMN_TIME_BUCKET).gte(startTimeBucket).lte(endTimeBucket));
boolQuery.must().add(QueryBuilders.termQuery(ApplicationMetricTable.COLUMN_SOURCE_VALUE, metricSource.getValue()));
searchRequestBuilder.setQuery(boolQuery);
......@@ -97,7 +96,7 @@ public class ApplicationMetricEsUIDAO extends EsDAO implements IApplicationMetri
InternalSimpleValue simpleValue = applicationIdTerm.getAggregations().get(AVG_TPS);
applicationTPS.setApplicationId(applicationId);
applicationTPS.setTps((int)simpleValue.getValue());
applicationTPS.setCallsPerSec((int)simpleValue.getValue());
applicationTPSs.add(applicationTPS);
});
return applicationTPSs;
......
......@@ -40,8 +40,8 @@ public class ApplicationMetricH2UIDAO extends H2DAO implements IApplicationMetri
}
@Override
public List<ApplicationTPS> getTopNApplicationThroughput(Step step, long start, long end, long betweenSecond,
int topN, MetricSource metricSource) {
public List<ApplicationTPS> getTopNApplicationThroughput(Step step, long startTimeBucket, long endTimeBucket,
int betweenSecond, int topN, MetricSource metricSource) {
return null;
}
......
......@@ -157,9 +157,9 @@ public class OverViewLayerQuery implements Query {
public List<ApplicationTPS> getTopNApplicationThroughput(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());
return getApplicationService().getTopNApplicationThroughput(duration.getStep(), start, end, topN);
return getApplicationService().getTopNApplicationThroughput(duration.getStep(), startTimeBucket, endTimeBucket, topN);
}
}
......@@ -37,6 +37,7 @@ import org.apache.skywalking.apm.collector.storage.ui.overview.ApplicationTPS;
import org.apache.skywalking.apm.collector.storage.ui.overview.ConjecturalApp;
import org.apache.skywalking.apm.collector.storage.ui.overview.ConjecturalAppBrief;
import org.apache.skywalking.apm.collector.storage.ui.service.ServiceMetric;
import org.apache.skywalking.apm.collector.ui.utils.DurationUtils;
/**
* @author peng-yongsheng
......@@ -80,10 +81,10 @@ public class ApplicationService {
return slowServices;
}
public List<ApplicationTPS> getTopNApplicationThroughput(Step step, long start, long end,
public List<ApplicationTPS> getTopNApplicationThroughput(Step step, long startTimeBucket, long endTimeBucket,
int topN) throws ParseException {
//TODO
List<ApplicationTPS> applicationThroughput = applicationMetricUIDAO.getTopNApplicationThroughput(step, start, end, 1000, topN, MetricSource.Callee);
int secondsBetween = DurationUtils.INSTANCE.secondsBetween(step, startTimeBucket, endTimeBucket);
List<ApplicationTPS> applicationThroughput = applicationMetricUIDAO.getTopNApplicationThroughput(step, startTimeBucket, endTimeBucket, secondsBetween, topN, MetricSource.Callee);
applicationThroughput.forEach(applicationTPS -> {
String applicationCode = applicationCacheService.getApplicationById(applicationTPS.getApplicationId()).getApplicationCode();
applicationTPS.setApplicationCode(applicationCode);
......
......@@ -64,36 +64,36 @@ public enum DurationUtils {
return secondTimeBucket;
}
public long secondsBetween(Step step, long start, long end) throws ParseException {
public int secondsBetween(Step step, long startTimeBucket, long endTimeBucket) throws ParseException {
Date startDate = null;
Date endDate = null;
switch (step) {
case MONTH:
startDate = new SimpleDateFormat("yyyyMM").parse(String.valueOf(start));
endDate = new SimpleDateFormat("yyyyMM").parse(String.valueOf(end));
startDate = new SimpleDateFormat("yyyyMM").parse(String.valueOf(startTimeBucket));
endDate = new SimpleDateFormat("yyyyMM").parse(String.valueOf(endTimeBucket));
break;
case DAY:
startDate = new SimpleDateFormat("yyyyMMdd").parse(String.valueOf(start));
endDate = new SimpleDateFormat("yyyyMMdd").parse(String.valueOf(end));
startDate = new SimpleDateFormat("yyyyMMdd").parse(String.valueOf(startTimeBucket));
endDate = new SimpleDateFormat("yyyyMMdd").parse(String.valueOf(endTimeBucket));
break;
case HOUR:
startDate = new SimpleDateFormat("yyyyMMddHH").parse(String.valueOf(start));
endDate = new SimpleDateFormat("yyyyMMddHH").parse(String.valueOf(end));
startDate = new SimpleDateFormat("yyyyMMddHH").parse(String.valueOf(startTimeBucket));
endDate = new SimpleDateFormat("yyyyMMddHH").parse(String.valueOf(endTimeBucket));
break;
case MINUTE:
startDate = new SimpleDateFormat("yyyyMMddHHmm").parse(String.valueOf(start));
endDate = new SimpleDateFormat("yyyyMMddHHmm").parse(String.valueOf(end));
startDate = new SimpleDateFormat("yyyyMMddHHmm").parse(String.valueOf(startTimeBucket));
endDate = new SimpleDateFormat("yyyyMMddHHmm").parse(String.valueOf(endTimeBucket));
break;
case SECOND:
startDate = new SimpleDateFormat("yyyyMMddHHmmss").parse(String.valueOf(start));
endDate = new SimpleDateFormat("yyyyMMddHHmmss").parse(String.valueOf(end));
startDate = new SimpleDateFormat("yyyyMMddHHmmss").parse(String.valueOf(startTimeBucket));
endDate = new SimpleDateFormat("yyyyMMddHHmmss").parse(String.valueOf(endTimeBucket));
break;
}
return Seconds.secondsBetween(new DateTime(startDate), new DateTime(endDate)).getSeconds();
}
public long secondsBetween(Step step, DateTime dateTime) throws ParseException {
public int secondsBetween(Step step, DateTime dateTime) throws ParseException {
switch (step) {
case MONTH:
return dateTime.dayOfMonth().getMaximumValue() * 24 * 60 * 60;
......
......@@ -30,7 +30,7 @@ type ConjecturalApp {
type ApplicationTPS {
applicationId: Int!
applicationCode: String
tps: Int!
callsPerSec: Int!
}
extend type Query {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册