parent
9b9701845e
commit
bdf29e5a92
|
|
@ -78,14 +78,34 @@ public class JVMMetricsServiceHandlerTestCase {
|
|||
}
|
||||
|
||||
private static void buildMemoryPoolMetric(JVMMetric.Builder jvmMetric) {
|
||||
MemoryPool.Builder builder_1 = MemoryPool.newBuilder();
|
||||
builder_1.setType(PoolType.NEWGEN_USAGE);
|
||||
builder_1.setIsHeap(true);
|
||||
builder_1.setInit(20);
|
||||
builder_1.setMax(100);
|
||||
builder_1.setUsed(50);
|
||||
builder_1.setCommited(30);
|
||||
jvmMetric.addMemoryPool(builder_1.build());
|
||||
jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.NEWGEN_USAGE, true).build());
|
||||
jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.NEWGEN_USAGE, false).build());
|
||||
|
||||
jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.OLDGEN_USAGE, true).build());
|
||||
jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.OLDGEN_USAGE, false).build());
|
||||
|
||||
jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.METASPACE_USAGE, true).build());
|
||||
jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.METASPACE_USAGE, false).build());
|
||||
|
||||
jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.PERMGEN_USAGE, true).build());
|
||||
jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.PERMGEN_USAGE, false).build());
|
||||
|
||||
jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.SURVIVOR_USAGE, true).build());
|
||||
jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.SURVIVOR_USAGE, false).build());
|
||||
|
||||
jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.CODE_CACHE_USAGE, true).build());
|
||||
jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.CODE_CACHE_USAGE, false).build());
|
||||
}
|
||||
|
||||
private static MemoryPool.Builder buildMemoryPoolMetric(PoolType poolType, boolean isHeap) {
|
||||
MemoryPool.Builder builder = MemoryPool.newBuilder();
|
||||
builder.setType(poolType);
|
||||
builder.setIsHeap(isHeap);
|
||||
builder.setInit(20);
|
||||
builder.setMax(100);
|
||||
builder.setUsed(50);
|
||||
builder.setCommited(30);
|
||||
return builder;
|
||||
}
|
||||
|
||||
private static void buildGcMetric(JVMMetric.Builder jvmMetric) {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package org.skywalking.apm.collector.agentstream.worker.segment.cost.define;
|
||||
|
||||
import org.skywalking.apm.collector.storage.define.segment.SegmentCostTable;
|
||||
import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine;
|
||||
import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine;
|
||||
import org.skywalking.apm.collector.storage.define.segment.SegmentCostTable;
|
||||
|
||||
/**
|
||||
* @author pengys5
|
||||
|
|
@ -27,7 +27,7 @@ public class SegmentCostEsTableDefine extends ElasticSearchTableDefine {
|
|||
|
||||
@Override public void initialize() {
|
||||
addColumn(new ElasticSearchColumnDefine(SegmentCostTable.COLUMN_SEGMENT_ID, ElasticSearchColumnDefine.Type.Keyword.name()));
|
||||
addColumn(new ElasticSearchColumnDefine(SegmentCostTable.COLUMN_SERVICE_NAME, ElasticSearchColumnDefine.Type.Keyword.name()));
|
||||
addColumn(new ElasticSearchColumnDefine(SegmentCostTable.COLUMN_SERVICE_NAME, ElasticSearchColumnDefine.Type.Text.name()));
|
||||
addColumn(new ElasticSearchColumnDefine(SegmentCostTable.COLUMN_COST, ElasticSearchColumnDefine.Type.Long.name()));
|
||||
addColumn(new ElasticSearchColumnDefine(SegmentCostTable.COLUMN_START_TIME, ElasticSearchColumnDefine.Type.Long.name()));
|
||||
addColumn(new ElasticSearchColumnDefine(SegmentCostTable.COLUMN_END_TIME, ElasticSearchColumnDefine.Type.Long.name()));
|
||||
|
|
|
|||
|
|
@ -28,9 +28,9 @@ public class SegmentPost {
|
|||
InstanceEsDAO instanceEsDAO = new InstanceEsDAO();
|
||||
instanceEsDAO.setClient(client);
|
||||
|
||||
InstanceDataDefine.Instance consumerInstance = new InstanceDataDefine.Instance("2", 2, "dubbox-consumer", now, 2, now, "");
|
||||
InstanceDataDefine.Instance consumerInstance = new InstanceDataDefine.Instance("2", 2, "dubbox-consumer", now, 2, now, osInfo("consumer").toString());
|
||||
instanceEsDAO.save(consumerInstance);
|
||||
InstanceDataDefine.Instance providerInstance = new InstanceDataDefine.Instance("3", 3, "dubbox-provider", now, 3, now, "");
|
||||
InstanceDataDefine.Instance providerInstance = new InstanceDataDefine.Instance("3", 3, "dubbox-provider", now, 3, now, osInfo("provider").toString());
|
||||
instanceEsDAO.save(providerInstance);
|
||||
|
||||
ApplicationEsDAO applicationEsDAO = new ApplicationEsDAO();
|
||||
|
|
@ -64,10 +64,13 @@ public class SegmentPost {
|
|||
modifyTime(provider);
|
||||
HttpClientTools.INSTANCE.post("http://localhost:12800/segments", provider.toString());
|
||||
|
||||
diff = 0;
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
}
|
||||
|
||||
private static long diff = 0;
|
||||
|
||||
private static void modifyTime(JsonElement jsonElement) {
|
||||
JsonArray segmentArray = jsonElement.getAsJsonArray();
|
||||
for (JsonElement element : segmentArray) {
|
||||
|
|
@ -76,10 +79,28 @@ public class SegmentPost {
|
|||
for (JsonElement span : spans) {
|
||||
long startTime = span.getAsJsonObject().get("st").getAsLong();
|
||||
long endTime = span.getAsJsonObject().get("et").getAsLong();
|
||||
long currentTime = System.currentTimeMillis();
|
||||
span.getAsJsonObject().addProperty("st", currentTime);
|
||||
span.getAsJsonObject().addProperty("et", currentTime + (endTime - startTime));
|
||||
|
||||
if (diff == 0) {
|
||||
diff = System.currentTimeMillis() - startTime;
|
||||
}
|
||||
|
||||
span.getAsJsonObject().addProperty("st", startTime + diff);
|
||||
span.getAsJsonObject().addProperty("et", endTime + diff);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static JsonObject osInfo(String hostName) {
|
||||
JsonObject osInfoJson = new JsonObject();
|
||||
osInfoJson.addProperty("osName", "Linux");
|
||||
osInfoJson.addProperty("hostName", hostName);
|
||||
osInfoJson.addProperty("processId", 1);
|
||||
|
||||
JsonArray ipv4Array = new JsonArray();
|
||||
ipv4Array.add("123.123.123.123");
|
||||
ipv4Array.add("124.124.124.124");
|
||||
osInfoJson.add("ipv4s", ipv4Array);
|
||||
|
||||
return osInfoJson;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,8 +40,8 @@
|
|||
"tv": 0,
|
||||
"lv": 2,
|
||||
"ps": -1,
|
||||
"st": 1501858094883,
|
||||
"et": 1501858096950,
|
||||
"st": 1501858094726,
|
||||
"et": 1501858096804,
|
||||
"ci": 3,
|
||||
"cn": "",
|
||||
"oi": 0,
|
||||
|
|
|
|||
|
|
@ -53,7 +53,12 @@ public class ElasticSearchStorageInstaller extends StorageInstaller {
|
|||
return Settings.builder()
|
||||
.put("index.number_of_shards", tableDefine.numberOfShards())
|
||||
.put("index.number_of_replicas", tableDefine.numberOfReplicas())
|
||||
.put("index.refresh_interval", String.valueOf(tableDefine.refreshInterval()) + "s").build();
|
||||
.put("index.refresh_interval", String.valueOf(tableDefine.refreshInterval()) + "s")
|
||||
|
||||
.put("analysis.analyzer.collector_analyzer.tokenizer", "collector_tokenizer")
|
||||
.put("analysis.tokenizer.collector_tokenizer.type", "standard")
|
||||
.put("analysis.tokenizer.collector_tokenizer.max_token_length", 5)
|
||||
.build();
|
||||
}
|
||||
|
||||
private XContentBuilder createMappingBuilder(ElasticSearchTableDefine tableDefine) throws IOException {
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ import org.elasticsearch.search.aggregations.AggregationBuilders;
|
|||
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
|
||||
import org.elasticsearch.search.aggregations.metrics.sum.Sum;
|
||||
import org.skywalking.apm.collector.core.util.Const;
|
||||
import org.skywalking.apm.collector.storage.define.jvm.CpuMetricTable;
|
||||
import org.skywalking.apm.collector.storage.define.jvm.GCMetricTable;
|
||||
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
|
||||
import org.skywalking.apm.network.proto.GCPhrase;
|
||||
|
|
@ -92,8 +91,8 @@ public class GCMetricEsDAO extends EsDAO implements IGCMetricDAO {
|
|||
MultiGetRequestBuilder youngPrepareMultiGet = getClient().prepareMultiGet();
|
||||
int i = 0;
|
||||
do {
|
||||
String youngId = (startTimeBucket + i) + Const.ID_SPLIT + GCPhrase.NEW_VALUE + instanceId;
|
||||
youngPrepareMultiGet.add(CpuMetricTable.TABLE, CpuMetricTable.TABLE_TYPE, youngId);
|
||||
String youngId = (startTimeBucket + i) + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + GCPhrase.NEW_VALUE;
|
||||
youngPrepareMultiGet.add(GCMetricTable.TABLE, GCMetricTable.TABLE_TYPE, youngId);
|
||||
i++;
|
||||
}
|
||||
while (startTimeBucket + i <= endTimeBucket);
|
||||
|
|
@ -102,7 +101,7 @@ public class GCMetricEsDAO extends EsDAO implements IGCMetricDAO {
|
|||
MultiGetResponse multiGetResponse = youngPrepareMultiGet.get();
|
||||
for (MultiGetItemResponse itemResponse : multiGetResponse.getResponses()) {
|
||||
if (itemResponse.getResponse().isExists()) {
|
||||
youngArray.add(((Number)itemResponse.getResponse().getSource().get(CpuMetricTable.COLUMN_USAGE_PERCENT)).intValue());
|
||||
youngArray.add(((Number)itemResponse.getResponse().getSource().get(GCMetricTable.COLUMN_COUNT)).intValue());
|
||||
} else {
|
||||
youngArray.add(0);
|
||||
}
|
||||
|
|
@ -112,8 +111,8 @@ public class GCMetricEsDAO extends EsDAO implements IGCMetricDAO {
|
|||
MultiGetRequestBuilder oldPrepareMultiGet = getClient().prepareMultiGet();
|
||||
i = 0;
|
||||
do {
|
||||
String oldId = (startTimeBucket + i) + Const.ID_SPLIT + GCPhrase.OLD_VALUE + instanceId;
|
||||
oldPrepareMultiGet.add(CpuMetricTable.TABLE, CpuMetricTable.TABLE_TYPE, oldId);
|
||||
String oldId = (startTimeBucket + i) + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + GCPhrase.OLD_VALUE;
|
||||
oldPrepareMultiGet.add(GCMetricTable.TABLE, GCMetricTable.TABLE_TYPE, oldId);
|
||||
i++;
|
||||
}
|
||||
while (startTimeBucket + i <= endTimeBucket);
|
||||
|
|
@ -123,7 +122,7 @@ public class GCMetricEsDAO extends EsDAO implements IGCMetricDAO {
|
|||
multiGetResponse = oldPrepareMultiGet.get();
|
||||
for (MultiGetItemResponse itemResponse : multiGetResponse.getResponses()) {
|
||||
if (itemResponse.getResponse().isExists()) {
|
||||
oldArray.add(((Number)itemResponse.getResponse().getSource().get(CpuMetricTable.COLUMN_USAGE_PERCENT)).intValue());
|
||||
oldArray.add(((Number)itemResponse.getResponse().getSource().get(GCMetricTable.COLUMN_COUNT)).intValue());
|
||||
} else {
|
||||
oldArray.add(0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,9 +9,13 @@ import java.util.List;
|
|||
public interface IInstPerformanceDAO {
|
||||
List<InstPerformance> getMultiple(long timeBucket, int applicationId);
|
||||
|
||||
int getMetric(int instanceId, long timeBucket);
|
||||
int getTpsMetric(int instanceId, long timeBucket);
|
||||
|
||||
JsonArray getMetric(int instanceId, long startTimeBucket, long endTimeBucket);
|
||||
JsonArray getTpsMetric(int instanceId, long startTimeBucket, long endTimeBucket);
|
||||
|
||||
int getRespTimeMetric(int instanceId, long timeBucket);
|
||||
|
||||
JsonArray getRespTimeMetric(int instanceId, long startTimeBucket, long endTimeBucket);
|
||||
|
||||
class InstPerformance {
|
||||
private final int instanceId;
|
||||
|
|
|
|||
|
|
@ -7,5 +7,9 @@ import com.google.gson.JsonObject;
|
|||
*/
|
||||
public interface ISegmentCostDAO {
|
||||
JsonObject loadTop(long startTime, long endTime, long minCost, long maxCost, String operationName,
|
||||
String globalTraceId, int limit, int from);
|
||||
String globalTraceId, int limit, int from, Sort sort);
|
||||
|
||||
public enum Sort {
|
||||
Cost, Time
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ import org.elasticsearch.search.aggregations.bucket.terms.Terms;
|
|||
import org.elasticsearch.search.aggregations.metrics.sum.Sum;
|
||||
import org.skywalking.apm.collector.core.util.Const;
|
||||
import org.skywalking.apm.collector.storage.define.instance.InstPerformanceTable;
|
||||
import org.skywalking.apm.collector.storage.define.jvm.CpuMetricTable;
|
||||
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
|
||||
|
||||
/**
|
||||
|
|
@ -68,7 +67,7 @@ public class InstPerformanceEsDAO extends EsDAO implements IInstPerformanceDAO {
|
|||
return instPerformances;
|
||||
}
|
||||
|
||||
@Override public int getMetric(int instanceId, long timeBucket) {
|
||||
@Override public int getTpsMetric(int instanceId, long timeBucket) {
|
||||
String id = timeBucket + Const.ID_SPLIT + instanceId;
|
||||
GetResponse getResponse = getClient().prepareGet(InstPerformanceTable.TABLE, id).get();
|
||||
|
||||
|
|
@ -78,13 +77,13 @@ public class InstPerformanceEsDAO extends EsDAO implements IInstPerformanceDAO {
|
|||
return 0;
|
||||
}
|
||||
|
||||
@Override public JsonArray getMetric(int instanceId, long startTimeBucket, long endTimeBucket) {
|
||||
@Override public JsonArray getTpsMetric(int instanceId, long startTimeBucket, long endTimeBucket) {
|
||||
MultiGetRequestBuilder prepareMultiGet = getClient().prepareMultiGet();
|
||||
|
||||
int i = 0;
|
||||
do {
|
||||
String id = (startTimeBucket + i) + Const.ID_SPLIT + instanceId;
|
||||
prepareMultiGet.add(CpuMetricTable.TABLE, InstPerformanceTable.TABLE_TYPE, id);
|
||||
prepareMultiGet.add(InstPerformanceTable.TABLE, InstPerformanceTable.TABLE_TYPE, id);
|
||||
i++;
|
||||
}
|
||||
while (startTimeBucket + i <= endTimeBucket);
|
||||
|
|
@ -100,4 +99,41 @@ public class InstPerformanceEsDAO extends EsDAO implements IInstPerformanceDAO {
|
|||
}
|
||||
return metrics;
|
||||
}
|
||||
|
||||
@Override public int getRespTimeMetric(int instanceId, long timeBucket) {
|
||||
String id = timeBucket + Const.ID_SPLIT + instanceId;
|
||||
GetResponse getResponse = getClient().prepareGet(InstPerformanceTable.TABLE, id).get();
|
||||
|
||||
if (getResponse.isExists()) {
|
||||
int callTimes = ((Number)getResponse.getSource().get(InstPerformanceTable.COLUMN_CALL_TIMES)).intValue();
|
||||
int costTotal = ((Number)getResponse.getSource().get(InstPerformanceTable.COLUMN_COST_TOTAL)).intValue();
|
||||
return costTotal / callTimes;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override public JsonArray getRespTimeMetric(int instanceId, long startTimeBucket, long endTimeBucket) {
|
||||
MultiGetRequestBuilder prepareMultiGet = getClient().prepareMultiGet();
|
||||
|
||||
int i = 0;
|
||||
do {
|
||||
String id = (startTimeBucket + i) + Const.ID_SPLIT + instanceId;
|
||||
prepareMultiGet.add(InstPerformanceTable.TABLE, InstPerformanceTable.TABLE_TYPE, id);
|
||||
i++;
|
||||
}
|
||||
while (startTimeBucket + i <= endTimeBucket);
|
||||
|
||||
JsonArray metrics = new JsonArray();
|
||||
MultiGetResponse multiGetResponse = prepareMultiGet.get();
|
||||
for (MultiGetItemResponse response : multiGetResponse.getResponses()) {
|
||||
if (response.getResponse().isExists()) {
|
||||
int callTimes = ((Number)response.getResponse().getSource().get(InstPerformanceTable.COLUMN_CALL_TIMES)).intValue();
|
||||
int costTotal = ((Number)response.getResponse().getSource().get(InstPerformanceTable.COLUMN_COST_TOTAL)).intValue();
|
||||
metrics.add(costTotal / callTimes);
|
||||
} else {
|
||||
metrics.add(0);
|
||||
}
|
||||
}
|
||||
return metrics;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,11 +13,19 @@ public class InstPerformanceH2DAO extends H2DAO implements IInstPerformanceDAO {
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override public int getMetric(int instanceId, long timeBucket) {
|
||||
@Override public int getTpsMetric(int instanceId, long timeBucket) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override public JsonArray getMetric(int instanceId, long startTimeBucket, long endTimeBucket) {
|
||||
@Override public JsonArray getTpsMetric(int instanceId, long startTimeBucket, long endTimeBucket) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override public int getRespTimeMetric(int instanceId, long timeBucket) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override public JsonArray getRespTimeMetric(int instanceId, long startTimeBucket, long endTimeBucket) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,9 +44,7 @@ public class MemoryMetricEsDAO extends EsDAO implements IMemoryMetricDAO {
|
|||
while (startTimeBucket + i <= endTimeBucket);
|
||||
|
||||
JsonObject metric = new JsonObject();
|
||||
|
||||
JsonArray usedMetric = new JsonArray();
|
||||
|
||||
MultiGetResponse multiGetResponse = prepareMultiGet.get();
|
||||
for (MultiGetItemResponse response : multiGetResponse.getResponses()) {
|
||||
if (response.getResponse().isExists()) {
|
||||
|
|
@ -57,6 +55,7 @@ public class MemoryMetricEsDAO extends EsDAO implements IMemoryMetricDAO {
|
|||
usedMetric.add(0);
|
||||
}
|
||||
}
|
||||
metric.add("used", usedMetric);
|
||||
return metric;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,9 +45,7 @@ public class MemoryPoolMetricEsDAO extends EsDAO implements IMemoryPoolMetricDAO
|
|||
while (startTimeBucket + i <= endTimeBucket);
|
||||
|
||||
JsonObject metric = new JsonObject();
|
||||
|
||||
JsonArray usedMetric = new JsonArray();
|
||||
|
||||
MultiGetResponse multiGetResponse = prepareMultiGet.get();
|
||||
for (MultiGetItemResponse response : multiGetResponse.getResponses()) {
|
||||
if (response.getResponse().isExists()) {
|
||||
|
|
@ -58,6 +56,7 @@ public class MemoryPoolMetricEsDAO extends EsDAO implements IMemoryPoolMetricDAO
|
|||
usedMetric.add(0);
|
||||
}
|
||||
}
|
||||
metric.add("used", usedMetric);
|
||||
return metric;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@ import org.elasticsearch.search.sort.SortOrder;
|
|||
import org.skywalking.apm.collector.core.util.CollectionUtils;
|
||||
import org.skywalking.apm.collector.core.util.StringUtils;
|
||||
import org.skywalking.apm.collector.storage.dao.DAOContainer;
|
||||
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
|
||||
import org.skywalking.apm.collector.storage.define.global.GlobalTraceTable;
|
||||
import org.skywalking.apm.collector.storage.define.segment.SegmentCostTable;
|
||||
import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
|
||||
|
||||
/**
|
||||
* @author pengys5
|
||||
|
|
@ -25,7 +25,7 @@ import org.skywalking.apm.collector.storage.define.segment.SegmentCostTable;
|
|||
public class SegmentCostEsDAO extends EsDAO implements ISegmentCostDAO {
|
||||
|
||||
@Override public JsonObject loadTop(long startTime, long endTime, long minCost, long maxCost, String operationName,
|
||||
String globalTraceId, int limit, int from) {
|
||||
String globalTraceId, int limit, int from, Sort sort) {
|
||||
SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(SegmentCostTable.TABLE);
|
||||
searchRequestBuilder.setTypes(SegmentCostTable.TABLE_TYPE);
|
||||
searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
|
||||
|
|
@ -48,7 +48,11 @@ public class SegmentCostEsDAO extends EsDAO implements ISegmentCostDAO {
|
|||
mustQueryList.add(QueryBuilders.matchQuery(SegmentCostTable.COLUMN_SERVICE_NAME, operationName));
|
||||
}
|
||||
|
||||
searchRequestBuilder.addSort(SegmentCostTable.COLUMN_COST, SortOrder.DESC);
|
||||
if (Sort.Cost.equals(sort)) {
|
||||
searchRequestBuilder.addSort(SegmentCostTable.COLUMN_COST, SortOrder.DESC);
|
||||
} else if (Sort.Time.equals(sort)) {
|
||||
searchRequestBuilder.addSort(SegmentCostTable.COLUMN_START_TIME, SortOrder.DESC);
|
||||
}
|
||||
searchRequestBuilder.setSize(limit);
|
||||
searchRequestBuilder.setFrom(from);
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
|
|||
*/
|
||||
public class SegmentCostH2DAO extends H2DAO implements ISegmentCostDAO {
|
||||
@Override public JsonObject loadTop(long startTime, long endTime, long minCost, long maxCost, String operationName,
|
||||
String globalTraceId, int limit, int from) {
|
||||
String globalTraceId, int limit, int from, Sort sort) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public class ServiceEntryEsDAO extends EsDAO implements IServiceEntryDAO {
|
|||
boolQueryBuilder.must().add(QueryBuilders.matchQuery(ServiceEntryTable.COLUMN_APPLICATION_ID, applicationId));
|
||||
}
|
||||
if (StringUtils.isNotEmpty(entryServiceName)) {
|
||||
boolQueryBuilder.must().add(QueryBuilders.termQuery(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME, entryServiceName));
|
||||
boolQueryBuilder.must().add(QueryBuilders.matchQuery(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME, entryServiceName));
|
||||
}
|
||||
|
||||
searchRequestBuilder.setQuery(boolQueryBuilder);
|
||||
|
|
|
|||
|
|
@ -17,6 +17,9 @@ import org.skywalking.apm.collector.ui.jetty.handler.TraceStackGetHandler;
|
|||
import org.skywalking.apm.collector.ui.jetty.handler.UIJettyServerHandler;
|
||||
import org.skywalking.apm.collector.ui.jetty.handler.application.ApplicationsGetHandler;
|
||||
import org.skywalking.apm.collector.ui.jetty.handler.instancehealth.InstanceHealthGetHandler;
|
||||
import org.skywalking.apm.collector.ui.jetty.handler.instancemetric.InstanceMetricGetOneTimeBucketHandler;
|
||||
import org.skywalking.apm.collector.ui.jetty.handler.instancemetric.InstanceMetricGetRangeTimeBucketHandler;
|
||||
import org.skywalking.apm.collector.ui.jetty.handler.instancemetric.InstanceOsInfoGetHandler;
|
||||
import org.skywalking.apm.collector.ui.jetty.handler.servicetree.EntryServiceGetHandler;
|
||||
import org.skywalking.apm.collector.ui.jetty.handler.servicetree.ServiceTreeGetHandler;
|
||||
import org.skywalking.apm.collector.ui.jetty.handler.time.AllInstanceLastTimeGetHandler;
|
||||
|
|
@ -64,6 +67,9 @@ public class UIJettyModuleDefine extends UIModuleDefine {
|
|||
handlers.add(new AllInstanceLastTimeGetHandler());
|
||||
handlers.add(new InstanceHealthGetHandler());
|
||||
handlers.add(new ApplicationsGetHandler());
|
||||
handlers.add(new InstanceOsInfoGetHandler());
|
||||
handlers.add(new InstanceMetricGetOneTimeBucketHandler());
|
||||
handlers.add(new InstanceMetricGetRangeTimeBucketHandler());
|
||||
handlers.add(new EntryServiceGetHandler());
|
||||
handlers.add(new ServiceTreeGetHandler());
|
||||
return handlers;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import com.google.gson.JsonElement;
|
|||
import javax.servlet.http.HttpServletRequest;
|
||||
import org.skywalking.apm.collector.server.jetty.ArgumentsParseException;
|
||||
import org.skywalking.apm.collector.server.jetty.JettyHandler;
|
||||
import org.skywalking.apm.collector.ui.dao.ISegmentCostDAO;
|
||||
import org.skywalking.apm.collector.ui.service.SegmentTopService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
|
@ -77,7 +78,15 @@ public class SegmentTopGetHandler extends JettyHandler {
|
|||
operationName = req.getParameter("operationName");
|
||||
}
|
||||
|
||||
return service.loadTop(startTime, endTime, minCost, maxCost, operationName, globalTraceId, limit, from);
|
||||
ISegmentCostDAO.Sort sort = ISegmentCostDAO.Sort.Cost;
|
||||
if (req.getParameterMap().containsKey("sort")) {
|
||||
String sortStr = req.getParameter("sort");
|
||||
if (sortStr.toLowerCase().equals(ISegmentCostDAO.Sort.Time.name().toLowerCase())) {
|
||||
sort = ISegmentCostDAO.Sort.Time;
|
||||
}
|
||||
}
|
||||
|
||||
return service.loadTop(startTime, endTime, minCost, maxCost, operationName, globalTraceId, limit, from, sort);
|
||||
}
|
||||
|
||||
@Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException {
|
||||
|
|
|
|||
|
|
@ -24,13 +24,13 @@ public class InstanceHealthGetHandler extends JettyHandler {
|
|||
private InstanceHealthService service = new InstanceHealthService();
|
||||
|
||||
@Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
|
||||
String timestampStr = req.getParameter("timestamp");
|
||||
String timeBucketStr = req.getParameter("timeBucket");
|
||||
String[] applicationIdsStr = req.getParameterValues("applicationIds");
|
||||
logger.debug("instance health get timestamp: {}, applicationIdsStr: {}", timestampStr, applicationIdsStr);
|
||||
logger.debug("instance health get timeBucket: {}, applicationIdsStr: {}", timeBucketStr, applicationIdsStr);
|
||||
|
||||
long timestamp;
|
||||
long timeBucket;
|
||||
try {
|
||||
timestamp = Long.parseLong(timestampStr);
|
||||
timeBucket = Long.parseLong(timeBucketStr);
|
||||
} catch (NumberFormatException e) {
|
||||
throw new ArgumentsParseException("timestamp must be long");
|
||||
}
|
||||
|
|
@ -45,12 +45,12 @@ public class InstanceHealthGetHandler extends JettyHandler {
|
|||
}
|
||||
|
||||
JsonObject response = new JsonObject();
|
||||
response.addProperty("timestamp", timestamp);
|
||||
response.addProperty("timeBucket", timeBucket);
|
||||
JsonArray appInstances = new JsonArray();
|
||||
response.add("appInstances", appInstances);
|
||||
|
||||
for (int applicationId : applicationIds) {
|
||||
appInstances.add(service.getInstances(timestamp, applicationId));
|
||||
appInstances.add(service.getInstances(timeBucket, applicationId));
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,18 +23,18 @@ public class OneInstanceLastTimeGetHandler extends JettyHandler {
|
|||
private TimeSynchronousService service = new TimeSynchronousService();
|
||||
|
||||
@Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
|
||||
String applicationInstanceIdStr = req.getParameter("applicationInstanceId");
|
||||
logger.debug("applicationInstanceId: {}", applicationInstanceIdStr);
|
||||
String instanceIdStr = req.getParameter("instanceId");
|
||||
logger.debug("instanceId: {}", instanceIdStr);
|
||||
|
||||
int applicationInstanceId;
|
||||
int instanceId;
|
||||
try {
|
||||
applicationInstanceId = Integer.parseInt(applicationInstanceIdStr);
|
||||
instanceId = Integer.parseInt(instanceIdStr);
|
||||
} catch (NumberFormatException e) {
|
||||
throw new ArgumentsParseException("application instance id must be integer");
|
||||
}
|
||||
|
||||
Long time = service.instanceLastTime(applicationInstanceId);
|
||||
logger.debug("application instance id: {}, instance last time: {}", applicationInstanceId, time);
|
||||
Long time = service.instanceLastTime(instanceId);
|
||||
logger.debug("application instance id: {}, instance last time: {}", instanceId, time);
|
||||
JsonObject timeJson = new JsonObject();
|
||||
timeJson.addProperty("timeBucket", time);
|
||||
return timeJson;
|
||||
|
|
|
|||
|
|
@ -18,11 +18,10 @@ public class InstanceHealthService {
|
|||
|
||||
private final Logger logger = LoggerFactory.getLogger(InstanceHealthService.class);
|
||||
|
||||
public JsonObject getInstances(long timestamp, int applicationId) {
|
||||
public JsonObject getInstances(long timeBucket, int applicationId) {
|
||||
JsonObject response = new JsonObject();
|
||||
|
||||
long secondTimeBucket = TimeBucketUtils.INSTANCE.getSecondTimeBucket(timestamp);
|
||||
long s5TimeBucket = TimeBucketUtils.INSTANCE.getFiveSecondTimeBucket(secondTimeBucket);
|
||||
long s5TimeBucket = TimeBucketUtils.INSTANCE.getFiveSecondTimeBucket(timeBucket);
|
||||
|
||||
IInstPerformanceDAO instPerformanceDAO = (IInstPerformanceDAO)DAOContainer.INSTANCE.get(IInstPerformanceDAO.class.getName());
|
||||
List<IInstPerformanceDAO.InstPerformance> performances = instPerformanceDAO.getMultiple(s5TimeBucket, applicationId);
|
||||
|
|
|
|||
|
|
@ -39,53 +39,58 @@ public class InstanceJVMService {
|
|||
|
||||
public JsonObject getInstanceJvmMetric(int instanceId, Set<String> metricTypes, long timeBucket) {
|
||||
JsonObject metrics = new JsonObject();
|
||||
if (metricTypes.contains(MetricType.cpu.name())) {
|
||||
ICpuMetricDAO cpuMetricDAO = (ICpuMetricDAO)DAOContainer.INSTANCE.get(ICpuMetricDAO.class.getName());
|
||||
metrics.addProperty(MetricType.cpu.name(), cpuMetricDAO.getMetric(instanceId, timeBucket));
|
||||
} else if (metricTypes.contains(MetricType.gc.name())) {
|
||||
IGCMetricDAO gcMetricDAO = (IGCMetricDAO)DAOContainer.INSTANCE.get(IGCMetricDAO.class.getName());
|
||||
metrics.add(MetricType.gc.name(), gcMetricDAO.getMetric(instanceId, timeBucket));
|
||||
} else if (metricTypes.contains(MetricType.tps.name())) {
|
||||
IInstPerformanceDAO instPerformanceDAO = (IInstPerformanceDAO)DAOContainer.INSTANCE.get(IInstPerformanceDAO.class.getName());
|
||||
metrics.addProperty(MetricType.tps.name(), instPerformanceDAO.getMetric(instanceId, timeBucket));
|
||||
} else if (metricTypes.contains(MetricType.heapmemory.name())) {
|
||||
IMemoryMetricDAO memoryMetricDAO = (IMemoryMetricDAO)DAOContainer.INSTANCE.get(IMemoryMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapmemory.name(), memoryMetricDAO.getMetric(instanceId, timeBucket, true));
|
||||
} else if (metricTypes.contains(MetricType.nonheapmemory.name())) {
|
||||
IMemoryMetricDAO memoryMetricDAO = (IMemoryMetricDAO)DAOContainer.INSTANCE.get(IMemoryMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapmemory.name(), memoryMetricDAO.getMetric(instanceId, timeBucket, false));
|
||||
} else if (metricTypes.contains(MetricType.heappermgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heappermgen.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, true, PoolType.PERMGEN_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.heapmetaspace.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapmetaspace.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, true, PoolType.METASPACE_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.heapnewgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapnewgen.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, true, PoolType.NEWGEN_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.heapoldgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapoldgen.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, true, PoolType.OLDGEN_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.heapsurvivor.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapsurvivor.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, true, PoolType.SURVIVOR_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.nonheappermgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheappermgen.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, false, PoolType.PERMGEN_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.nonheapmetaspace.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapmetaspace.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, false, PoolType.METASPACE_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.nonheapnewgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapnewgen.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, false, PoolType.NEWGEN_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.nonheapoldgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapnewgen.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, false, PoolType.OLDGEN_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.nonheapsurvivor.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapsurvivor.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, false, PoolType.OLDGEN_USAGE_VALUE));
|
||||
} else {
|
||||
throw new UnexpectedException("unexpected metric type");
|
||||
for (String metricType : metricTypes) {
|
||||
if (metricType.toLowerCase().equals(MetricType.cpu.name())) {
|
||||
ICpuMetricDAO cpuMetricDAO = (ICpuMetricDAO)DAOContainer.INSTANCE.get(ICpuMetricDAO.class.getName());
|
||||
metrics.addProperty(MetricType.cpu.name(), cpuMetricDAO.getMetric(instanceId, timeBucket));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.gc.name())) {
|
||||
IGCMetricDAO gcMetricDAO = (IGCMetricDAO)DAOContainer.INSTANCE.get(IGCMetricDAO.class.getName());
|
||||
metrics.add(MetricType.gc.name(), gcMetricDAO.getMetric(instanceId, timeBucket));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.tps.name())) {
|
||||
IInstPerformanceDAO instPerformanceDAO = (IInstPerformanceDAO)DAOContainer.INSTANCE.get(IInstPerformanceDAO.class.getName());
|
||||
metrics.addProperty(MetricType.tps.name(), instPerformanceDAO.getTpsMetric(instanceId, timeBucket));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.resptime.name())) {
|
||||
IInstPerformanceDAO instPerformanceDAO = (IInstPerformanceDAO)DAOContainer.INSTANCE.get(IInstPerformanceDAO.class.getName());
|
||||
metrics.addProperty(MetricType.resptime.name(), instPerformanceDAO.getRespTimeMetric(instanceId, timeBucket));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.heapmemory.name())) {
|
||||
IMemoryMetricDAO memoryMetricDAO = (IMemoryMetricDAO)DAOContainer.INSTANCE.get(IMemoryMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapmemory.name(), memoryMetricDAO.getMetric(instanceId, timeBucket, true));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.nonheapmemory.name())) {
|
||||
IMemoryMetricDAO memoryMetricDAO = (IMemoryMetricDAO)DAOContainer.INSTANCE.get(IMemoryMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapmemory.name(), memoryMetricDAO.getMetric(instanceId, timeBucket, false));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.heappermgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heappermgen.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, true, PoolType.PERMGEN_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.heapmetaspace.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapmetaspace.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, true, PoolType.METASPACE_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.heapnewgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapnewgen.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, true, PoolType.NEWGEN_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.heapoldgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapoldgen.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, true, PoolType.OLDGEN_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.heapsurvivor.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapsurvivor.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, true, PoolType.SURVIVOR_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.nonheappermgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheappermgen.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, false, PoolType.PERMGEN_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.nonheapmetaspace.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapmetaspace.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, false, PoolType.METASPACE_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.nonheapnewgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapnewgen.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, false, PoolType.NEWGEN_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.nonheapoldgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapnewgen.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, false, PoolType.OLDGEN_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.nonheapsurvivor.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapsurvivor.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, false, PoolType.OLDGEN_USAGE_VALUE));
|
||||
} else {
|
||||
throw new UnexpectedException("unexpected metric type");
|
||||
}
|
||||
}
|
||||
return metrics;
|
||||
}
|
||||
|
|
@ -93,59 +98,65 @@ public class InstanceJVMService {
|
|||
public JsonObject getInstanceJvmMetrics(int instanceId, Set<String> metricTypes, long startTimeBucket,
|
||||
long endTimeBucket) {
|
||||
JsonObject metrics = new JsonObject();
|
||||
if (metricTypes.contains(MetricType.cpu.name())) {
|
||||
ICpuMetricDAO cpuMetricDAO = (ICpuMetricDAO)DAOContainer.INSTANCE.get(ICpuMetricDAO.class.getName());
|
||||
metrics.add(MetricType.cpu.name(), cpuMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket));
|
||||
} else if (metricTypes.contains(MetricType.gc.name())) {
|
||||
IGCMetricDAO gcMetricDAO = (IGCMetricDAO)DAOContainer.INSTANCE.get(IGCMetricDAO.class.getName());
|
||||
metrics.add(MetricType.gc.name(), gcMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket));
|
||||
} else if (metricTypes.contains(MetricType.tps.name())) {
|
||||
IInstPerformanceDAO instPerformanceDAO = (IInstPerformanceDAO)DAOContainer.INSTANCE.get(IInstPerformanceDAO.class.getName());
|
||||
metrics.add(MetricType.tps.name(), instPerformanceDAO.getMetric(instanceId, startTimeBucket, endTimeBucket));
|
||||
} else if (metricTypes.contains(MetricType.heapmemory.name())) {
|
||||
IMemoryMetricDAO memoryMetricDAO = (IMemoryMetricDAO)DAOContainer.INSTANCE.get(IMemoryMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapmemory.name(), memoryMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, true));
|
||||
} else if (metricTypes.contains(MetricType.nonheapmemory.name())) {
|
||||
IMemoryMetricDAO memoryMetricDAO = (IMemoryMetricDAO)DAOContainer.INSTANCE.get(IMemoryMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapmemory.name(), memoryMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, false));
|
||||
} else if (metricTypes.contains(MetricType.heappermgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heappermgen.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, true, PoolType.PERMGEN_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.heapmetaspace.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapmetaspace.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, true, PoolType.METASPACE_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.heapnewgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapnewgen.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, true, PoolType.NEWGEN_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.heapoldgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapoldgen.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, true, PoolType.OLDGEN_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.heapsurvivor.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapsurvivor.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, true, PoolType.SURVIVOR_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.nonheappermgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheappermgen.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, false, PoolType.PERMGEN_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.nonheapmetaspace.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapmetaspace.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, false, PoolType.METASPACE_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.nonheapnewgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapnewgen.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, false, PoolType.NEWGEN_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.nonheapoldgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapnewgen.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, false, PoolType.OLDGEN_USAGE_VALUE));
|
||||
} else if (metricTypes.contains(MetricType.nonheapsurvivor.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapsurvivor.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, false, PoolType.OLDGEN_USAGE_VALUE));
|
||||
} else {
|
||||
throw new UnexpectedException("unexpected metric type");
|
||||
for (String metricType : metricTypes) {
|
||||
if (metricType.toLowerCase().equals(MetricType.cpu.name())) {
|
||||
ICpuMetricDAO cpuMetricDAO = (ICpuMetricDAO)DAOContainer.INSTANCE.get(ICpuMetricDAO.class.getName());
|
||||
metrics.add(MetricType.cpu.name(), cpuMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.gc.name())) {
|
||||
IGCMetricDAO gcMetricDAO = (IGCMetricDAO)DAOContainer.INSTANCE.get(IGCMetricDAO.class.getName());
|
||||
metrics.add(MetricType.gc.name(), gcMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.tps.name())) {
|
||||
IInstPerformanceDAO instPerformanceDAO = (IInstPerformanceDAO)DAOContainer.INSTANCE.get(IInstPerformanceDAO.class.getName());
|
||||
metrics.add(MetricType.tps.name(), instPerformanceDAO.getTpsMetric(instanceId, startTimeBucket, endTimeBucket));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.resptime.name())) {
|
||||
IInstPerformanceDAO instPerformanceDAO = (IInstPerformanceDAO)DAOContainer.INSTANCE.get(IInstPerformanceDAO.class.getName());
|
||||
metrics.add(MetricType.resptime.name(), instPerformanceDAO.getRespTimeMetric(instanceId, startTimeBucket, endTimeBucket));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.heapmemory.name())) {
|
||||
IMemoryMetricDAO memoryMetricDAO = (IMemoryMetricDAO)DAOContainer.INSTANCE.get(IMemoryMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapmemory.name(), memoryMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, true));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.nonheapmemory.name())) {
|
||||
IMemoryMetricDAO memoryMetricDAO = (IMemoryMetricDAO)DAOContainer.INSTANCE.get(IMemoryMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapmemory.name(), memoryMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, false));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.heappermgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heappermgen.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, true, PoolType.PERMGEN_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.heapmetaspace.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapmetaspace.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, true, PoolType.METASPACE_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.heapnewgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapnewgen.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, true, PoolType.NEWGEN_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.heapoldgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapoldgen.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, true, PoolType.OLDGEN_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.heapsurvivor.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.heapsurvivor.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, true, PoolType.SURVIVOR_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.nonheappermgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheappermgen.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, false, PoolType.PERMGEN_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.nonheapmetaspace.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapmetaspace.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, false, PoolType.METASPACE_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.nonheapnewgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapnewgen.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, false, PoolType.NEWGEN_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.nonheapoldgen.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapnewgen.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, false, PoolType.OLDGEN_USAGE_VALUE));
|
||||
} else if (metricType.toLowerCase().equals(MetricType.nonheapsurvivor.name())) {
|
||||
IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
|
||||
metrics.add(MetricType.nonheapsurvivor.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, false, PoolType.OLDGEN_USAGE_VALUE));
|
||||
} else {
|
||||
throw new UnexpectedException("unexpected metric type");
|
||||
}
|
||||
}
|
||||
|
||||
return metrics;
|
||||
}
|
||||
|
||||
public enum MetricType {
|
||||
cpu, gc, tps, heapmemory, heappermgen, heapmetaspace, heapnewgen,
|
||||
cpu, gc, tps, resptime, heapmemory, heappermgen, heapmetaspace, heapnewgen,
|
||||
heapoldgen, heapsurvivor, nonheapmemory, nonheappermgen, nonheapmetaspace,
|
||||
nonheapnewgen, nonheapoldgen, nonheapsurvivor
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,9 +14,9 @@ public class SegmentTopService {
|
|||
private final Logger logger = LoggerFactory.getLogger(SegmentTopService.class);
|
||||
|
||||
public JsonObject loadTop(long startTime, long endTime, long minCost, long maxCost, String operationName,
|
||||
String globalTraceId, int limit, int from) {
|
||||
String globalTraceId, int limit, int from, ISegmentCostDAO.Sort sort) {
|
||||
logger.debug("startTime: {}, endTime: {}, minCost: {}, maxCost: {}, operationName: {}, globalTraceId: {}, limit: {}, from: {}", startTime, endTime, minCost, maxCost, operationName, globalTraceId, limit, from);
|
||||
ISegmentCostDAO segmentCostDAO = (ISegmentCostDAO)DAOContainer.INSTANCE.get(ISegmentCostDAO.class.getName());
|
||||
return segmentCostDAO.loadTop(startTime, endTime, minCost, maxCost, operationName, globalTraceId, limit, from);
|
||||
return segmentCostDAO.loadTop(startTime, endTime, minCost, maxCost, operationName, globalTraceId, limit, from, sort);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@ org.skywalking.apm.collector.ui.dao.ApplicationEsDAO
|
|||
org.skywalking.apm.collector.ui.dao.ServiceNameEsDAO
|
||||
org.skywalking.apm.collector.ui.dao.InstanceEsDAO
|
||||
org.skywalking.apm.collector.ui.dao.InstPerformanceEsDAO
|
||||
org.skywalking.apm.collector.ui.dao.CpuMetricEsDAO
|
||||
org.skywalking.apm.collector.ui.dao.GCMetricEsDAO
|
||||
org.skywalking.apm.collector.ui.dao.MemoryMetricEsDAO
|
||||
org.skywalking.apm.collector.ui.dao.MemoryPoolMetricEsDAO
|
||||
org.skywalking.apm.collector.ui.dao.ServiceEntryEsDAO
|
||||
org.skywalking.apm.collector.ui.dao.ServiceReferenceEsDAO
|
||||
Loading…
Reference in New Issue