磁盘写满:运维事故里的慢性杀手 磁盘空间告警不像CPU打满那样瞬间爆炸,它是慢慢爬上来的——日志每天涨几个G,几个月后某一天突然写满,数据库写不进去、应用报500、容器镜像拉不下来。等业务报错了才发现磁盘满了,往往已经错过提前清理的窗口。磁…
磁盘写满:运维事故里的慢性杀手
磁盘空间告警不像CPU打满那样瞬间爆炸,它是慢慢爬上来的——日志每天涨几个G,几个月后某一天突然写满,数据库写不进去、应用报500、容器镜像拉不下来。等业务报错了才发现磁盘满了,往往已经错过提前清理的窗口。磁盘空间告警的价值,就是在写满之前把人叫醒。
互亿无线预警通知API(alert.ihuyi.com)把磁盘阈值告警推送到值班手机,按使用率分级触发不同通道。本文讲怎么落地。
磁盘写满是怎么搞挂业务的
磁盘满了之后,故障会沿着依赖链扩散:
- 数据库无法写入,订单、日志、会话全部失败
- 应用容器无法写临时文件,请求处理中断
- 日志采集Agent挂掉,监控数据断流,反而更难排查
- 系统日志写不进去,连故障现场都留不下
这种故障的可怕之处在于:它不是突发的,是可以提前一周预警的。只要磁盘使用率监控配好了,写满几乎是可以避免的事故。
磁盘告警怎么分级
磁盘使用率是典型的趋势型指标,适合P2/P3级别:
| 使用率 | 级别 | 通道 | 建议动作 |
|---|---|---|---|
| 70% | P3 | 短信 | 关注趋势,安排清理 |
| 80% | P2 | 短信加回执 | 本周内清理日志/扩容 |
| 90% | P1 | 短信加语音双呼 | 立即处理,否则24小时内写满 |
| 95% | P0 | 三合一 | 紧急扩容或清理 |
70%就开始告警,是因为磁盘上涨有惯性——日志、数据库备份、临时文件不会自己停下来。等到90%才报警,留给运维的反应时间可能只有几小时。
代码示例
监控系统检测到磁盘使用率越阈值后,调用预警API:
import requests
def disk_alert(host, mount, usage_pct):
if usage_pct >= 95:
level, tpl = "P0", "TPL_DISK_P0"
elif usage_pct >= 90:
level, tpl = "P1", "TPL_DISK_P1_DUAL"
elif usage_pct >= 80:
level, tpl = "P2", "TPL_DISK_P2"
else:
level, tpl = "P3", "TPL_DISK_P3"
content = f"【{level}磁盘告警】{host} {mount} 使用率{usage_pct}%,请及时处理。"
requests.post("https://api.ihuyi.com/sms/Submit.json", data={
"account": "API_ID", "password": "API_KEY",
"mobile": "13800138000", "templateid": tpl, "content": content,
})
disk_alert("web-03", "/data", 87)
这段示例按使用率自动选模板。主机名、挂载点、使用率都要写进文案——运维收到告警后直接知道登哪台机器、看哪个目录。
磁盘告警文案建议
磁盘类告警的信息密度不需要很高,关键是定位准确:
- 主机名加挂载点:web-03的/data,不要笼统说「磁盘满了」
- 当前使用率加趋势:87%,预计24小时写满
- 初步建议:清理/var/log、删除旧备份、扩容磁盘
- 级别前缀:【P1】【P2】让值班判断紧急度
P3/P2级别用短信就够了,不需要打电话——磁盘是慢性问题,工作日处理完全来得及。只有到90%以上接近写满时才升级到语音。
和自动清理联动
理想情况下,磁盘告警不应该每次都人工介入。可以在告警触发后联动自动清理脚本:
- 70%:自动滚动清理7天前的日志
- 80%:自动删除30天前的数据库备份
- 90%:执行紧急清理后仍告警,才升级到语音
自动清理动作也要发一条短信留档,让运维知道系统做了什么。互亿无线24小时可发,夜间清理动作同样能通知到值班手机。
接入与计费
注册送免费测试条数,先拿测试号码模拟一次磁盘70%告警。互亿无线2004年成立,22年企业通信经验,11种语言代码示例,平均30分钟跑通。按成功计费、失败不计费,套餐无有效期。热线400-118-6878。
如果你正在为磁盘写满事故反复发生而头疼,把磁盘阈值告警接到预警API是一种在写满前叫醒人的方案。注册免费试用,先跑通一条磁盘告警短信到值班手机。




