查询linux的硬盘使用情况,定时推送告警通知,这里只监控一个目录
创建脚本,vim check_disk.sh
#!/bin/sh
ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|head -1|tr -d "addr:"?`
avail=$(df -h /data/ | awk '{ print $4 }' | sed -n '2p' )
used=$(df -h /data/ | awk '{ print $5 }' | sed -n '2p' )
putmsg="($ip)硬盘可用$avail已使用$used"
echo $putmsg
error_msg="$putmsg"
msg_body="{\"msgtype\":\"text\",\"text\":{\"content\":\"$error_msg\"}}"
WEBHOOK_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=0c3c0101-836b"
req_msg=$(curl -s -H "Content-Type: application/json; charset=UTF-8" -X POST -d $msg_body $WEBHOOK_URL )
echo "硬盘监控:" $req_msg
查看data目录的磁盘使用情况
df -h /data
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/VG_data-LV_data 39G 30G 75G 81% /data
过滤第1行,获取第2行的值
sed -n '2p'
查看可用,已用,文件目录
df -h /data/ | awk '{ print $4,$5,$1 }'
可用 已用% 文件系统
74G 81% /dev/mapper/VG_data
因为后面推送的文本有空格,导致发送会失败,所以就分开两个字段,最后再拼成字符串
avail=$(df -h /data/ | awk '{ print $4 }' | sed -n '2p' )
used=$(df -h /data/ | awk '{ print $5 }' | sed -n '2p' )
添加判断
df -h /data/ | awk '{ print $5 }' | sed -n '2p' | sed s/%//g
81
if [ $used -ge 80 ]; then
msg=" ($ip) $used%"
echo $msg
#推送通知...
fi
添加定时任务
crontab -e
#每15分钟检查硬盘
*/15 * * * * bash /data/sh/check-disk.sh >/data/sh/logs/check-disk.log
查看定时任务
crontab -l
常用的命令
df -h
查看目录下各文件占用的大小
du -sh *