如何指定 OpenTelemetry 透传协议格式
OpenTelemetry 支持 tracecontext, baggage, b3, b3multi, jaeger 等多种透传格式,不同透传格式会在 HTTP 请求中设置不同格式的 Header。下面为您介绍如何设置 OpenTelemetry 的透传格式。
1. OpenTelemetry 支持的透传格式
默认情况下,OpenTelemetry 使用的是 tracecontext 和 baggage。
透传格式名称 | 格式 | 备注 |
---|---|---|
tracecontext | traceparent : {version}-{trace-id}-{parent-id}-{trace-flags} | https://www.w3.org/TR/trace-context/ |
baggage | baggage : key1=value;key2=value,key3=value | https://www.w3.org/TR/baggage/ |
b3 | b3: {TraceId}-{SpanId}-{SamplingState}-{ParentSpanId} | 无 |
b3multi | X-B3-TraceId: {TraceId} X-B3-SpanId: {SpanId} X-B3-ParentSpanId: {ParentSpanId} X-B3-Sampled: {SamplingState} | 无 |
jaeger | uber-trace-id : {trace-id}:{span-id}:{parent-span-id}:{flags} | https://www.jaegertracing.io/docs/1.21/client-libraries/#propagation-format |
xray | X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Sampled=1 X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Sampled=1;Lineage=a87bd80c:1 | 68fd508a:5 |
ottrace | https://github.com/opentracing/specification/blob/master/rfc/trace_identifiers.md | |
none | 无 | 未设置透传协议 |
2. 设置透传格式
在启动应用时,有两种方式可以设置 OpenTelemetry TraceId 的透传格式:
- 设置 OTEL_PROPAGATORS 环境变量,再运行程序。
- 支持同时指定多种格式,用逗号隔开,例如:
- 对于Java语言,也可以使用
-Dotel.propagators
VM参数。
- 支持同时指定多种格式,用逗号隔开,例如: