监控硬盘使用率的shell脚本

发布时间:2019-09-20编辑:脚本学堂
监控硬盘使用率的shell脚本

    监控硬盘使用率的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点执行。有异常会发送邮件。每天上班收下邮件检查有无异常。
看看我邮箱收到的内容咯:
sh_disk_monitor

原文作者:李坤山
博客链接:http://blog.163.com/a12333a_li/