OpenTelemetry

OpenTelemetry 是一个开源项目,旨在通过统一的工具集、API和SDK,简化在多样化的技术栈中集成可观测性功能,确保一致地收集、处理及导出应用性能数据。

如何指定 OpenTelemetry 透传协议格式


OpenTelemetry 支持 tracecontext, baggage, b3, b3multi, jaeger 等多种透传格式,不同透传格式会在 HTTP 请求中设置不同格式的 Header。下面为您介绍如何设置 OpenTelemetry 的透传格式。

1. OpenTelemetry 支持的透传格式

默认情况下,OpenTelemetry 使用的是 tracecontext 和 baggage。

透传格式名称格式备注
tracecontexttraceparent : {version}-{trace-id}-{parent-id}-{trace-flags}https://www.w3.org/TR/trace-context/
baggagebaggage : key1=value;key2=value,key3=valuehttps://www.w3.org/TR/baggage/
b3b3: {TraceId}-{SpanId}-{SamplingState}-{ParentSpanId}
b3multiX-B3-TraceId: {TraceId}
X-B3-SpanId: {SpanId}
X-B3-ParentSpanId: {ParentSpanId}
X-B3-Sampled: {SamplingState}
jaegeruber-trace-id : {trace-id}:{span-id}:{parent-span-id}:{flags}https://www.jaegertracing.io/docs/1.21/client-libraries/#propagation-format
xrayX-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Sampled=1
X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Sampled=1;Lineage=a87bd80c:1
68fd508a:5
ottracehttps://github.com/opentracing/specification/blob/master/rfc/trace_identifiers.md
none未设置透传协议

2. 设置透传格式

在启动应用时,有两种方式可以设置 OpenTelemetry TraceId 的透传格式:

  1. 设置 OTEL_PROPAGATORS 环境变量,再运行程序。
  • 支持同时指定多种格式,用逗号隔开,例如:
export OTEL_PROPAGATORS="tracecontext,baggage,b3"
  1. 对于Java语言,也可以使用-Dotel.propagators VM参数。
  • 支持同时指定多种格式,用逗号隔开,例如:
-javaagent:/path/to/opentelemetry-javaagent.jar
-Dotel.resource.attributes=service.name=${service-name}
-Dotel.exporter.otlp.endpoint=${endpoint}
-Dotel.propagators=tracecontext,baggage,b3

observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32