磁盘空间监控脚本--简约而不简单

         我们在进行日常linux服务器管理的时候,为了保证服务器程序运行正常和服务产生的数据不丢失,磁盘空间一定要是足够用的,一般会去做一些定期的(crond)清理来做保障。但即使是这样,对于大型的应用服务,由于数据量产生非常大,所以做磁盘空间使用情况的监控报警就显得尤为重要了。
 
         实际的环境中往往使用一台服务器做批量管理的枢纽,通过这台机器进行几百台、甚至上千台应用服务器的管理操作,这样的服务器我们一般称为中控机。本脚本便是采用按时运行于中控机进行大量服务器的磁盘监控工作。
 
         下面这段shell脚本程序是我在工作中根据实际需要写的,看上去很简单,但却不失其功能。
 
#!/bin/bash
#Used for reporting the disk space usage of the apl servers by the means of mail.
#Written on ****
#Author: Levin.<[email protected]>

IP=`cat /home/admin/server-iplist`
MAILLIST=`cat /home/admin/maillist.sp`
PERCENT=80

for i in $IP
do
    DATE=$(date +%F--%T)
    echo "******$DATE******"
    echo $i
    /usr/bin/ssh  ${i#*--->} "df"|grep ^/|sed 's/%//g'|awk -v p=$PERCENT '{if($5>p)printf"%-16s    %-6s\n",$NF,$(NF-1)"%"}'
    echo
done|mail -s "SERVER磁盘空间使用情况报表(超过${PERCENT}%的)" -c $MAILLIST
 
IP列表server-iplist的格式如下:
SERVERNAME1--->对应的ip 
SERVERNAME2--->对应的ip
SERVERNAME3--->对应的ip
SERVERNAME4--->对应的ip
.
.
.
 
结果会email给指定的收件人,邮件内容为如下显示:
 
******2009-11-09--13:01:01******
SERVERNAME1--->对应的ip
/                 86%  
 
******2009-11-09--13:01:05******
SERVERNAME2--->对应的ip
/home/backups     96%  
 
******2009-11-09--13:01:06******
SERVERNAME3--->对应的ip
/home/backups     85%  
/var/                       82%
 
******2009-11-09--13:01:06******
SERVERNAME4--->对应的ip
/opt/     80%  
.
.
.
 
优化版本:
#!/bin/bash
#Used for reporting the disk space usage of the HP180 servers by the means of mail.
#Written on xxxx.
#Author: Levin.

IP=`cat /home/admin/server-iplist`
MAILLIST=`cat /home/admin/maillist.sp`
PERCENT=80

for i in $IP
do
TIME=$(date +%F--%T)
ssh    ${i#*--->} "
num=(\$(df|grep ^/|sed 's/%//g'|awk -v p=$PERCENT '{if(\$5>p)print \$5}'))
if [[ \${num[0]} -gt    $PERCENT ]];then
echo \"===$TIME===\"
echo \"$i\"
df|grep ^/|sed 's/%//g'|awk -v p=$PERCENT '{if(\$5>p)printf\"%-16s    %-6s\n\",\$NF,\$(NF-1)\"%\"}'
echo
fi
"
done |mail -s "服务器磁盘空间不足!!" -c $MAILLIST
此版本在原来的基础上实现了只打印硬盘使用超过预期的ip,而不是全部显示。
 

本文出自 “发现生命中的美丽” 博客,谢绝转载!

你可能感兴趣的:(linux,shell脚本,awk,实例,监控)