There are two different types of protocols.
Probe Protocol. It includes descriptions and definitions on how agents send collected metrics data and traces, as well as the format of each entity.
Query Protocol. The backend enables the query function in SkyWalking's own UI and other UIs. These queries are based on GraphQL.
They also related to the probe group. For more information, see Concepts and Designs. These groups are language-based native agent protocol, service mesh protocol and 3rd-party instrument protocol.
There are two types of protocols that help language agents work in distributed environments.
Cross Process Propagation Headers Protocol v3 has been the new protocol for in-wire context propagation since the version 8.0.0 release.
Cross Process Correlation Headers Protocol v1 is a new in-wire context propagation protocol which is additional and optional. Please read SkyWalking language agents documentation to see whether it is supported. This protocol defines the data format of transporting custom data with Cross Process Propagation Headers Protocol
. It has been supported by the SkyWalking javaagent since 8.0.0,
SkyWalking Trace Data Protocol v3 defines the communication method and format between the agent and backend.
SkyWalking Log Data Protocol defines the communication method and format between the agent and backend.
The browser probe, such as skywalking-client-js, could use this protocol to send data to the backend. This service is provided by gRPC.
SkyWalking Browser Protocol defines the communication method and format between skywalking-client-js
and backend.
The probe in sidecar or proxy could use this protocol to send data to the backend. This service provided by gRPC requires the following key information:
client
or server
. In normal L7 proxy, value is proxy
.The protocol is used to report events to the backend. The doc introduces the definition of an event, and the protocol repository defines gRPC services and message formats of events.
Report JSON
format events via HTTP API, the endpoint is http://<oap-address>:12800/v3/events
. JSON event record example:
[ { "uuid": "f498b3c0-8bca-438d-a5b0-3701826ae21c", "source": { "service": "SERVICE-A", "instance": "INSTANCE-1" }, "name": "Reboot", "type": "Normal", "message": "App reboot.", "parameters": {}, "startTime": 1628044330000, "endTime": 1628044331000 } ]
3rd-party instrument protocols are not defined by SkyWalking. They are just protocols/formats with which SkyWalking is compatible, and SkyWalking could receive them from their existing libraries. SkyWalking starts with supporting Zipkin v1, v2 data formats.
The backend has a modular design, so it is very easy to extend a new receiver to support a new protocol/format.
The query protocol follows GraphQL grammar, and provides data query capabilities, which depends on your analysis metrics. Read query protocol doc for more details.