This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new 8d49b88259 Update docs for new data-collecting and query protocols
(#9809)
8d49b88259 is described below
commit 8d49b88259bd3a0e28f7aff777706d9e4cc2ecc6
Author: 吴晟 Wu Sheng <[email protected]>
AuthorDate: Wed Oct 19 14:52:56 2022 +0800
Update docs for new data-collecting and query protocols (#9809)
---
docs/en/changes/changes.md | 2 +
docs/en/concepts-and-designs/manual-sdk.md | 1 +
docs/en/protocols/README.md | 2 +-
docs/en/protocols/Trace-Data-Protocol-v3.md | 76 +++++++++++++++++++++++++++--
docs/en/protocols/query-protocol.md | 13 +++++
5 files changed, 88 insertions(+), 6 deletions(-)
diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index 3cdd10eab8..1fc02be16f 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -98,5 +98,7 @@
* Add re-post for blog `Scaling with Apache SkyWalking` in the academy list.
* Add re-post for blog `Diagnose Service Mesh Network Performance with eBPF`
in the academy list.
* Add **Security Notice** doc.
+* Add new docs for `Report Span Attached Events` data collecting protocol.
+* Add new docs for `Record` query protocol
All issues and pull requests are
[here](https://github.com/apache/skywalking/milestone/149?closed=1)
diff --git a/docs/en/concepts-and-designs/manual-sdk.md
b/docs/en/concepts-and-designs/manual-sdk.md
index c0247505b3..0d231db704 100644
--- a/docs/en/concepts-and-designs/manual-sdk.md
+++ b/docs/en/concepts-and-designs/manual-sdk.md
@@ -1,5 +1,6 @@
# Manual instrument SDK
Our incredible community has contributed to the manual instrument SDK.
+- [Rust](https://github.com/apache/skywalking-rust). Rust SDK follows the
SkyWalking format.
- [Go2Sky](https://github.com/SkyAPM/go2sky). Go SDK follows the SkyWalking
format.
- [C++](https://github.com/SkyAPM/cpp2sky). C++ SDK follows the SkyWalking
format.
diff --git a/docs/en/protocols/README.md b/docs/en/protocols/README.md
index 3d5c1aaac3..512efa7978 100644
--- a/docs/en/protocols/README.md
+++ b/docs/en/protocols/README.md
@@ -13,7 +13,7 @@ Please read SkyWalking language agents documentation to see
whether it is suppor
- **Trace Data Protocol** is an out-of-wire data format. Agent/SDK uses this
to send traces to SkyWalking OAP server.
-[SkyWalking Trace Data Protocol v3](Trace-Data-Protocol-v3.md) defines the
communication method and format between the agent and backend.
+[SkyWalking Trace Data Protocol v3.1](Trace-Data-Protocol-v3.md) defines the
communication method and format between the agent and backend.
### Logging
- **Log Data Protocol** is an out-of-wire data format. Agent/SDK and collector
use this to send logs into SkyWalking OAP server.
diff --git a/docs/en/protocols/Trace-Data-Protocol-v3.md
b/docs/en/protocols/Trace-Data-Protocol-v3.md
index a039592c85..5d2fddc7e8 100644
--- a/docs/en/protocols/Trace-Data-Protocol-v3.md
+++ b/docs/en/protocols/Trace-Data-Protocol-v3.md
@@ -1,17 +1,16 @@
-# Trace Data Protocol v3
+# Trace Data Protocol v3.1
Trace Data Protocol describes the data format between SkyWalking agent/sniffer
and backend.
-## Overview
Trace data protocol is defined and provided in [gRPC
format](https://github.com/apache/skywalking-data-collect-protocol), and
implemented in [HTTP 1.1](HTTP-API-Protocol.md).
-### Report service instance status
+## Report service instance status
1. Service Instance Properties
Service instance contains more information than just a name. In order for the
agent to report service instance status, use
`ManagementService#reportInstanceProperties` service to provide a
string-key/string-value pair list as the parameter. The `language` of target
instance must be provided as the minimum requirement.
2. Service Ping
Service instance should keep alive with the backend. The agent should set a
scheduler using `ManagementService#keepAlive` service every minute.
-### Send trace and metrics
+## Send trace and JVM metrics
After you have the service ID and service instance ID ready, you could send
traces and metrics. Now we
have
1. `TraceSegmentReportService#collect` for the SkyWalking native trace format
@@ -40,7 +39,7 @@ See [Cross Process Propagation Headers Protocol
v3](Skywalking-Cross-Process-Pro
4. `Span#skipAnalysis` may be TRUE, if this span doesn't require backend
analysis.
-### Protocol Definition
+## Trace Report Protocol
```protobuf
// The segment is a collection of spans. It includes all collected spans in a
simple one request context, such as a HTTP request process.
//
@@ -220,3 +219,70 @@ message SegmentCollection {
repeated SegmentObject segments = 1;
}
```
+
+## Report Span Attached Events
+Besides in-process agents, there are other out-of-process agent, such as ebpf
agent, could report additional information
+as attached events for the relative spans.
+
+`SpanAttachedEventReportService#collect` for attached event reporting.
+
+```protobuf
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// ebpf agent(SkyWalking Rover) collects extra information from the OS(Linux
Only) level to attach on the traced span.
+// Since v3.1
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+service SpanAttachedEventReportService {
+ // Collect SpanAttachedEvent to the OAP server in the streaming mode.
+ rpc collect (stream SpanAttachedEvent) returns (Commands) {
+ }
+}
+
+// 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.
+message 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.
+ Instant startTime = 1;
+ // The official event name.
+ // For example, the event name is a method signature from syscall stack.
+ string event = 2;
+ // [Optional] The nanosecond timestamp of the event's end time.
+ Instant endTime = 3;
+ // 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
+ repeated KeyStringValuePair tags = 4;
+ // 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.
+ repeated KeyIntValuePair summary = 5;
+ // Refer to a trace context decoded from `sw8` header through network,
such as HTTP header, MQ metadata
+ //
https://skywalking.apache.org/docs/main/next/en/protocols/skywalking-cross-process-propagation-headers-protocol-v3/#standard-header-item
+ SpanReference traceContext = 6;
+
+ message SpanReference {
+ SpanReferenceType type = 1;
+ // [Optional] A string id represents the whole trace.
+ string traceId = 2;
+ // A unique id represents this segment. Other segments could use this
id to reference as a child segment.
+ // [Optional] when this span reference
+ string traceSegmentId = 3;
+ // If type == SKYWALKING
+ // The number id of the span. Should be unique in the whole segment.
+ // Starting at 0
+ //
+ // If type == ZIPKIN
+ // The type of span ID is string.
+ string spanId = 4;
+ }
+
+ enum SpanReferenceType {
+ SKYWALKING = 0;
+ ZIPKIN = 1;
+ }
+}
+```
\ No newline at end of file
diff --git a/docs/en/protocols/query-protocol.md
b/docs/en/protocols/query-protocol.md
index ede220045a..739f5fe443 100644
--- a/docs/en/protocols/query-protocol.md
+++ b/docs/en/protocols/query-protocol.md
@@ -80,6 +80,7 @@ extend type Query {
readLabeledMetricsValues(condition: MetricsCondition!, labels: [String!]!,
duration: Duration!): [MetricsValues!]!
# Heatmap is bucket based value statistic result.
readHeatMap(condition: MetricsCondition!, duration: Duration!): HeatMap
+ # Deprecated since 9.3.0, replaced by readRecords defined in
record.graphqls
# Read the sampled records
# TopNCondition#scope is not required.
readSampledRecords(condition: TopNCondition!, duration: Duration!):
[SelectedRecord!]!
@@ -127,6 +128,18 @@ extend type Query {
}
```
+### Record
+Record is a general and abstract type for collected raw data.
+In the observability, traces and logs have specific and well-defined meanings,
meanwhile, the general records represent other
+collected records. Such as sampled slow SQL statement, HTTP request raw
data(request/response header/body)
+
+```graphql
+extend type Query {
+ # Query collected records with given metric name and parent entity
conditions, and return in the requested order.
+ readRecords(condition: RecordCondition!, duration: Duration!): [Record!]!
+}
+```
+
### Logs
```graphql
extend type Query {