本文目录导读:

磁盘空间检测报警通常通过监控系统或自定义脚本实现,核心思路是:定期检查磁盘使用率,当超过某个阈值(如80%、90%)时,触发通知(邮件、短信、IM消息等)。
以下是几种常见且实用的实现方案:
使用系统自带的工具 + 脚本(最通用、最灵活)
适合对成本敏感、没有部署大型监控平台的环境,或需要自定义特定逻辑的场景。
(1) 核心命令(Linux/Unix 系统)
# 查看磁盘使用情况,-h 表示人类可读格式
df -h
# 只获取使用率(获取 / 分区的使用率,去掉 % 号)
df -h / | awk 'NR==2 {print $5}' | sed 's/%//'
(2) 一个简单的bash报警脚本
创建一个脚本 disk_alert.sh,设置为定时任务(cron)。
#!/bin/bash
# 配置:设置报警阈值(百分比),85%
THRESHOLD=85
# 要监控的分区列表(根据需要添加或修改)
PARTITIONS="/ /home /var"
# 接收报警的邮箱
EMAIL="admin@example.com"
# 循环检查每个分区
for PART in $PARTITIONS; do
# 获取当前分区的使用率(整数)
USAGE=$(df -h $PART | awk 'NR==2 {print $5}' | sed 's/%//')
# 如果使用率大于等于阈值
if [ $USAGE -ge $THRESHOLD ]; then
# 获取具体的磁盘使用信息作为邮件正文
DETAIL=$(df -h $PART)
# 发送报警邮件(需要系统配置好 mail 命令,mailutils)
echo "警告:分区 $PART 使用率已达 ${USAGE}%,超过阈值 ${THRESHOLD}%。\n详情:\n$DETAIL" | mail -s "磁盘空间报警 - $PART" $EMAIL
# 或者使用 curl 发送到钉钉/企业微信机器人(见下方进阶)
fi
done
(3) 设置定时任务(Crontab)
# 编辑 crontab crontab -e # 添加一行,每 5 分钟执行一次(注意脚本路径要写绝对路径) */5 * * * * /home/scripts/disk_alert.sh
使用成熟的监控系统(专业、统一管理)
如果有运维或监控团队,使用专业平台是最佳实践,可以做到可视化、历史趋势、批量注册、自动处理。
-
Prometheus + Grafana + AlertManager(云原生首选)
- 使用
node_exporter收集包含磁盘在内的系统指标。 - 在 Prometheus 或 AlertManager 中配置报警规则:
# 告警规则示例 (PrometheusRule) alert: DiskSpaceLow expr: (1 - (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"})) * 100 > 85 for: 5m labels: severity: warning annotations: summary: "磁盘空间不足 (实例 {{ $labels.instance }})" description: "根分区磁盘使用率已超过 85% (当前值: {{ $value }}%)" - 通过 AlertManager 发送到钉钉、邮件、Slack 等。
- 使用
-
Zabbix / Nagios / Cacti(传统企业常用)
自带“磁盘空间”监控模板,只需将主机加入监控,配置报警动作(Action)和媒介(Media,如邮件、短信网关)即可,这是最省事的方案之一。
-
云厂商自带服务(阿里云、腾讯云、AWS、Azure)
- 控制台报警:在云监控页面,选择“磁盘使用率”指标,设置阈值报警。
- 云助手:在云服务器内配合脚本进行检测。
- 优势:开箱即用,与云资源强绑定,不需要自己搭建基础设施。
更现代化的通知方式(替代邮件)
很多场景下,邮件不如即时通讯工具直观,以上脚本(方案一)可以轻松扩展。
(1) 发送到企业微信机器人
WEBHOOK_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的key"
curl -s -H "Content-Type: application/json" -d "{\"msgtype\":\"text\",\"text\":{\"content\":\"磁盘报警:分区 $PART 使用率已超 ${THRESHOLD}%\"}}" $WEBHOOK_URL
(2) 发送到钉钉机器人
DINGTALK_URL="https://oapi.dingtalk.com/robot/send?access_token=你的token"
curl -s -H "Content-Type: application/json" -d "{\"msgtype\":\"text\",\"text\":{\"content\":\"磁盘报警:分区 $PART 使用率已超 ${THRESHOLD}%\"}}" $DINGTALK_URL
(3) 发送 Pushbullet 或 Server酱(个人通知神器)
- 这类服务通常是跑在公网上的手机App或小程序,你的服务器通过HTTPS调用其API,就能直接把报警推送到手机上。
一些关键的“好习惯”和建议
- 不要只监控根分区(/):** 业务数据通常放在
/data,/home,/var/log等分区,它们的爆满风险往往比系统盘高得多,而且后果可能更直接(如日志写爆导致无报错闪退)。 - 设置不同的阈值:
WARNING (警告):85%,提醒你该清理了。CRITICAL (严重):92-95%,需要立刻处理。PANIC (灾难):97%+,系统或服务可能马上挂掉。
- 延迟报警(For/Duration): 磁盘使用率偶尔会因大文件写入瞬间飙升,但很快回落,不要因为一次采样就报警,可以设置为持续超过阈值N分钟(如5分钟)再触发,避免干扰。
- 结合日志轮转(Logrotate)使用: 磁盘报警不应只靠通知,最根本的预防措施是配置好日志切割。
- 提前配置好
logrotate或cronolog,对/var/log/目录下的日志进行归档、压缩和清理,这样报警发生前,问题往往就被自动解决了。
- 提前配置好
- 紧急响应: 如果磁盘真的满了,服务已经受影响,往往报警反而收不到(比如系统连发送邮件的进程都无法启动),这时候可以考虑:
- 紧急脚本(在内存中运行的检查)或通过带外监控(如IPMI、云控制台VNC)直接进服务器清理。
- 在
/root等系统保留分区预留少量空间(通常默认就有5%留给root,df命令里的使用率是基于100%总量的,注意到这一点)。
选哪个方案?
- 个人/小团队、单台服务器:方案一脚本 + 钉钉/企微机器人,0成本,5分钟就能搭好。
- 中等规模、多台服务器、有运维基础:Prometheus + Grafana + AlertManager 或 Zabbix,这是生产环境的标准答案,值得花时间投入。
- 云上环境最省心:直接使用云监控控制台 + 报警规则,不需要自己写脚本,高可用性由云平台保障。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播