You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2019/04/05 17:41:30 UTC

[incubator-skywalking] branch log updated: Add trace id in log query condition and result.

This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch log
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git


The following commit(s) were added to refs/heads/log by this push:
     new ac1ab86  Add trace id in log query condition and result.
     new 2d2c515  Merge branch 'log' of https://github.com/apache/incubator-skywalking into log
ac1ab86 is described below

commit ac1ab869f065bb652bd1eb085e4f907ff375589d
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Fri Apr 5 10:40:56 2019 -0700

    Add trace id in log query condition and result.
---
 .../oap/server/core/analysis/manual/log/AbstractLogRecord.java |  4 ++++
 .../core/analysis/manual/log/HTTPAccessLogDispatcher.java      |  1 +
 .../skywalking/oap/server/core/query/LogQueryService.java      |  9 +++++----
 .../apache/skywalking/oap/server/core/query/entity/Log.java    |  1 +
 .../apache/skywalking/oap/server/core/source/AbstractLog.java  |  1 +
 .../skywalking/oap/server/core/storage/query/ILogQueryDAO.java |  2 +-
 .../apache/skywalking/oap/query/graphql/resolver/LogQuery.java |  2 +-
 .../skywalking/oap/query/graphql/type/LogQueryCondition.java   |  1 +
 .../query-graphql-plugin/src/main/resources/query-protocol     |  2 +-
 .../storage/plugin/elasticsearch/query/LogQueryEsDAO.java      | 10 ++++++++--
 .../oap/server/storage/plugin/jdbc/h2/dao/H2LogQueryDAO.java   |  8 +++++++-
 11 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log/AbstractLogRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log/AbstractLogRecord.java
