1. Changed the attribute name from TPS to callsPerSec.
2. Calculate the callsPerSec.
This commit is contained in:
parent
e90cfc8de9
commit
2caa29a0dc
|
|
@ -40,6 +40,6 @@ public interface IServiceMetricUIDAO extends DAO {
|
|||
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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,8 +24,9 @@ package org.apache.skywalking.apm.collector.storage.ui.service;
|
|||
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 class ServiceMetric {
|
|||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -175,7 +175,9 @@ public class ServiceMetricEsUIDAO extends EsDAO implements IServiceMetricUIDAO {
|
|||
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 class ServiceMetricEsUIDAO extends EsDAO implements IServiceMetricUIDAO {
|
|||
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 class ServiceMetricEsUIDAO extends EsDAO implements IServiceMetricUIDAO {
|
|||
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 class ServiceMetricEsUIDAO extends EsDAO implements IServiceMetricUIDAO {
|
|||
|
||||
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);
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ public class ServiceMetricH2UIDAO extends H2DAO implements IServiceMetricUIDAO {
|
|||
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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -146,10 +146,13 @@ public class OverViewLayerQuery implements Query {
|
|||
}
|
||||
|
||||
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());
|
||||
|
||||
return getServiceNameService().getSlowService(duration.getStep(), start, end, topN);
|
||||
long startSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getStart());
|
||||
long endSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getEnd());
|
||||
|
||||
return getServiceNameService().getSlowService(duration.getStep(), startTimeBucket, endTimeBucket, startSecondTimeBucket, endSecondTimeBucket, topN);
|
||||
}
|
||||
|
||||
public List<ApplicationTPS> getTopNApplicationThroughput(Duration duration,
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ public class ApplicationService {
|
|||
slowServices.forEach(slowService -> {
|
||||
slowService.setName(serviceNameCacheService.get(slowService.getId()).getServiceName());
|
||||
//TODO
|
||||
slowService.setTps(1);
|
||||
slowService.setCallsPerSec(1);
|
||||
});
|
||||
return slowServices;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ import org.apache.skywalking.apm.collector.storage.StorageModule;
|
|||
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.ServiceInfo;
|
|||
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 class ServiceNameService {
|
|||
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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ type ServiceMetric {
|
|||
name: String
|
||||
# The unit is millisecond.
|
||||
avgResponseTime: Int!
|
||||
tps: Int!
|
||||
callsPerSec: Int!
|
||||
}
|
||||
|
||||
type TraceItem {
|
||||
|
|
|
|||
Loading…
Reference in New Issue