Prometheus 数据保留时间配置

今天在调整Prometheus的数据保留时间,将默认的15天存储延长到30天,记录下过程。

配置

按照网上查到的教程,在启动命令中添加了--storage.tsdb.retention.time=30d,结果Prometheus直接报错

Error parsing commandline arguments: unknown long flag '--storage.tsdb.retention.time'

通过prometheus --version确认当前版本为2.6.0,资料显示:

  • 3.0.0+版本才支持--storage.tsdb.retention.time参数
  • 旧版本需要使用--storage.tsdb.retention=30d(无.time后缀)

将参数改为旧版格式:

./prometheus --storage.tsdb.retention=30d --config.file=prometheus.yml

配置优先级验证

为了确认配置生效方式,做了两组测试:

命令行 vs 配置文件冲突

  • prometheus.yml中设置storage.tsdb.retention: 15d
  • 命令行参数--storage.tsdb.retention=30d

结果:命令行参数覆盖配置文件,实际生效30天

可以通过这个页面查看生效的配置:

http://<prometheus-server>/flags

image-20250325午前111838386

完整配置示例

# 启动脚本示例(适用于v2.6)
./prometheus \
  --storage.tsdb.retention=30d \   # 旧版参数
  --config.file=prometheus.yml \   # 配置文件路径
  --web.enable-lifecycle           # 可选:启用热加载
# prometheus.yml(兼容新旧版本)
storage:
  tsdb:
    retention: 30d  # 新版本写成retention.time

Prometheus 监控容器启动时间 Shell 脚本 while 循环只执行一次的问题