运维手册

Prometheus 保留周期怎么定:一份不拍脑袋的测算方法

← 全部文章
📚 系列「可观测性落地」· 第 1 / 1 篇
  1. Prometheus 保留周期怎么定:一份不拍脑袋的测算方法

Prometheus 磁盘告警半夜响,最常见的原因不是流量涨了,而是 retention 从来没算过。本文给一个可复算的方法。

核心公式

TSDB 平均每个采样约占 1.9 字节(压缩后),于是:

1
2
磁盘需求 ≈ 每秒采样数 × 1.9 字节 × 保留秒数
每秒采样数 = 指标基数总和 × 抓取目标数 / 抓取间隔

例如 50 万活跃序列、15 秒抓取一次:

1
2
每秒采样数 ≈ 500000 / 15 ≈ 33333
保留 30 天 ≈ 33333 × 1.9 × 2592000 ≈ 164 GB

生产建议

  1. 先用 /api/v1/status/tsdb 看真实基数,别用估值。
  2. 磁盘预算按 70% 利用率反推 retention。
  3. 同时设置时间与容量双上限,防止基数爆炸写满磁盘:
1
2
--storage.tsdb.retention.time=30d
--storage.tsdb.retention.size=180GB
  1. 高基数标签(如 user_id、request_id)一律不要进指标,用日志或 tracing 承载。

一句话总结

retention 不是配置项,是容量规划题:先量基数,再算字节,最后留余量。