监控硬盘使用率的shell/ target=_blank class=infotextkey>shell脚本,供大家学习参考。
硬盘监控脚本,大部分使用df形式然后linuxjishu/13830.html target=_blank class=infotextkey>awk 等方法把使用率格式化成数字去判断,但是发现当分区格式不一样的时候,有时候就会出错,现在的大部分linux主机都有安装nagios,不管是监控还是被监控,nagios上面都有很多我们可以用到的工具,可以用来检测我们的服务器情况。nagios只要安装客户端就可以了。很简单。
这里利用nagios的check_disk命令检测硬盘使用情况。
命令如下:
/usr/local/nagios/libexec/check_disk -l -m
DISK OK - free space: / 6829 MB (74% inode=98%); /www 736465 MB (91% inode=99%); /var 18011 MB (98% inode=99%); /usr 33957 MB (92% inode=99%); /boot 81 MB (87% inode=99%); /dev/shm 8021 MB (100% inode=99%);| /=2358MB;;;0;9688 /www=68082MB;;;0;848336 /var=364MB;;;0;19375 /usr=2786MB;;;0;38744 /boot=11MB;;;0;98 /dev/shm=0MB;;;0;8021
红色字体就是我们每个分区,后面的第一个百分号就是该分区的剩余百分比,嗯,把他格式化出来然后超过一定的数就发邮件通知。后面一段是测试各种分区的读写情况。
shell脚本发送邮件请参考:
http://www.jb200.com/article/2609.html
脚本文件:disk.sh
#!/bin/bash
ERROR=0 //分区是否超过指定大小的标识 0 正常 1 超过
MIX=30 //分区大小小于30%发送邮件
IP=`ifconfig | grep 'inet ' | grep -v '127.0.0.1' | awk -F ' ' '{print $2}'| awk -F':' '{print $2}'| head -n 1` //获取IP
echo "disk free space:">/root/sh/disk.log
df -h >>/root/sh/disk.log //获取分区情况,这个比较直观 邮件正文体现
for i in `/usr/local/nrpe/libexec/check_disk -l -m | awk 'BEGIN{RS = "% inode"} {print}' | cut -d'(' -f 2 | grep -Ev "^$|#|=" ` //获取各个分区的剩余空间百分比
do
if [ "$MIX" -gt "$i" ];then //比较大小
ERROR=1
fi
done
#DISK
for k in `ls / | grep -E "bin|home|sbin|usr|www|etc|mnt|opt|tmp|var"` //测试硬盘读写
do
echo "ok">/"$k"/likunshan.test
if [ "$?" != 0 ];then
ERROR=1
echo "/"$k"___write____________error!!!!!!!!" >>/root/sh/disk.log
else
echo "/"$k"/__write_ok" >>/root/sh/disk.log
fi
cat /$k/likunshan.test >/dev/null
if [ "$?" != 0 ];then
ERROR=1
echo "/"$k"/____read____________error!!!!!!!!" >>/root/sh/disk.log
else
echo "/"$k"/___read_ok" >>/root/sh/disk.log
fi
done
if [ "$ERROR" == 1 ];then
mutt -s "$IP _disk_check" 281450202@qq.com </root/sh/disk.log
fi
放在计划任务里,每天8点执行。有异常会发送邮件。每天上班收下邮件检查有无异常。
看看我邮箱收到的内容咯:
原文作者:李坤山
博客链接:http://blog.163.com/a12333a_li/