Prometheus 数据分区三天涨到 90%,data 下的 wal 目录一天长 12G,日志开始报写 WAL 失败,抓取也跟着丢点。日志里能对上时间点,这种反而好排。

retention 只按时间设了十五天没设大小上限,目标多、样本密,压缩后的 block 加上还没落盘的 WAL 一起把磁盘吃干净。这一点先确认清楚,后面就不用反复试。

du -sh /prometheus/data/*
promtool tsdb analyze /prometheus/data
--storage.tsdb.retention.size=50GB

这次卡住的地方就在「Prometheus 存储占用」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

处理上按这个顺序:用 promtool 看每个 block 的实际大小和样本数;retention.size 设硬上限 让它先删旧数据;把高基数指标先减掉一些 再谈要不要扩磁盘。

结果对不对很好判断,磁盘占用稳定在 60% 以下,旧 block 按大小被自动清理掉。

作者 9823189