index 21c6d50..799aeef 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log/AbstractLogRecord.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log/AbstractLogRecord.java
@@ -35,6 +35,7 @@ public abstract class AbstractLogRecord extends Record {
     public static final String SERVICE_ID = "service_id";
     public static final String SERVICE_INSTANCE_ID = "service_instance_id";
     public static final String ENDPOINT_ID = "endpoint_id";
+    public static final String TRACE_ID = "trace_id";
     public static final String IS_ERROR = "is_error";
     public static final String STATUS_CODE = "status_code";
     public static final String CONTENT_TYPE = "content_type";
@@ -44,6 +45,7 @@ public abstract class AbstractLogRecord extends Record {
     @Setter @Getter @Column(columnName = SERVICE_ID) private int serviceId;
     @Setter @Getter @Column(columnName = SERVICE_INSTANCE_ID) private int serviceInstanceId;
     @Setter @Getter @Column(columnName = ENDPOINT_ID) private int endpointId;
+    @Setter @Getter @Column(columnName = TRACE_ID) private String traceId;
     @Setter @Getter @Column(columnName = IS_ERROR) private int isError;
     @Setter @Getter @Column(columnName = STATUS_CODE) private String statusCode;
     @Setter @Getter @Column(columnName = CONTENT_TYPE) private int contentType = ContentType.NONE.value();
@@ -60,6 +62,7 @@ public abstract class AbstractLogRecord extends Record {
             record.setServiceInstanceId(((Number)dbMap.get(SERVICE_INSTANCE_ID)).intValue());
             record.setEndpointId(((Number)dbMap.get(ENDPOINT_ID)).intValue());
             record.setIsError(((Number)dbMap.get(IS_ERROR)).intValue());
+            record.setTraceId((String)dbMap.get(TRACE_ID));
             record.setStatusCode((String)dbMap.get(STATUS_CODE));
             record.setContentType(((Number)dbMap.get(CONTENT_TYPE)).intValue());
             record.setContent((String)dbMap.get(CONTENT));
@@ -72,6 +75,7 @@ public abstract class AbstractLogRecord extends Record {
             map.put(SERVICE_ID, record.getServiceId());
             map.put(SERVICE_INSTANCE_ID, record.getServiceInstanceId());
             map.put(ENDPOINT_ID, record.getEndpointId());
+            map.put(TRACE_ID, record.getTraceId());
             map.put(IS_ERROR, record.getIsError());
             map.put(STATUS_CODE, record.getStatusCode());
             map.put(TIME_BUCKET, record.getTimeBucket());
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log/HTTPAccessLogDispatcher.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log/HTTPAccessLogDispatcher.java
index 59fca35..6a73a12 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log/HTTPAccessLogDispatcher.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log/HTTPAccessLogDispatcher.java
@@ -33,6 +33,7 @@ public class HTTPAccessLogDispatcher implements SourceDispatcher<HTTPAccessLog>
         record.setServiceId(source.getServiceId());
         record.setServiceInstanceId(source.getServiceInstanceId());
         record.setEndpointId(source.getEndpointId());
+        record.setTraceId(source.getTraceId());
         record.setIsError(source.getIsError());
         record.setStatusCode(source.getStatusCode());
         record.setContentType(source.getContentType().value());
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/LogQueryService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/LogQueryService.java
index 888b323..9a54a95 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/LogQueryService.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/LogQueryService.java
@@ -23,9 +23,9 @@ import org.apache.skywalking.oap.server.core.*;
 import org.apache.skywalking.oap.server.core.cache.*;
 import org.apache.skywalking.oap.server.core.query.entity.*;
 import org.apache.skywalking.oap.server.core.storage.StorageModule;
-import org.apache.skywalking.oap.server.core.storage.query.*;
-import org.apache.skywalking.oap.server.library.module.*;
+import org.apache.skywalking.oap.server.core.storage.query.ILogQueryDAO;
 import org.apache.skywalking.oap.server.library.module.Service;
+import org.apache.skywalking.oap.server.library.module.*;
 
 /**
  * @author wusheng
@@ -70,11 +70,12 @@ public class LogQueryService implements Service {
     }
 
     public Logs queryLogs(final String metricName, int serviceId, int serviceInstanceId, int endpointId,
-        LogState state, String stateCode, Pagination paging, final long startTB, final long endTB) throws IOException {
+        String traceId, LogState state, String stateCode, Pagination paging, final long startTB,
+        final long endTB) throws IOException {
         PaginationUtils.Page page = PaginationUtils.INSTANCE.exchange(paging);
 
         Logs logs = getLogQueryDAO().queryLogs(metricName, serviceId, serviceInstanceId, endpointId,
-            state, stateCode, paging, page.getFrom(), page.getLimit(), startTB, endTB);
+            traceId, state, stateCode, paging, page.getFrom(), page.getLimit(), startTB, endTB);
         logs.getLogs().forEach(log -> {
             if (log.getServiceId() != Const.NONE) {
                 log.setServiceName(getServiceInventoryCache().get(log.getServiceId()).getName());
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Log.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Log.java
index f0aad27..99cb303 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Log.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Log.java
@@ -32,6 +32,7 @@ public class Log {
     private int serviceInstanceId;
     private String endpointName;
     private int endpointId;
+    private String traceId;
     private String timestamp;
     private boolean isError;
     private String statusCode;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/AbstractLog.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/AbstractLog.java
index 7fb840b..a31efbf 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/AbstractLog.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/AbstractLog.java
@@ -30,6 +30,7 @@ public abstract class AbstractLog extends Source {
     private int serviceId;
     private int serviceInstanceId;
     private int endpointId;
+    private String traceId;
     private int isError;
     private String statusCode;
     private ContentType contentType = ContentType.NONE;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/ILogQueryDAO.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/ILogQueryDAO.java
index 31f39af..ca8ed6a 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/ILogQueryDAO.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/ILogQueryDAO.java
@@ -27,5 +27,5 @@ import org.apache.skywalking.oap.server.library.module.Service;
  */
 public interface ILogQueryDAO extends Service {
     Logs queryLogs(final String metricName, int serviceId, int serviceInstanceId, int endpointId,
-        LogState state, String stateCode, Pagination paging, int from, int limit, final long startTB, final long endTB) throws IOException;
+        String traceId, LogState state, String stateCode, Pagination paging, int from, int limit, final long startTB, final long endTB) throws IOException;
 }
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/LogQuery.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/LogQuery.java
index e373f06..cd48a3d 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/LogQuery.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/LogQuery.java
@@ -55,6 +55,6 @@ public class LogQuery implements GraphQLQueryResolver {
         }
 
         return getQueryService().queryLogs(condition.getMetricName(), condition.getServiceId(), condition.getServiceInstanceId(), condition.getEndpointId(),
-            condition.getState(), condition.getStateCode(), condition.getPaging(), startSecondTB, endSecondTB);
+            condition.getTraceId(), condition.getState(), condition.getStateCode(), condition.getPaging(), startSecondTB, endSecondTB);
     }
 }
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/LogQueryCondition.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/LogQueryCondition.java
index 0b00e75..3dc1130 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/LogQueryCondition.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/LogQueryCondition.java
@@ -31,6 +31,7 @@ public class LogQueryCondition {
     private int serviceId;
     private int serviceInstanceId;
     private int endpointId;
+    private String traceId;
     private LogState state;
     private String stateCode;
     private Duration queryDuration;
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 7aa4418..a005dd1 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 7aa441857b5e944c3ddc225336b50256ec649f1c
+Subproject commit a005dd1024c2b7e68fbcab5795824634cb81cde8
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/LogQueryEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/LogQueryEsDAO.java
index d234323..eef2887 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/LogQueryEsDAO.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/LogQueryEsDAO.java
@@ -24,6 +24,7 @@ import java.util.List;
 import org.apache.skywalking.oap.server.core.Const;
 import org.apache.skywalking.oap.server.core.analysis.manual.log.AbstractLogRecord;
 import org.apache.skywalking.oap.server.core.analysis.manual.segment.SegmentRecord;
+import org.apache.skywalking.oap.server.core.analysis.record.Record;
 import org.apache.skywalking.oap.server.core.query.entity.*;
 import org.apache.skywalking.oap.server.core.storage.query.ILogQueryDAO;
 import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient;
@@ -34,6 +35,8 @@ import org.elasticsearch.index.query.*;
 import org.elasticsearch.search.SearchHit;
 import org.elasticsearch.search.builder.SearchSourceBuilder;
 
+import static org.apache.skywalking.oap.server.core.analysis.manual.log.AbstractLogRecord.TRACE_ID;
+
 /**
  * @author wusheng
  */
@@ -44,7 +47,7 @@ public class LogQueryEsDAO extends EsDAO implements ILogQueryDAO {
 
     @Override
     public Logs queryLogs(String metricName, int serviceId, int serviceInstanceId, int endpointId,
-        LogState state, String stateCode, Pagination paging, int from, int limit, long startSecondTB,
+        String traceId, LogState state, String stateCode, Pagination paging, int from, int limit, long startSecondTB,
         long endSecondTB) throws IOException {
         SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource();
 
@@ -53,7 +56,7 @@ public class LogQueryEsDAO extends EsDAO implements ILogQueryDAO {
         List<QueryBuilder> mustQueryList = boolQueryBuilder.must();
 
         if (startSecondTB != 0 && endSecondTB != 0) {
-            mustQueryList.add(QueryBuilders.rangeQuery(SegmentRecord.TIME_BUCKET).gte(startSecondTB).lte(endSecondTB));
+            mustQueryList.add(QueryBuilders.rangeQuery(Record.TIME_BUCKET).gte(startSecondTB).lte(endSecondTB));
         }
 
         if (serviceId != Const.NONE) {
@@ -68,6 +71,9 @@ public class LogQueryEsDAO extends EsDAO implements ILogQueryDAO {
         if (!Strings.isNullOrEmpty(stateCode)) {
             boolQueryBuilder.must().add(QueryBuilders.termQuery(AbstractLogRecord.STATUS_CODE, stateCode));
         }
+        if (!Strings.isNullOrEmpty(traceId)) {
+            boolQueryBuilder.must().add(QueryBuilders.termQuery(TRACE_ID, traceId));
+        }
         if (LogState.ERROR.equals(state)) {
             boolQueryBuilder.must().add(QueryBuilders.termQuery(AbstractLogRecord.IS_ERROR, BooleanUtils.booleanToValue(true)));
         } else if (LogState.ERROR.equals(state)) {
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2LogQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2LogQueryDAO.java
index 72db42d..c108c84 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2LogQueryDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2LogQueryDAO.java
@@ -42,7 +42,8 @@ public class H2LogQueryDAO implements ILogQueryDAO {
     }
 
     @Override
-    public Logs queryLogs(String metricName, int serviceId, int serviceInstanceId, int endpointId, LogState state,
+    public Logs queryLogs(String metricName, int serviceId, int serviceInstanceId, int endpointId,
+        String traceId, LogState state,
         String stateCode, Pagination paging, int from, int limit, long startSecondTB,
         long endSecondTB) throws IOException {
         StringBuilder sql = new StringBuilder();
@@ -73,6 +74,10 @@ public class H2LogQueryDAO implements ILogQueryDAO {
             sql.append(" and ").append(AbstractLogRecord.STATUS_CODE).append(" = ?");
             parameters.add(stateCode);
         }
+        if (!Strings.isNullOrEmpty(traceId)) {
+            sql.append(" and ").append(TRACE_ID).append(" = ?");
+            parameters.add(traceId);
+        }
         if (LogState.ERROR.equals(state)) {
             sql.append(" and ").append(AbstractLogRecord.IS_ERROR).append(" = ?");
             parameters.add(BooleanUtils.booleanToValue(true));
@@ -98,6 +103,7 @@ public class H2LogQueryDAO implements ILogQueryDAO {
                     log.setServiceId(resultSet.getInt(SERVICE_ID));
                     log.setServiceInstanceId(resultSet.getInt(SERVICE_INSTANCE_ID));
                     log.setEndpointId(resultSet.getInt(ENDPOINT_ID));
+                    log.setTraceId(resultSet.getString(TRACE_ID));
                     log.setTimestamp(resultSet.getString(TIMESTAMP));
                     log.setStatusCode(resultSet.getString(STATUS_CODE));
                     log.setContentType(ContentType.instanceOf(resultSet.getInt(CONTENT_TYPE)));