From 4cae884fc076c00b77258a8293742e4dd66c20e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=99=9F=20Wu=20Sheng?= Date: Fri, 28 Sep 2018 19:22:15 +0800 Subject: [PATCH] Add endpoint id to trace query. (#1722) --- .../core/analysis/manual/segment/SegmentDispatcher.java | 1 + .../server/core/analysis/manual/segment/SegmentRecord.java | 2 ++ .../skywalking/oap/server/core/query/TraceQueryService.java | 5 +++-- .../apache/skywalking/oap/server/core/source/Segment.java | 1 + .../oap/server/core/storage/query/ITraceQueryDAO.java | 2 +- .../skywalking/oap/query/graphql/resolver/TraceQuery.java | 5 +++-- .../oap/query/graphql/type/TraceQueryCondition.java | 3 ++- .../query-graphql-plugin/src/main/resources/query-protocol | 2 +- .../parser/listener/segment/SegmentSpanListener.java | 2 ++ .../storage/plugin/elasticsearch/query/TraceQueryEsDAO.java | 5 ++++- 10 files changed, 20 insertions(+), 8 deletions(-) diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/segment/SegmentDispatcher.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/segment/SegmentDispatcher.java index 9a4c51f23..322abf997 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/segment/SegmentDispatcher.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/segment/SegmentDispatcher.java @@ -33,6 +33,7 @@ public class SegmentDispatcher implements SourceDispatcher { segment.setTraceId(source.getTraceId()); segment.setServiceId(source.getServiceId()); segment.setEndpointName(source.getEndpointName()); + segment.setEndpointId(source.getEndpointId()); segment.setStartTime(source.getStartTime()); segment.setEndTime(source.getEndTime()); segment.setLatency(source.getLatency()); diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/segment/SegmentRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/segment/SegmentRecord.java index ba5fc8821..1249ac8e0 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/segment/SegmentRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/segment/SegmentRecord.java @@ -40,6 +40,7 @@ public class SegmentRecord extends Record { public static final String TRACE_ID = "trace_id"; public static final String SERVICE_ID = "service_id"; public static final String ENDPOINT_NAME = "endpoint_name"; + public static final String ENDPOINT_ID = "endpoint_id"; public static final String START_TIME = "start_time"; public static final String END_TIME = "end_time"; public static final String LATENCY = "latency"; @@ -50,6 +51,7 @@ public class SegmentRecord extends Record { @Setter @Getter @Column(columnName = TRACE_ID) @IDColumn private String traceId; @Setter @Getter @Column(columnName = SERVICE_ID) @IDColumn private int serviceId; @Setter @Getter @Column(columnName = ENDPOINT_NAME) @IDColumn private String endpointName; + @Setter @Getter @Column(columnName = ENDPOINT_ID) @IDColumn private int endpointId; @Setter @Getter @Column(columnName = START_TIME) @IDColumn private long startTime; @Setter @Getter @Column(columnName = END_TIME) @IDColumn private long endTime; @Setter @Getter @Column(columnName = LATENCY) @IDColumn private int latency; diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TraceQueryService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TraceQueryService.java index eece16514..12d21d5ed 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TraceQueryService.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TraceQueryService.java @@ -87,12 +87,13 @@ public class TraceQueryService implements Service { return componentLibraryCatalogService; } - public TraceBrief queryBasicTraces(final int serviceId, final String traceId, final String endpointName, + public TraceBrief queryBasicTraces(final int serviceId, final int endpointId, final String traceId, final String endpointName, final int minTraceDuration, int maxTraceDuration, final TraceState traceState, final QueryOrder queryOrder, final Pagination paging, final long startTB, final long endTB) throws IOException { PaginationUtils.Page page = PaginationUtils.INSTANCE.exchange(paging); - return getTraceQueryDAO().queryBasicTraces(startTB, endTB, minTraceDuration, maxTraceDuration, endpointName, serviceId, traceId, page.getLimit(), page.getFrom(), traceState, queryOrder); + return getTraceQueryDAO().queryBasicTraces(startTB, endTB, minTraceDuration, maxTraceDuration, endpointName, + serviceId, endpointId, traceId, page.getLimit(), page.getFrom(), traceState, queryOrder); } public Trace queryTrace(final String traceId) throws IOException { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Segment.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Segment.java index b66917176..110f56407 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Segment.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Segment.java @@ -39,6 +39,7 @@ public class Segment extends Source { @Setter @Getter private String traceId; @Setter @Getter private int serviceId; @Setter @Getter private String endpointName; + @Setter @Getter private int endpointId; @Setter @Getter private long startTime; @Setter @Getter private long endTime; @Setter @Getter private int latency; diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/ITraceQueryDAO.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/ITraceQueryDAO.java index cfe85291e..2fb4d8787 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/ITraceQueryDAO.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/ITraceQueryDAO.java @@ -30,7 +30,7 @@ import org.apache.skywalking.oap.server.library.module.Service; public interface ITraceQueryDAO extends Service { TraceBrief queryBasicTraces(long startSecondTB, long endSecondTB, long minDuration, - long maxDuration, String endpointName, int serviceId, String traceId, int limit, int from, + long maxDuration, String endpointName, int serviceId, int endpointId, String traceId, int limit, int from, TraceState traceState, QueryOrder queryOrder) throws IOException; List queryByTraceId(String traceId) throws IOException; diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/TraceQuery.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/TraceQuery.java index 3a7920b8c..b2d662ad2 100644 --- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/TraceQuery.java +++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/TraceQuery.java @@ -62,12 +62,13 @@ public class TraceQuery implements GraphQLQueryResolver { int minDuration = condition.getMinTraceDuration(); int maxDuration = condition.getMaxTraceDuration(); String endpointName = condition.getEndpointName(); - int serviceId = condition.getServiceId(); + int serviceId = StringUtils.isEmpty(condition.getServiceId()) ? 0 : Integer.parseInt(condition.getServiceId()); + int endpointId = StringUtils.isEmpty(condition.getEndpointId()) ? 0 : Integer.parseInt(condition.getEndpointId()); TraceState traceState = condition.getTraceState(); QueryOrder queryOrder = condition.getQueryOrder(); Pagination pagination = condition.getPaging(); - return getQueryService().queryBasicTraces(serviceId, traceId, endpointName, minDuration, maxDuration, traceState, queryOrder, pagination, startSecondTB, endSecondTB); + return getQueryService().queryBasicTraces(serviceId, endpointId, traceId, endpointName, minDuration, maxDuration, traceState, queryOrder, pagination, startSecondTB, endSecondTB); } public Trace queryTrace(final String traceId) throws IOException { diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/TraceQueryCondition.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/TraceQueryCondition.java index a26de80d9..6db4e7992 100644 --- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/TraceQueryCondition.java +++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/TraceQueryCondition.java @@ -24,9 +24,10 @@ import org.apache.skywalking.oap.server.core.query.entity.*; @Getter @Setter public class TraceQueryCondition { - private int serviceId; + private String serviceId; private String traceId; private String endpointName; + private String endpointId; private Duration queryDuration; private int minTraceDuration; private int maxTraceDuration; diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol b/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol index d71d3f183..3a83be79a 160000 --- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol +++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol @@ -1 +1 @@ -Subproject commit d71d3f183a1e498aafad8c59c8d3373408140ac9 +Subproject commit 3a83be79a9c23aad6576ed2a4a04b82de6d7a829 diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/segment/SegmentSpanListener.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/segment/SegmentSpanListener.java index d3dceb8d7..bb5f06a6f 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/segment/SegmentSpanListener.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/segment/SegmentSpanListener.java @@ -89,8 +89,10 @@ public class SegmentSpanListener implements FirstSpanListener, EntrySpanListener } if (entryEndpointId == 0) { + segment.setEndpointId(firstEndpointId); segment.setEndpointName(serviceNameCacheService.get(firstEndpointId).getName()); } else { + segment.setEndpointId(entryEndpointId); segment.setEndpointName(serviceNameCacheService.get(entryEndpointId).getName()); } diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TraceQueryEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TraceQueryEsDAO.java index ab34a8ced..e8682f9c1 100644 --- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TraceQueryEsDAO.java +++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/TraceQueryEsDAO.java @@ -43,7 +43,7 @@ public class TraceQueryEsDAO extends EsDAO implements ITraceQueryDAO { @Override public TraceBrief queryBasicTraces(long startSecondTB, long endSecondTB, long minDuration, - long maxDuration, String endpointName, int serviceId, String traceId, int limit, int from, + long maxDuration, String endpointName, int serviceId, int endpointId, String traceId, int limit, int from, TraceState traceState, QueryOrder queryOrder) throws IOException { SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource(); @@ -71,6 +71,9 @@ public class TraceQueryEsDAO extends EsDAO implements ITraceQueryDAO { if (serviceId != 0) { boolQueryBuilder.must().add(QueryBuilders.termQuery(SegmentRecord.SERVICE_ID, serviceId)); } + if (endpointId != 0) { + boolQueryBuilder.must().add(QueryBuilders.termQuery(SegmentRecord.ENDPOINT_ID, endpointId)); + } if (StringUtils.isNotEmpty(traceId)) { boolQueryBuilder.must().add(QueryBuilders.termQuery(SegmentRecord.TRACE_ID, traceId)); }