shell脚本实现Linux磁盘空间超过阈值自动钉钉机器人告警
具体步骤如下
1、创建钉钉Webhook机器人
安全设置这里我选用服务器出口IP
设定后,只有来自IP地址范围内的请求才会被正常处理
(图片点击放大查看)
(图片点击放大查看)
(图片点击放大查看)
2、编写磁盘巡检脚本
vim /opt/disk_usage_check.sh #!/bin/bash # 设置警告阈值 THRESHOLD=80 # CURRENT_TIME=$(date +"%Y-%m-%d %H:%M:%S") # 获取主机名和IP HOSTNAME=$(hostname) IP=$(hostname -I) # 筛选需要检查的磁盘并进行检查 df -lPh | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output; do used=$(echo $output | awk '{print $1}' | cut -d'%' -f1) partition=$(echo $output | awk '{print $2}') if (( used >= THRESHOLD )); then # 构建payload PAYLOAD=$(cat <<-EOF { "msgtype": "markdown", "markdown": { "title":"Linux服务器磁盘空间告警", "text":" ##### Linux服务器磁盘空间告警 \n > ##### <font color=#67C23A> 【服务器: </font> <font color=#FF0000> $HOSTNAME</font>】 的磁盘空间超过阀值</font> :<font color=#FF0000> $THRESHOLD% </font> \n > ##### <font color=#67C23A> 【服务器IP】</font> :<font color=#FF0000> $IP </font> \n > ##### <font color=#67C23A> 【告警时间】</font> :<font color=#FF0000> $CURRENT_TIME </font> \n > ##### <font color=#67C23A> 【磁盘空间占用高的分区】:<font color=#FF0000> $partition </font> 已使用 <font color=#FF0000>$used%</font> \n > ##### <font color=#67C23A> 该分区具体df -PTh信息如下: </font> \n > ##### <font color=#FF0000> $(df -lPTh | head -n 1) </font> \n > ##### <font color=#FF0000> $(df -lPTh| grep $partition) </font> \n " } } EOF ) # 发送告警 (自行替换钉钉Webhook机器人的URL) curl -H "Content-Type: application/json" -X POST -d "$PAYLOAD" https://oapi.dingtalk.com/robot/send?access_token=XXXXXXXXXX echo $PAYLOAD fi done
3、脚本权限设置及定时任务设置
chmod 777 /opt/disk_usage_check.sh crontab -e 0 */4 * * * /opt/disk_usage_check.sh
(图片点击放大查看)
(图片点击放大查看)
每4个小时巡检一次 可以自行调整频率
4、测试
df -PTh
找一个分区,以/boot分区为例
dd if=/dev/zero of=/boot/test.iso count=1 bs=300M
让/boot分区超过阀值进行测试 然后手动执行
sh /opt/disk_usage_check.sh
测试是否会触发告警
(图片点击放大查看)
5、告警效果如下
(图片点击放大查看)