SDK 变量
OpenTelemetry SDK 的行为通过环境变量进行控制,这些变量用于配置 telemetry 收集、处理和导出的各个方面。Instrumentation 自定义资源允许你设置这些变量,以自定义已进行 instrumented 的应用如何生成和发送 telemetry 数据。
目录
常用 SDK 环境变量Service 标识Exporter 配置OTLP Endpoint 配置Protocol 配置在 Instrumentation CR 中配置 SDK 变量采样配置传播配置Batch 处理配置日志配置变量优先级常用 SDK 环境变量
以下环境变量通常用于配置 OpenTelemetry SDK 的行为:
Service 标识
OTEL_SERVICE_NAME- 定义 service 的逻辑名称OTEL_RESOURCE_ATTRIBUTES- 以键值对形式指定附加的 resource attributes
Exporter 配置
OTEL_TRACES_EXPORTER- 配置 trace exporter(例如otlp、jaeger、zipkin)OTEL_METRICS_EXPORTER- 配置 metrics exporter(例如otlp、prometheus)OTEL_LOGS_EXPORTER- 配置日志 exporter(例如otlp)
OTLP Endpoint 配置
OTEL_EXPORTER_OTLP_ENDPOINT- 为所有 signal 设置 OTLP endpointOTEL_EXPORTER_OTLP_TRACES_ENDPOINT- 专门为 traces 设置 OTLP endpointOTEL_EXPORTER_OTLP_METRICS_ENDPOINT- 专门为 metrics 设置 OTLP endpointOTEL_EXPORTER_OTLP_LOGS_ENDPOINT- 专门为日志设置 OTLP endpoint
Protocol 配置
OTEL_EXPORTER_OTLP_PROTOCOL- 指定 OTLP protocol(grpc或http/protobuf)OTEL_EXPORTER_OTLP_TRACES_PROTOCOL- traces 的 protocolOTEL_EXPORTER_OTLP_METRICS_PROTOCOL- metrics 的 protocol
在 Instrumentation CR 中配置 SDK 变量
你可以在 Instrumentation 自定义资源中设置 SDK 环境变量:
这些变量会自动注入到已进行 instrumented 的应用容器中。
采样配置
使用以下变量控制 trace 采样行为:
OTEL_TRACES_SAMPLER- 采样策略(例如always_on、always_off、traceidratio、parentbased_always_on)OTEL_TRACES_SAMPLER_ARG- 采样器参数(例如traceidratio的采样比例)
配置示例:
此配置会采样 10% 的 trace,同时遵循父 span 的采样决策。
传播配置
配置上下文传播格式:
OTEL_PROPAGATORS- 以逗号分隔的 propagator 列表(例如tracecontext,baggage,b3)
示例:
Batch 处理配置
控制 telemetry 数据在导出前如何进行 batch 处理:
OTEL_BSP_SCHEDULE_DELAY- batch 导出之间的延迟间隔(毫秒)OTEL_BSP_EXPORT_TIMEOUT- 等待导出的最大时间(毫秒)OTEL_BSP_MAX_QUEUE_SIZE- batch 处理的最大队列大小OTEL_BSP_MAX_EXPORT_BATCH_SIZE- 导出的最大 batch 大小
日志配置
配置 SDK 日志行为:
OTEL_LOG_LEVEL- SDK 日志级别(例如debug、info、warn、error)
NOTE
SDK 环境变量遵循 OpenTelemetry 规范。有关可用变量及其说明的完整列表,请参阅 OpenTelemetry Environment Variable Specification。
变量优先级
当同一变量在多个位置中定义时,将按以下优先级顺序应用(从高到低):
- 直接在 pod specification 中定义的环境变量
- 来自 Instrumentation CR 的环境变量
- instrumentation library 中的默认值
TIP
使用 Instrumentation CR 为多个应用定义通用配置,并在需要时通过单个 pod specification 覆盖特定值。