您的位置:首页 > 运维架构

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

2009-11-23 19:28 429 查看
我们在进行日常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.<findingcc@126.com>

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,而不是全部显示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息