问题出现得很突然,日志倒是留得挺全。数据盘五百 G,告警阈值设的百分之八十五,某天日志暴涨,从告警到写满只有两小时,扩容审批还没走完,服务已经不可写。

刚开始盯着「日志是阶跃式增长,线性阈值跟不上」,折腾了半个多小时,排掉了。

原因不止一个,得分开看。按百分比设阈值,大容量盘的绝对余量太小。少数情况下是没有按增长速度做预测告警。

另外,扩容要走审批,流程本身就慢。

算最近的日均增长量

df -h /data && du -sh /data/* 2>/dev/null | sort -h | tail

再往下加一条剩余可用时间的预测规则

grep -n 'predict_linear' /etc/prometheus/rules/disk.yml

校验规则语法后热加载

promtool check rules /etc/prometheus/rules/disk.yml

末了配置过期日志清理兜底

find /data/logs -type f -mtime +7 -delete

改完先别撤,确认这几项。模拟日志快速增长时告警在预计写满前十二小时到达,清理脚本执行后磁盘回落到七成以下。

提醒一点。容量告警看的是还有多久写满,不是当前用了多少;大容量盘建议同时配绝对余量,比如剩余不足五十 G 就报。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189