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)));