本文采用
目前企业微信机器人是最常用的告警方式,实时推送、免配置邮箱,本文默认用这个方案,文末给出邮件告警的替代配置。
获取企业微信机器人Webhook步骤:
常规服务器建议设置
首先登录你的服务器,执行以下命令创建脚本文件:
``` vi /usr/local/bin/disk_alert.sh ```
按insert进入编辑模式,粘贴以下完整可运行的脚本内容:
```bash
!/bin/bash
-- 可修改配置区域开始 --
ALERT_THRESHOLD=80 告警阈值,单位%,按需修改
WEBHOOK_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/xxx" 替换成你的企业微信机器人Webhook地址
-- 可修改配置区域结束 --
获取所有实体磁盘的使用率,过滤虚拟文件系统
DISK_INFO=$(df -P | grep -vE 'Filesystem|tmpfs|devtmpfs|overlay')
ALERT_CONTENT="【服务器磁盘告警】\n服务器IP: $(curl -s ifconfig.me)\n"
遍历检查每个磁盘
while read line; do
USAGE=$(echo $line | awk '{print $5}' | sed 's/%//g')
MOUNT_POINT=$(echo $line | awk '{print $6}')
DEVICE=$(echo $line | awk '{print $1}')
if [ $USAGE -ge $ALERT_THRESHOLD ]; then
ALERT_CONTENT="${ALERT_CONTENT}> 设备:${DEVICE}\n> 挂载点:${MOUNT_POINT}\n> 当前使用率:${USAGE}%\n> 阈值:${ALERT_THRESHOLD}%\n\n"
fi
done <<< "$DISK_INFO"
有超阈值磁盘则发送告警
if [ "$(echo -n $ALERT_CONTENT | wc -c)" -gt 50 ]; then
curl -s -X POST $WEBHOOK_URL -H 'Content-Type: application/json' -d "{
\"msgtype\": \"text\",
\"text\": {
\"content\": \"$ALERT_CONTENT\"
}
}" > /dev/null 2>&1
fi
```
粘贴完成后,修改脚本开头:wq回车保存退出。
执行以下命令给脚本添加可执行权限:
``` chmod +x /usr/local/bin/disk_alert.sh ```
接下来测试脚本是否正常工作:临时把阈值改成1(所有磁盘使用率都会超过1,触发告警),手动运行脚本:
``` /usr/local/bin/disk_alert.sh ```
10秒内如果能在企业微信群收到告警,说明配置正常,然后再把脚本里的阈值改回你需要的数值即可。如果收不到,参考本文最后的排查步骤解决。
配置定时任务让脚本每30分钟自动检查一次磁盘,这个频率足够及时发现问题,也不会消耗服务器资源。
执行以下命令打开crontab定时任务编辑器:

``` crontab -e ```
在文件的最后一行添加以下内容:
``` /30 /usr/local/bin/disk_alert.sh ```
保存退出后,执行以下命令验证定时任务是否添加成功:
``` crontab -l ```
输出内容里能看到刚才添加的那一行说明配置成功,接下来验证crond服务是否正常运行:
``` systemctl status crond ```
如果显示active (running)就是正常,如果未运行,执行以下命令启动并设置开机自启:
``` systemctl start crond && systemctl enable crond ```
如果你需要用邮件接收告警,按照以下步骤修改即可:
CentOS执行:
``` yum install -y mailx curl ```
Debian/Ubuntu执行:
``` apt install -y mailutils curl ```
打开配置文件/etc/mail.rc,在文件末尾添加以下内容,替换成你自己的邮箱信息:
``` set from=your_alert@163.com set smtp=smtp.163.com set smtp-auth-user=your_alert@163.com set smtp-auth-password=your_email_auth_code set smtp-auth=login ```
注意这里的密码是邮箱的
把原来脚本里的curl发送部分替换成以下内容,替换成你的收件邮箱:
``` echo "$ALERT_CONTENT" | mail -s "服务器磁盘告警" your_receive@xxx.com ```
其余步骤和企业微信方案完全一致。
完成以上所有步骤后,磁盘告警就配置完成,后续磁盘使用率超阈值会自动推送通知,不需要人工定期登录检查。












易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图