Prometheus 从 2.30 升级到 2.45 有哪些配置变更需要注意?

文章导读
从 Prometheus 2.30 升级到 2.45 属于跨大版本升级,最稳妥的做法是先在测试环境验证配置兼容性,重点检查已废弃的启动参数和特性开关,确认无误后再在生产环境执行。
📋 目录
  1. 关键配置变更清单
  2. 升级实操步骤
  3. 配置文件修改示例
  4. 验证与回滚
  5. 常见坑
  6. 参考来源
A A

从 Prometheus 2.30 升级到 2.45 属于跨大版本升级,最稳妥的做法是先在测试环境验证配置兼容性,重点检查已废弃的启动参数和特性开关,确认无误后再在生产环境执行。

先说结论:2.30 到 2.45 跨度较大,部分旧版启动参数可能已被移除,直接替换二进制文件可能导致启动失败,必须预先检查配置文件和命令行参数。

  • 适合:计划进行常规版本迭代、希望获取新特性修复或安全补丁的运维团队。
  • 先准备:备份现有配置文件与数据目录,并在测试环境完成全流程演练。
  • 验收:确认服务启动正常、数据采集无中断、告警规则加载无误。

关键配置变更清单

2.30 版本发布于 2021 年,而 2.45 版本发布于 2023 年,中间经历了多次特性标记为“废弃”再到“移除”的过程。以下是升级过程中必须核对的关键点:

  • 启动参数清理:检查 `--storage`.tsdb.min-block-duration 等早期存储调整参数,这些在 2.45 中已彻底移除。
  • 特性开关状态:2.30 中需要 `--enable-feature`=remote-write-receiver 的实验性功能,在 2.45 中可能已稳定或默认开启,需确认是否保留参数。
  • 原生直方图:2.45 支持 Native Histograms,若需启用需在配置文件中添加 native_histogram_bucket_limit 等相关设置,而非仅靠启动参数。

升级实操步骤

按照以下顺序操作,确保升级过程可控且可回滚。

1. 备份现有环境
备份配置文件、启动脚本以及数据目录。

cp -r /etc/prometheus /etc/prometheus.bak
cp -r /var/lib/prometheus /var/lib/prometheus.bak

2. 审查启动参数
对比新旧版本的帮助信息,找出差异。

# 旧版本参数快照
prometheus `--help` | grep enable-feature > old_flags.txt

# 新版本参数快照
./prometheus-v2.45 `--help` | grep enable-feature > new_flags.txt

# 对比差异
diff old_flags.txt new_flags.txt

3. 配置语法检查
使用与新版本配套的 promtool 工具检查配置文件。

./promtool check config /etc/prometheus/prometheus.yml
如果有报错,根据提示修改 relabel_configs 或远程写入配置。

Prometheus 从 2.30 升级到 2.45 有哪些配置变更需要注意?

4. 灰度发布
不要一次性替换所有节点。先升级非核心节点,观察日志和监控指标。

配置文件修改示例

以下是从 2.30 风格配置迁移到 2.45 的典型差异示例:

场景:启用远程写入接收器

2.30 配置(实验性):

# 启动参数
`--enable-feature`=remote-write-receiver

2.45 配置(稳定版):

Prometheus 从 2.30 升级到 2.45 有哪些配置变更需要注意?
# 启动参数通常可移除,或确认默认行为
# 配置文件无需特殊变更,但建议检查 remote_write 队列配置
remote_write:
  - url: "http://example.com/write"
    queue_config:
      max_samples_per_send: 5000  # 确认默认值是否满足需求

场景:原生直方图(Native Histograms)

2.45 版本中,若需处理原生直方图,需在 scrape_config 中确认兼容性:

scrape_configs:
  - job_name: 'app'
    static_configs:
      - targets: ['localhost:8080']
    # 2.45 支持更好的直方图处理,无需额外 enable-feature 即可解析部分类型

验证与回滚

升级完成后,通过以下方式确认系统状态:

1. 检查进程状态
确认 Prometheus 进程存活且无重启循环。

systemctl status prometheus

2. 验证 Flags 页面
访问 Web UI 的 /flags 页面,确认实际生效的启动参数与预期一致。

3. 检查 Targets
访问 /targets 页面,确认所有抓取任务状态为 UP。

curl -s http://localhost:9090/api/v1/targets | jq '.data.activeTargets[].health'

Prometheus 从 2.30 升级到 2.45 有哪些配置变更需要注意?

4. 回滚预案
保留旧版本二进制文件,一旦新版本启动失败或数据异常,立即切换回旧版本并恢复备份配置。

常见坑

根据社区反馈和版本变更规律,以下场景需要特别谨慎:

1. 存储参数废弃
2.30 版本中可能使用的 `--storage`.tsdb.min-block-duration 参数在后续版本已被标记废弃,升级到 2.45 时若保留该参数可能导致启动失败。

2. 特性开关变化
部分在 2.30 中需要 `--enable-feature` 开启的功能,在 2.45 中可能已成为默认行为,继续保留参数可能无效或报错。

3. 远程写入队列
remote_write 的队列配置参数在不同版本间有过调整,升级后需关注是否有背压(backpressure)告警。

参考来源

  • Prometheus GitHub Releases, "Release v2.45.0", https://github.com/prometheus/prometheus/releases/tag/v2.45.0
  • Prometheus GitHub Releases, "Release v2.30.0", https://github.com/prometheus/prometheus/releases/tag/v2.30.0
  • Prometheus Official Documentation, "Configuration", https://prometheus.io/docs/prometheus/latest/configuration/configuration/