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

监控集群的工具有很多,自己用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}' > DUSAGE
host=`hostname`
echo $host

function print_usage(){
  echo "Usage: disk_check.sh MailAddress DiskUsageThreshold"
}

if [ $# == 2 ]; then
   mail="$1"
   threshold=$2
else
   print_usage
   exit
fi

#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 < DUSAGE

if [ -s MAIL ]; then
   mail -s "${host} The Disk is full" $mail < MAIL
fi
rm -rf DUSAGE
rm -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=$2
else
   print_usage
   exit
fi
#将hosts文件中的IP和主机名定向至当前目录的hosts文件
cat /etc/hosts | grep std > hosts

while read line
   do
   host=`echo $line | awk -F' ' '{print $2}'`
   #ssh至集群中的机器,并执行每台机器上的disk_check_slave.sh脚本
   ssh $host <<EOF
   /opt/disk_check_slave.sh $mail $threshold
EOF
   
   done < hosts

rm -rf hosts

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值