OpenTelemetry 环境变量配置
OpenTelemetry 支持通过环境变量进行配置,这是最灵活和推荐的配置方式。本文档列出所有常用的环境变量及其说明。
通用配置
服务基本信息
OTEL_SERVICE_NAME
说明: 服务名称,用于标识您的应用程序。
类型: String
必需: 是
默认值: unknown_service
示例:
export OTEL_SERVICE_NAME=user-service
OTEL_RESOURCE_ATTRIBUTES
说明: 资源属性,以逗号分隔的键值对。
类型: String (key1=value1,key2=value2)
必需: 否
示例:
export OTEL_RESOURCE_ATTRIBUTES=service.version=1.2.3,deployment.environment=production,service.namespace=backend
常用属性:
service.version: 服务版本service.namespace: 服务命名空间service.instance.id: 实例 IDdeployment.environment: 部署环境(dev/test/staging/production)host.name: 主机名cloud.provider: 云服务商(aws/azure/gcp)cloud.region: 云区域k8s.namespace.name: Kubernetes 命名空间k8s.pod.name: Pod 名称k8s.deployment.name: Deployment 名称
日志级别
OTEL_LOG_LEVEL
说明: OpenTelemetry SDK 的日志级别。
类型: String
可选值: none, error, warn, info, debug
默认值: info
示例:
export OTEL_LOG_LEVEL=debug # 开发环境export OTEL_LOG_LEVEL=warn # 生产环境
OTLP Exporter 配置
通用 OTLP 配置
OTEL_EXPORTER_OTLP_ENDPOINT
说明: OTLP exporter 的 endpoint 地址,同时用于 traces、metrics 和 logs。
类型: String (URL)
必需: 是(如果使用 OTLP)
默认值: http://localhost:4317 (gRPC) 或 http://localhost:4318 (HTTP)
示例:
# gRPCexport OTEL_EXPORTER_OTLP_ENDPOINT=uptrace-grpc.yodao.cn:4317# HTTPexport OTEL_EXPORTER_OTLP_ENDPOINT=https://api.uptrace.dev:4318
注意:
- 对于 gRPC,不要在路径后添加
/v1/traces等路径 - 对于 HTTP,路径会自动添加(如
/v1/traces)
OTEL_EXPORTER_OTLP_PROTOCOL
说明: OTLP exporter 使用的协议。
类型: String
可选值: grpc, http/protobuf, http/json
默认值: grpc
示例:
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
推荐:
- 生产环境推荐使用
grpc,性能更好 - 如果网络环境限制 gRPC,使用
http/protobuf
OTEL_EXPORTER_OTLP_HEADERS
说明: OTLP exporter 的 HTTP headers,用于认证等。
类型: String (key1=value1,key2=value2)
必需: 取决于后端要求
示例:
# Uptraceexport OTEL_EXPORTER_OTLP_HEADERS=uptrace-dsn=http://token@uptrace-grpc.yodao.cn/project# API Keyexport OTEL_EXPORTER_OTLP_HEADERS=api-key=your-api-key# 多个 Headersexport OTEL_EXPORTER_OTLP_HEADERS=authorization=Bearer token,x-api-key=key123
OTEL_EXPORTER_OTLP_TIMEOUT
说明: OTLP exporter 请求超时时间(毫秒)。
类型: Integer
默认值: 10000 (10 秒)
示例:
export OTEL_EXPORTER_OTLP_TIMEOUT=15000 # 15 秒
OTEL_EXPORTER_OTLP_COMPRESSION
说明: OTLP exporter 的压缩算法。
类型: String
可选值: none, gzip
默认值: none
示例:
export OTEL_EXPORTER_OTLP_COMPRESSION=gzip
推荐: 对于大流量应用,启用 gzip 压缩可以减少网络带宽。
Traces 专用配置
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
说明: Traces 专用的 endpoint,覆盖通用 endpoint。
类型: String (URL)
示例:
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://traces.example.com:4317
OTEL_EXPORTER_OTLP_TRACES_HEADERS
说明: Traces 专用的 headers,覆盖通用 headers。
类型: String
示例:
export OTEL_EXPORTER_OTLP_TRACES_HEADERS=api-key=traces-key
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL
说明: Traces 专用的协议。
类型: String
可选值: grpc, http/protobuf
示例:
export OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_TRACES_TIMEOUT
说明: Traces 专用的超时时间(毫秒)。
类型: Integer
示例:
export OTEL_EXPORTER_OTLP_TRACES_TIMEOUT=10000
OTEL_EXPORTER_OTLP_TRACES_COMPRESSION
说明: Traces 专用的压缩算法。
类型: String
可选值: none, gzip
示例:
export OTEL_EXPORTER_OTLP_TRACES_COMPRESSION=gzip
Metrics 专用配置
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
说明: Metrics 专用的 endpoint。
类型: String (URL)
示例:
export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=https://metrics.example.com:4317
OTEL_EXPORTER_OTLP_METRICS_HEADERS
说明: Metrics 专用的 headers。
类型: String
示例:
export OTEL_EXPORTER_OTLP_METRICS_HEADERS=api-key=metrics-key
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL
说明: Metrics 专用的协议。
类型: String
可选值: grpc, http/protobuf
示例:
export OTEL_EXPORTER_OTLP_METRICS_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_METRICS_TIMEOUT
说明: Metrics 专用的超时时间(毫秒)。
类型: Integer
示例:
export OTEL_EXPORTER_OTLP_METRICS_TIMEOUT=10000
OTEL_EXPORTER_OTLP_METRICS_COMPRESSION
说明: Metrics 专用的压缩算法。
类型: String
可选值: none, gzip
示例:
export OTEL_EXPORTER_OTLP_METRICS_COMPRESSION=gzip
Logs 专用配置
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT
说明: Logs 专用的 endpoint。
类型: String (URL)
示例:
export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://logs.example.com:4317
OTEL_EXPORTER_OTLP_LOGS_HEADERS
说明: Logs 专用的 headers。
类型: String
示例:
export OTEL_EXPORTER_OTLP_LOGS_HEADERS=api-key=logs-key
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL
说明: Logs 专用的协议。
类型: String
可选值: grpc, http/protobuf
示例:
export OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_LOGS_TIMEOUT
说明: Logs 专用的超时时间(毫秒)。
类型: Integer
示例:
export OTEL_EXPORTER_OTLP_LOGS_TIMEOUT=10000
OTEL_EXPORTER_OTLP_LOGS_COMPRESSION
说明: Logs 专用的压缩算法。
类型: String
可选值: none, gzip
示例:
export OTEL_EXPORTER_OTLP_LOGS_COMPRESSION=gzip
Traces 配置
OTEL_TRACES_EXPORTER
说明: Traces exporter 的类型。
类型: String
可选值: otlp, jaeger, zipkin, console, none
默认值: otlp
示例:
export OTEL_TRACES_EXPORTER=otlp
OTEL_TRACES_SAMPLER
说明: Traces 采样器类型。
类型: String
可选值:
always_on: 采样所有 tracesalways_off: 不采样任何 tracestraceidratio: 基于 trace ID 的概率采样parentbased_always_on: 父级采样 + 总是采样parentbased_always_off: 父级采样 + 从不采样parentbased_traceidratio: 父级采样 + 概率采样(推荐)
默认值: parentbased_always_on
示例:
# 10% 采样率export OTEL_TRACES_SAMPLER=parentbased_traceidratioexport OTEL_TRACES_SAMPLER_ARG=0.1# 100% 采样(开发环境)export OTEL_TRACES_SAMPLER=always_on
OTEL_TRACES_SAMPLER_ARG
说明: 采样器参数,对于 traceidratio 表示采样率(0.0 ~ 1.0)。
类型: Float
默认值: 1.0
示例:
export OTEL_TRACES_SAMPLER_ARG=0.1 # 10% 采样export OTEL_TRACES_SAMPLER_ARG=0.01 # 1% 采样export OTEL_TRACES_SAMPLER_ARG=1.0 # 100% 采样
推荐采样率:
- 开发环境:
1.0(100%) - 测试环境:
0.5(50%) - 生产环境(低流量):
0.5(50%) - 生产环境(中等流量):
0.1(10%) - 生产环境(高流量):
0.01(1%)
OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT
说明: 每个 Span 的最大属性数量。
类型: Integer
默认值: 128
示例:
export OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT=256
OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT
说明: Span 属性值的最大长度。
类型: Integer
默认值: 无限制(某些 SDK 默认 1024)
示例:
export OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT=4096
OTEL_SPAN_EVENT_COUNT_LIMIT
说明: 每个 Span 的最大事件数量。
类型: Integer
默认值: 128
示例:
export OTEL_SPAN_EVENT_COUNT_LIMIT=256
OTEL_SPAN_LINK_COUNT_LIMIT
说明: 每个 Span 的最大链接数量。
类型: Integer
默认值: 128
示例:
export OTEL_SPAN_LINK_COUNT_LIMIT=256
OTELBSP* (Batch Span Processor)
OTEL_BSP_SCHEDULE_DELAY
说明: 批量导出的时间间隔(毫秒)。
类型: Integer
默认值: 5000 (5 秒)
示例:
export OTEL_BSP_SCHEDULE_DELAY=3000 # 3 秒
OTEL_BSP_EXPORT_TIMEOUT
说明: 批量导出的超时时间(毫秒)。
类型: Integer
默认值: 30000 (30 秒)
示例:
export OTEL_BSP_EXPORT_TIMEOUT=15000 # 15 秒
OTEL_BSP_MAX_QUEUE_SIZE
说明: Span 队列的最大大小。
类型: Integer
默认值: 2048
示例:
export OTEL_BSP_MAX_QUEUE_SIZE=4096
OTEL_BSP_MAX_EXPORT_BATCH_SIZE
说明: 单次导出的最大 Span 数量。
类型: Integer
默认值: 512
示例:
export OTEL_BSP_MAX_EXPORT_BATCH_SIZE=1024
Metrics 配置
OTEL_METRICS_EXPORTER
说明: Metrics exporter 的类型。
类型: String
可选值: otlp, prometheus, console, none
默认值: otlp
示例:
export OTEL_METRICS_EXPORTER=otlp
OTEL_METRIC_EXPORT_INTERVAL
说明: Metrics 导出间隔(毫秒)。
类型: Integer
默认值: 60000 (60 秒)
示例:
export OTEL_METRIC_EXPORT_INTERVAL=30000 # 30 秒
OTEL_METRIC_EXPORT_TIMEOUT
说明: Metrics 导出超时时间(毫秒)。
类型: Integer
默认值: 30000 (30 秒)
示例:
export OTEL_METRIC_EXPORT_TIMEOUT=15000 # 15 秒
Logs 配置
OTEL_LOGS_EXPORTER
说明: Logs exporter 的类型。
类型: String
可选值: otlp, console, none
默认值: otlp
示例:
export OTEL_LOGS_EXPORTER=otlp
OTELBLRP* (Batch Log Record Processor)
OTEL_BLRP_SCHEDULE_DELAY
说明: 批量导出日志的时间间隔(毫秒)。
类型: Integer
默认值: 1000 (1 秒)
示例:
export OTEL_BLRP_SCHEDULE_DELAY=2000 # 2 秒
OTEL_BLRP_EXPORT_TIMEOUT
说明: 批量导出日志的超时时间(毫秒)。
类型: Integer
默认值: 30000 (30 秒)
示例:
export OTEL_BLRP_EXPORT_TIMEOUT=15000 # 15 秒
OTEL_BLRP_MAX_QUEUE_SIZE
说明: 日志队列的最大大小。
类型: Integer
默认值: 2048
示例:
export OTEL_BLRP_MAX_QUEUE_SIZE=4096
OTEL_BLRP_MAX_EXPORT_BATCH_SIZE
说明: 单次导出的最大日志数量。
类型: Integer
默认值: 512
示例:
export OTEL_BLRP_MAX_EXPORT_BATCH_SIZE=1024
Propagators 配置
OTEL_PROPAGATORS
说明: Context propagation 使用的传播器列表。
类型: String (逗号分隔)
可选值: tracecontext, baggage, b3, b3multi, jaeger, xray, ottrace
默认值: tracecontext,baggage
示例:
# W3C Trace Context (推荐)export OTEL_PROPAGATORS=tracecontext,baggage# B3 格式(兼容 Zipkin)export OTEL_PROPAGATORS=b3# B3 多 Header 格式export OTEL_PROPAGATORS=b3multi# Jaeger 格式export OTEL_PROPAGATORS=jaeger# 混合使用export OTEL_PROPAGATORS=tracecontext,b3,baggage
SDK 禁用配置
OTEL_SDK_DISABLED
说明: 完全禁用 OpenTelemetry SDK。
类型: Boolean
默认值: false
示例:
export OTEL_SDK_DISABLED=true # 禁用 SDK
OTEL_TRACES_DISABLED (非标准)
说明: 仅禁用 Traces(某些 SDK 支持)。
类型: Boolean
示例:
export OTEL_TRACES_DISABLED=true
OTEL_METRICS_DISABLED (非标准)
说明: 仅禁用 Metrics(某些 SDK 支持)。
类型: Boolean
示例:
export OTEL_METRICS_DISABLED=true
完整配置示例
开发环境
# .env.development# 服务信息OTEL_SERVICE_NAME=my-service-devOTEL_RESOURCE_ATTRIBUTES=service.version=dev,deployment.environment=development# OTLP ExporterOTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317OTEL_EXPORTER_OTLP_PROTOCOL=grpc# TracesOTEL_TRACES_EXPORTER=otlpOTEL_TRACES_SAMPLER=always_onOTEL_TRACES_SAMPLER_ARG=1.0# MetricsOTEL_METRICS_EXPORTER=otlpOTEL_METRIC_EXPORT_INTERVAL=30000# LogsOTEL_LOGS_EXPORTER=otlp# 日志级别OTEL_LOG_LEVEL=debug
测试环境
# .env.test# 服务信息OTEL_SERVICE_NAME=my-service-testOTEL_RESOURCE_ATTRIBUTES=service.version=1.2.3-rc1,deployment.environment=test# OTLP ExporterOTEL_EXPORTER_OTLP_ENDPOINT=https://test.apm-platform.com:4317OTEL_EXPORTER_OTLP_PROTOCOL=grpcOTEL_EXPORTER_OTLP_HEADERS=uptrace-dsn=https://test-token@test.apm-platform.com/test-projectOTEL_EXPORTER_OTLP_COMPRESSION=gzip# TracesOTEL_TRACES_EXPORTER=otlpOTEL_TRACES_SAMPLER=parentbased_traceidratioOTEL_TRACES_SAMPLER_ARG=0.5# MetricsOTEL_METRICS_EXPORTER=otlpOTEL_METRIC_EXPORT_INTERVAL=60000# LogsOTEL_LOGS_EXPORTER=otlp# 日志级别OTEL_LOG_LEVEL=info
生产环境
# .env.production# 服务信息OTEL_SERVICE_NAME=my-serviceOTEL_RESOURCE_ATTRIBUTES=service.version=1.2.3,deployment.environment=production,service.namespace=backend,cloud.provider=aws,cloud.region=us-east-1# OTLP ExporterOTEL_EXPORTER_OTLP_ENDPOINT=https://api.apm-platform.com:4317OTEL_EXPORTER_OTLP_PROTOCOL=grpcOTEL_EXPORTER_OTLP_HEADERS=uptrace-dsn=https://prod-token@api.apm-platform.com/prod-projectOTEL_EXPORTER_OTLP_COMPRESSION=gzipOTEL_EXPORTER_OTLP_TIMEOUT=15000# TracesOTEL_TRACES_EXPORTER=otlpOTEL_TRACES_SAMPLER=parentbased_traceidratioOTEL_TRACES_SAMPLER_ARG=0.1OTEL_BSP_MAX_QUEUE_SIZE=4096OTEL_BSP_MAX_EXPORT_BATCH_SIZE=1024OTEL_BSP_SCHEDULE_DELAY=5000# MetricsOTEL_METRICS_EXPORTER=otlpOTEL_METRIC_EXPORT_INTERVAL=60000# LogsOTEL_LOGS_EXPORTER=otlpOTEL_BLRP_MAX_QUEUE_SIZE=4096OTEL_BLRP_MAX_EXPORT_BATCH_SIZE=1024# 日志级别OTEL_LOG_LEVEL=warn# PropagatorsOTEL_PROPAGATORS=tracecontext,baggage
Kubernetes 部署
apiVersion: apps/v1kind: Deploymentmetadata:name: my-servicespec:template:spec:containers:- name: appimage: my-service:latestenv:- name: OTEL_SERVICE_NAMEvalue: my-service- name: OTEL_RESOURCE_ATTRIBUTESvalue: service.version=1.2.3,deployment.environment=production- name: OTEL_EXPORTER_OTLP_ENDPOINTvalue: http://otel-collector:4317- name: OTEL_EXPORTER_OTLP_PROTOCOLvalue: grpc- name: OTEL_EXPORTER_OTLP_HEADERSvalueFrom:secretKeyRef:name: apm-credentialskey: otlp-headers- name: OTEL_TRACES_SAMPLERvalue: parentbased_traceidratio- name: OTEL_TRACES_SAMPLER_ARGvalue: "0.1"- name: OTEL_LOGS_EXPORTERvalue: otlp- name: OTEL_METRICS_EXPORTERvalue: otlp
语言特定环境变量
某些环境变量是特定语言的,请查看对应的语言文档:
优先级
环境变量的优先级(从高到低):
- 代码配置: 在代码中显式设置
- 环境变量: 通过
export或.env文件 - 默认值: SDK 的默认配置
示例:
// 代码配置(最高优先级)tp := sdktrace.NewTracerProvider(sdktrace.WithSampler(sdktrace.TraceIDRatioBased(0.5)),)// 如果代码中没有设置,使用环境变量// OTEL_TRACES_SAMPLER_ARG=0.1// 如果都没有设置,使用默认值(1.0)
验证配置
检查环境变量
# 显示所有 OTEL_ 开头的环境变量env | grep OTEL_# 验证特定变量echo $OTEL_SERVICE_NAMEecho $OTEL_EXPORTER_OTLP_ENDPOINT
测试连接
# 使用 curl 测试 OTLP endpointcurl -v uptrace-grpc.yodao.cn:4317# 使用 opentelemetry-collector-contrib 测试docker run -it --rm \-e OTEL_EXPORTER_OTLP_ENDPOINT=uptrace-grpc.yodao.cn:4317 \-e OTEL_EXPORTER_OTLP_HEADERS=uptrace-dsn=<your-dsn> \otel/opentelemetry-collector-contrib:latest
下一步
现在您已经了解了所有环境变量配置,可以开始接入您的应用程序: