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 2022/10/17 13:09:35 UTC
[skywalking-query-protocol] 01/01: Define SpanAttachedEvent query protocol
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch attached-event
in repository https://gitbox.apache.org/repos/asf/skywalking-query-protocol.git
commit 6b170d0d8d302825d11f561bb8715b1bacca40e4
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Mon Oct 17 21:09:28 2022 +0800
Define SpanAttachedEvent query protocol
---
common.graphqls | 6 ++++++
trace.graphqls | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 62 insertions(+)
diff --git a/common.graphqls b/common.graphqls
index 0fd5a03..4b48d04 100644
--- a/common.graphqls
+++ b/common.graphqls
@@ -36,6 +36,12 @@ type KeyValue {
value: String
}
+# String key, Long/Int value pair.
+type KeyNumericValue {
+ key: String!
+ value: Long!
+}
+
# The Duration defines the start and end time for each query operation.
# Fields: `start` and `end`
# represents the time span. And each of them matches the step.
diff --git a/trace.graphqls b/trace.graphqls
index 5edee31..fb25a26 100644
--- a/trace.graphqls
+++ b/trace.graphqls
@@ -78,19 +78,28 @@ type Span {
refs: [Ref!]!
serviceCode: String!
serviceInstanceName: ID!
+ # The start timestamp of the span in millisecond
startTime: Long!
+ # The end timestamp of the span in millisecond
endTime: Long!
endpointName: String
# There are three span types: Local, Entry and Exit
type: String!
# Peer network id, e.g. host+port, ip+port
peer: String
+ # The name of the tech stack component used for the execution represented by the span.
component: String
+ # The error status is true when the execution returns error code or throws an exception(determined by the language).
isError: Boolean
# There are 5 layers: Unknown, Database, RPCFramework, Http, MQ and Cache
layer: String
+ # key-value(string) pairs to specify unique attributes of ths span
tags: [KeyValue!]!
+ # The events happen of the span, especially in-process.
logs: [LogEntity!]!
+ # The attached events happen in the span's context but out-of-process.
+ # Check SpanAttachedEvent definition for more details.
+ attachedEvents: [SpanAttachedEvent!]!
}
# Ref represents the link between the segment and its parents.
@@ -111,13 +120,60 @@ enum RefType {
}
type LogEntity {
+ # The timestamp of the log in millisecond
time: Long!
data: [KeyValue!]
}
+# An instantaneous point on the time-line.
+# An instant represents a data point accurate to the nanosecond.
+# It is constituted by a long representing epoch-seconds and an int representing nanosecond-of-second,
+# which will always be between 0 and 999,999,999
+type Instant {
+ # The number of seconds from the epoch of 1970-01-01T00:00:00Z.
+ seconds: Long!
+ # The number of nanoseconds, later along the time-line, from the seconds field.
+ # This is always positive, and never exceeds 999,999,999.
+ nanos: Int!
+}
+
+# SpanAttachedEvent represents an attached event for a traced RPC.
+# When an RPC is being traced by the in-process language agent, a span would be reported by the client-side agent.
+# And the rover would be aware of this RPC due to the existing tracing header.
+# Then, the rover agent collects extra information from the OS level to provide assistance information to diagnose network performance.
+#
+# Notice, THIS IS ALSO AVAILABLE FOR ZIPKIN SPAN.
+# -----------------------------------------------
+# In SkyWalking, ZipkinQueryHandler provides a fully support for all Zipkin span query.
+# SpanAttachedEvent query is supported through a new URI: /api/v2/trace/{traceId}/ext/spanAttachedEvents
+# The response is in JSON as usually, includes all fields of SpanAttachedEvent, and `spanId` as an additional field.
+type SpanAttachedEvent {
+ # The nanosecond timestamp of the event's start time.
+ # Notice, most unit of timestamp in SkyWalking is milliseconds, but NANO-SECOND is required here.
+ # Because the attached event happens in the OS syscall level, most of them are executed rapidly.
+ startTime: Instant!
+ # The official event name.
+ # For example, the event name is a method signature from syscall stack.
+ event: String!
+ # [Optional] The nanosecond timestamp of the event's end time.
+ endTime: Instant!
+ # The tags for this event includes some extra OS level information,
+ # such as
+ # 1. net_device used for this exit span.
+ # 2. network L7 protocol
+ tags: [KeyValue]!
+ # The summary of statistics during this event.
+ # Each statistic provides a name(metric name) to represent the name, and an int64/long as the value.
+ summary: [KeyNumericValue!]!
+}
+
extend type Query {
+ # Search segment list with given conditions
queryBasicTraces(condition: TraceQueryCondition): TraceBrief
+ # Read the specific trace ID with given trace ID
queryTrace(traceId: ID!): Trace
+ # Read the list of searchable keys
queryTraceTagAutocompleteKeys(duration: Duration!):[String!]
+ # Search the available value options of the given key.
queryTraceTagAutocompleteValues(tagKey: String! , duration: Duration!):[String!]
}