OpenTelemetry Collector升级日志:0.114.0->0.121.0
📅 2025-03-12 | 🖱️
近期我们对两个环境中的OpenTelemetry Collector进行了版本升级,从v0.114.0升级到了v0.121.0。这次升级涉及一些配置变化,本文将记录一些升级过程中的关键点和经验总结。
环境信息 #
这两套环境采用了相同的部署架构:首先通过Helm安装opentelemetry-operator
,然后利用OpenTelemetry Collector的CRD(自定义资源定义)创建OpenTelemetryCollector资源。opentelemetry-operator
会根据这些资源定义,在Kubernetes集群的每个节点上以DaemonSet的形式部署OpenTelemetry Collector Pod,实现分布式的遥测数据采集。
主要的软件版本信息如下:
- OpenTelemetry Operator Helm Chart: v0.82.1
- 相关组件镜像版本:
- RBAC Proxy:
quay.io/brancz/kube-rbac-proxy:v0.18.1
- OpenTelemetry Operator:
open-telemetry/opentelemetry-operator/opentelemetry-operator:0.120.0
- OpenTelemetry Collector:
otel/opentelemetry-collector-contrib:v0.121.0
- RBAC Proxy:
OpenTelemetry Collector Contrib 0.114.0到0.121.0的一些重要变化 #
组件移除和废弃 #
- OpenCensus exporter和receiver已被废弃,建议迁移到OTLP exporter和receiver
- 以下组件被标记为未维护状态:
- exporter/kineticaexporter
- exporter/opensearchexporter
- extension/observer/ecstaskobserver
- receiver/awscloudwatchmetricsreceiver
- receiver/rabbitmqreceiver
- receiver/jmxreceiver
配置变更 #
- Elasticsearch Exporter:
- 移除了
index
配置选项 (自 v0.60.0 起已废弃) - 移除了
dedup
配置设置 (自 v0.104.0 起已废弃) - 移除了对 none、raw 和 bodymap 映射模式下的指标支持
- 现在要求最低版本为ES7.17.x
- 移除了
- AWS S3 Exporter:
s3_partition
选项被替换为更灵活的s3_partition_format
- 如果未提供
s3_prefix
,导出器将不会在存储桶中创建 “/” 文件夹
- Prometheus Receiver:
- 现在使用 Prometheus 3.0的scrapers
- 指标开始时间调整功能已被废弃,将由metricstarttime processor 替代
- 其他重要变更:
- SignalFx Exporter: 移除了已废弃的
translation_rules
配置选项 - Routing Connector: 移除了
match_once
配置参数 - K8s Attributes Processor:
k8sattr.fieldExtractConfigRegex.disallow
特性门(feature gate)已移至稳定版
- SignalFx Exporter: 移除了已废弃的
实际升级过程中涉及到的配置变更 #
在实际升级过程中,我们主要对以下几个方面进行了配置调整:
1. 版本升级 #
- OpenTelemetry Operator 从
0.114.0
升级到0.120.0
- OpenTelemetry Collector Contrib 从
0.114.0
升级到0.121.0
2. Elasticsearch Exporter配置变更 #
根据新版本的要求,移除了已废弃的配置项:
1mapping: # 移除此配置
2 dedup: true # 移除此配置
3 dedot: false # 移除此配置
重试策略参数调整
重试配置参数名称发生变化:
- 将
max_requests
改名为max_retries
1retry:
2 enabled: true
3 max_retries: 5 # 原为max_requests
4 initial_interval: 100ms
5 max_interval: 1m
3. 指标收集配置更新 #
在指标配置中添加了级别设置:
1service:
2 telemetry:
3 logs:
4 level: "info"
5 metrics:
6 level: normal
7 address: 127.0.0.1:8888
8 # https://github.com/open-telemetry/opentelemetry-operator/issues/3730
9 # https://github.com/open-telemetry/opentelemetry-operator/pull/3744
10 # readers:
11 # - pull:
12 # exporter:
13 # prometheus:
14 # host: 127.0.0.1
15 # port: 8888
由于service.telemetry.metrics.address
已经废弃了,应该使用service.telemetry.metrics.readers
。
但由于OpenTelemetry Operator的Issue #3730,目前暂时注释掉了Prometheus相关的读取器配置。这个问题在未来的版本中可能会得到解决。
4. loki exporter已经废弃 #
在OpenTelemetry Collector Contrib的最新版本中,loki exporter已被标记为废弃状态,并将在未来版本中移除。这一变更源于Loki v3已经原生支持OTLP(OpenTelemetry Protocol)日志摄取功能。
Loki v3引入的OpenTelemetry日志格式为用户带来了显著优势:
- 原生支持OpenTelemetry日志结构,无需JSON解析即可直接查询,大大提升了查询效率
- 采用标准OTLP协议传输数据,简化了配置流程,提高了系统可维护性
如果您当前正在使用Loki exporter,我们强烈建议您参考以下资源,尽快完成向OTLP原生摄取方式的迁移:
由于本次2套环境的日志均采用ES存储,尚未使用Loki,我们将在后续处理Loki相关环境时再整理相关OpenTelemetry OTLP的具体配置方案。