监控集群的磁盘空间使用量,超阀值发送报警邮件

来源:互联网 发布:张鲁农村淘宝网 编辑:程序博客网 时间:2024/06/09 18:58

监控集群的工具有很多,自己用sell实现了一个集群磁盘空间报警发送邮件的小脚本,共享之微笑。一共两个脚本:disk_check_master.sh 和 disk_check_slave.sh。

执行方式:

1、将disk_check_slave.sh分发至集群中的所有机器;

2、在集群中的任意节点上执行disk_check_master.sh,需要两个参数:接收报警邮件的邮箱、报警阀值

注:集群中的所有集群需要配置好无秘钥登陆

以下为代码:

disk_check_slave.sh

#!/bin/bash#将磁盘的使用情况定向至DUSAGE这个文件df -h | grep dev | awk '{print $1"\t"$5}' > DUSAGEhost=`hostname`echo $hostfunction print_usage(){  echo "Usage: disk_check.sh MailAddress DiskUsageThreshold"}if [ $# == 2 ]; then   mail="$1"   threshold=$2else   print_usage   exitfi#echo $mail#echo $threshold#遍历DUSAGE文件while read line   do   disk=`echo $line | awk '{print $1}'`   usage=`echo $line | awk '{print $2}' | sed "s/%//g"`   #echo $usage   if [ "$usage" -gt $threshold ]; then      #echo "error"      #超过阀值的磁盘以及使用率定向到文件MAIL,也就是发送邮件的邮件正文      echo "$host The Disk is full, Disk: $disk , Usage: ${usage}%" >> MAIL   fi   done < DUSAGEif [ -s MAIL ]; then   mail -s "${host} The Disk is full" $mail < MAILfirm -rf DUSAGErm -rf MAIL

disk_check_master.sh

#!/bin/bash#执行需要两个参数:邮件地址 磁盘使用率阀值(整数,例如:阀值为80%,则传入80)function print_usage(){  echo "Usage: disk_check.sh MailAddress DiskUsageThreshold"}if [ $# == 2 ]; then   mail="$1"   threshold=$2else   print_usage   exitfi#将hosts文件中的IP和主机名定向至当前目录的hosts文件cat /etc/hosts | grep std > hostswhile read line   do   host=`echo $line | awk -F' ' '{print $2}'`   #ssh至集群中的机器,并执行每台机器上的disk_check_slave.sh脚本   ssh $host <<EOF   /opt/disk_check_slave.sh $mail $thresholdEOF      done < hostsrm -rf hosts

问题:目前存在一个问题,执行master脚本时会报“Pseudo-terminal will not be allocated because stdin is not a terminal.” 应该是由于传入参数的时候不是标准输入,目前还没找到解决办法,但是不影响脚本的执行。

0 0
原创粉丝点击