skywalking-java/docs/en/protocols
吴晟 Wu Sheng 9149de2a6e Support multiple linear values and merging p50/75/90/95/99 into percentile (#4214)
* Support new percentile func with new alarm and exporter for this new func.

* Fix e2e and OAL script

* Fix wrong column.

* Fix percentile bug and oal engine bug.

* Update query protocol and add percentile test case

* Support new query

* Adopt GraphQL requirement

* Fix wrong type cast.

* Fix query in H2 and ES.

* Fix docs and comments.

* Fix an e2e compile issue

* Fix javadoc issue and e2e test issue.

* Change CPM to Apdex in TTL test.

* Fix OAL for TTL e2e

* Add metrics query for service percentile.

* Fix OAL engine bug. Method deserialize is not working when more than two field types are IntKeyLongValueHashMap

* Support multiple IntKeyLongValueHashMap fields in remote. About serialize/deserialize methods.

* Fix graphql statement error in e2e.

* Fix serialize not working and add generated serialize/deserialize of percentile into test cases.

* Fix test case format

* Remove generated code test.

* Fix failed e2e test

* Use avg resp time to apdex in the TTL test.

* ADD multiple linear metrics check for endpoint in e2e cluster.

* Support `-` to represent no threshold and doc of alarm about this.

* Move break to right place.

* Fix wrong break(s)

* Fix break and add a test case for multiple values alarm.

* Fix format.

* Add more doc for this new feature and GraphQL query protocol.

Co-authored-by: Jared Tan <jian.tan@daocloud.io>
Co-authored-by: kezhenxu94 <kezhenxu94@163.com>
2020-01-12 22:10:50 +08:00
..
JVM-Protocol.md Update all "incubator-skywalking" to "skywalking" ,"incubator-servicecomb-java-chassis" to "servicecomb-java-chassis" correctly, and ".gitmodules" will update at #2531 (#2548) 2019-04-28 15:47:14 +08:00
README.md Support multiple linear values and merging p50/75/90/95/99 into percentile (#4214) 2020-01-12 22:10:50 +08:00
Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md Finish the new document structure. 2018-07-08 21:04:50 -07:00
Skywalking-Cross-Process-Propagation-Headers-Protocol-v2.md Remove the local/exit span register mechanism in Java agent scenario (#4059) 2019-12-15 19:15:47 +08:00
Trace-Data-Protocol-v1.md Update all "incubator-skywalking" to "skywalking" ,"incubator-servicecomb-java-chassis" to "servicecomb-java-chassis" correctly, and ".gitmodules" will update at #2531 (#2548) 2019-04-28 15:47:14 +08:00
Trace-Data-Protocol-v2.md Rename metric and indicator to metrics. (#2643) 2019-05-10 08:05:37 +08:00
query-protocol.md Support multiple linear values and merging p50/75/90/95/99 into percentile (#4214) 2020-01-12 22:10:50 +08:00

README.md

Protocols

There are two types of protocols list here.

  • Probe Protocol. Include the descriptions and definitions about how agent send collected metrics data and traces, also the formats of each entities.

  • Query Protocol. The backend provide query capability to SkyWalking own UI and others. These queries are based on GraphQL.

Probe Protocols

They also related to the probe group, for understand that, look Concepts and Designs document. These groups are Language based native agent protocol, Service Mesh protocol and 3rd-party instrument protocol.

Register Protocol

Include service, service instance, network address and endpoint meta data register. Purposes of register are

  1. For service, network address and endpoint, register returns the unique ID of register object, usually an integer. Probe can use that to represent the literal String for data compression. Further, some protocols accept IDs only.
  2. For service instance, register returns a new unique ID for every new instance. Every service instance register must contain the service ID.

Language based native agent protocol

There is two types of protocols to make language agents work in distributed environments.

  1. Cross Process Propagation Headers Protocol is in wire data format, agent/SDK usually uses HTTP/MQ/HTTP2 headers to carry the data with rpc request. The remote agent will receive this in the request handler, and bind the context with this specific request.
  2. Trace Data Protocol is out of wire data, agent/SDK uses this to send traces and metrics to skywalking or other compatible backend.

Header protocol have two formats for compatible. Using v2 in default.

Since SkyWalking v6.0.0-beta, SkyWalking agent and backend are using Trace Data Protocol v2, and v1 is still supported in backend.

Service Mesh probe protocol

The probe in sidecar or proxy could use this protocol to send data to backendEnd. This service provided by gRPC, requires the following key info:

  1. Service Name or ID at both sides.
  2. Service Instance Name or ID at both sides.
  3. Endpoint. URI in HTTP, service method full signature in gRPC.
  4. Latency. In milliseconds.
  5. Response code in HTTP
  6. Status. Success or fail.
  7. Protocol. HTTP, gRPC
  8. DetectPoint. In Service Mesh sidecar, client or server. In normal L7 proxy, value is proxy.

3rd-party instrument protocol

3rd-party instrument protocols are not defined by SkyWalking. They are just protocols/formats, which SkyWalking is compatible and could receive from their existed libraries. SkyWalking starts with supporting Zipkin v1, v2 data formats.

Backend is based on modularization principle, so very easy to extend a new receiver to support new protocol/format.

Query Protocol

Query protocol follows GraphQL grammar, provides data query capabilities, which depends on your analysis metrics. Read query protocol doc for more details.