赞
踩
作为一名主机运维工程师,日常工作中我们每天都需要巡检服务器的运行情况,包括服务器的网络通断性、磁盘利用率、服务进程等内容。为了减少工作量我们可以通过编写shell脚本,实现服务器的批量巡检。写好脚本之后我们可以设置定时任务,将巡检结果邮件发送给自己就OK啦。我们查看磁盘利用率就是使用df -h的命令,可以显示各磁盘分区的使用情况,此脚本就是基于此命令基础实现。
脚本主要设计思路是通过ssh免密远程登录待巡检主机,并执行df -h命令。通过awk命令过滤中磁盘利用率列值并与阈值进行比较,超过阈值的值记录下来。配置定时任务执行脚本,将巡检结果邮件告知。
脚本包含文件如下:
脚本主体内容如下:
#!/bin/bash #scriptname: disk_check.sh #author: wuhs #description: 此脚本用于检查linux服务器的磁盘使用率,超过预警阈值则邮件告警 #version: v1.0 #参数定义 #脚本工作目录 resultfiledir=/root/scripts/xunjian/diskinfo #待巡检服务器列表 hostlist="/root/scripts/xunjian/diskinfo/hosts.txt" #告警阈值 warnsize=95 #切换到工作目录,定时任务执行时默认在bash路径下执行,所以需要在脚本中切换路径 curdir=`cd -P $(dirname $0); pwd` cd $curdir #删除上一次执行记录,也可以执行完成脚本后删除,执行前删除是方便收到告警时人工核查 rm -rf $resultfiledir/df.txt #通过while循环读取待巡检服务器列表 while read line do #获取带巡检主机名或者IP地址,建议主机名 host=`echo $line | awk '{print $1}'` #获取待巡检主机ssh端口,考虑部分主机考虑安全修改了ssh服务端口 port=`echo $line | awk '{print $2}'` #将当前巡检的主机写入巡检结果df.txt文件 echo "$host 磁盘检查结果" >> $resultfiledir/df.txt #将获取到的df -h数据写入到df.txt文件,记得采用追加写入的方式 ssh $host -p $port -n df -h >> $resultfiledir/df.txt done <"$hostlist" #获取磁盘使用率列值 list=`cat df.txt |awk '{print int($5)}'` rm -rf ls.txt #使用率值与阈值进行比较 for val in $list do if [ "$val" -gt "$warnsize" ];then #过滤大于阈值的磁盘结果行和主机名记录行 cat df.txt |egrep "磁盘检查|$val%" |egrep -B 1 "$val%" >> ls.txt fi done #保证顺序的情况下删除重复项 awk '!a[$0]++' ls.txt > tmp.txt rm -rf ls.txt mv tmp.txt ls.txt #发送告警邮件 if [ -s ls.txt ]; then mailx -s "有超过磁盘使用率告警阈值$warnsize %的磁盘,请检查!" 1234567qq@qq.com < ls.txt else if [ $(date +%H) -eq 09 ];then mailx -s "磁盘使用率检查结果正常!" 1234567qq@qq.com < df.txt fi fi
[root@s146 diskinfo]# sh disk_check.sh
[root@s146 diskinfo]# ll
total 16
-rw-r–r-- 1 root root 1098 Oct 26 17:46 df.txt
-rwxr–r-- 1 root root 1432 Oct 26 17:17 disk_check.sh
-rw-r–r-- 1 root root 16 Oct 26 16:47 hosts.txt
-rw-r–r-- 1 root root 150 Oct 26 17:46 ls.txt
[root@s146 diskinfo]# cat ls.txt
s146 磁盘检查结果
/dev/sda1 1014M 207M 808M 21% /boot
s166 磁盘检查结果
/dev/mapper/centos-root 38G 11G 27G 30% /
[root@s146 diskinfo]# crontab -l
####磁盘使用率监测定时任务####
12 6-22/1 * * * /root/scripts/xunjian/diskinfo/diskinfo_check.sh &> /tmp/diskinfo_check.log
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。