声明式配置
声明式配置使用 YAML 文件而不是环境变量。
这种方法在以下情况下很有用
- 您需要设置许多配置选项。
- 您想使用环境变量不可用的配置选项。
警告
声明式配置是实验性的。
支持的语言
以下 OpenTelemetry SDK 支持声明式配置
有关详细信息,请参阅 合规性矩阵
入门
- 将以下配置文件保存为
otel-config.yaml。 - 设置环境变量
OTEL_EXPERIMENTAL_CONFIG_FILE=/path/to/otel-config.yaml
推荐的配置文件
file_format: '1.0-rc.1'
resource:
attributes_list: ${OTEL_RESOURCE_ATTRIBUTES}
detection/development:
detectors:
- service: # will add "service.instance.id" and "service.name" from OTEL_SERVICE_NAME
propagator:
composite:
- tracecontext:
- baggage:
tracer_provider:
processors:
- batch:
exporter:
otlp_http:
endpoint: ${OTEL_EXPORTER_OTLP_ENDPOINT:-https://:4318}/v1/traces
meter_provider:
readers:
- periodic:
exporter:
otlp_http:
endpoint: ${OTEL_EXPORTER_OTLP_ENDPOINT:-https://:4318}/v1/metrics
logger_provider:
processors:
- batch:
exporter:
otlp_http:
endpoint: ${OTEL_EXPORTER_OTLP_ENDPOINT:-https://:4318}/v1/logs
环境变量
- 声明式配置支持读取环境变量的语法。
- 除非您在配置文件中显式添加,否则所有环境变量都将被忽略。
例如,如果您设置了
OTEL_RESOURCE_ATTRIBUTES=service.version=1.1,deployment.environment.name=staging
以下配置将创建一个资源,其中 service.version=1.1 和 deployment.environment.name=staging
resource:
attributes_list: ${OTEL_RESOURCE_ATTRIBUTES}
警告
除非您在配置文件中显式添加,否则所有环境变量都将被忽略。
迁移配置
如果您的现有配置依赖于环境变量,您可以将 迁移配置 作为起点,迁移到声明式配置。
可用配置选项
完整的配置选项列表可在 kitchen sink 示例 中找到。
每个信号的终结点
如果您为 traces、metrics 和 logs 设置了不同的终结点,在使用 otlp_http 时使用以下配置
| OTLP HTTP Exporter | 终结点值 |
|---|---|
| 追踪 | ${OTEL_EXPORTER_OTLP_TRACES_ENDPOINT:-https://:4318/v1/traces} |
| 指标 | ${OTEL_EXPORTER_OTLP_METRICS_ENDPOINT:-https://:4318/v1/metrics} |
| 日志 | ${OTEL_EXPORTER_OTLP_LOGS_ENDPOINT:-https://:4318/v1/logs} |
gRPC Exporter
除了 otlp_http,您还可以使用 otlp_grpc 通过 gRPC 进行导出
otlp_grpc:
endpoint: ${OTEL_EXPORTER_OTLP_ENDPOINT:-https://:4317}
资源属性
设置资源属性的推荐方法是通过环境变量,因为这与设置环境变量的工具(如 OpenTelemetry Operator for Kubernetes)配合良好。
但是,您也可以直接在配置文件中设置资源属性
resource:
attributes:
- name: service.name
value: shopping_cart
- name: deployment.environment.name
value: staging