Linux存储监控自动化需同时监控磁盘与inode使用率,设定85%/95%和90%阈值,用df -B1+awk精准采集;I/O延迟通过iostat -x 1 2取第二次采样判断await与%util组合;邮件报警采用mailx+SMTPS方案,脚本需crontab定时执行、带错误退出机制并记录日志。

实现 Linux 存储系统的远程监控与报警自动化,核心在于:**准确采集磁盘与文件系统指标、设定合理阈值、可靠触发通知、支持无人值守运行**。不依赖复杂平台也能落地,关键在数据源可信、逻辑清晰、告警不漏不扰。
磁盘空间与 inode 双维度监控
仅看 df -h 的使用率容易误判——比如 /tmp 被大量小文件占满,但空间未超限,此时 df -i 显示 inode 使用率达 99%,服务已开始失败。建议同时检查:
- 根分区(/)和关键挂载点(如 /var/log、/data)的磁盘使用率,阈值设为 85%(预警)、95%(紧急)
- 所有挂载点的 inode 使用率,阈值设为 90%(避免“No space left on device”类错误)
- 使用
df -B1获取字节级原始数据,避免单位换算误差;用awk提取精确数值,不依赖空格对齐
IO 性能延迟实时捕获
高使用率不一定等于慢,但高 await(I/O 平均等待毫秒数)直接反映卡顿。需避开 iostat 累计值陷阱:
- 执行
iostat -x 1 2 | grep sda$ | tail -1(以 sda 为例),取第二次采样结果,排除启动抖动 - 关注
await和%util组合判断:await > 20ms 且 %util > 90% 持续 3 次,视为 I/O 瓶颈 - SSD 建议将 await 阈值下调至 10ms,机械盘可放宽至 30ms
邮件报警稳定交付
本地 sendmail 常不可靠,推荐轻量级 mailx + SMTP SSL 方案:
- 安装
mailx(RHEL/CentOS 用 yum,Debian/Ubuntu 用 apt) - 配置
/etc/mail.rc指向企业邮箱或 QQ/163 邮箱的 SMTPS(端口 465) - 务必导入邮箱服务商证书(如
openssl s_client -connect smtp.qq.com:465抓取并certutil导入),否则 TLS 握手失败 - 报警邮件标题含主机 IP 和触发项(例:
ALERT: [192.168.1.22] /dev/sda1 disk usage=96%),正文附时间戳和命令输出片段
脚本部署与运维要点
避免“写完就扔”,确保长期可用:
- 用
crontab -e设置每 5 分钟执行一次(*/5 * * * * /opt/mon/disk_alert.sh) - 脚本开头加
#!/bin/bash -e,任一命令失败即退出,防止后续逻辑错乱 - 日志写入
/var/log/disk-monitor.log,配合 logrotate 按周轮转、保留 4 周 - 首次运行时手动测试邮件通路,再启用自动触发;禁用 root 直接发信,改用专用监控邮箱账号


















