クラスタのディスク領域使用量を監視し、バルブ値を超えてアラームメールを送信

1966 ワード

クラスタを監視するツールはたくさんあり、自分でsellでクラスタディスク空間警報送信メールの小さなスクリプトを実現し、共有しています.合計2つのスクリプト:disk_check_master.shとdisk_check_slave.sh.
実行方法:
1、disk_check_slave.shはクラスタ内のすべてのマシンに配布される.
2.クラスタ内の任意のノードでdisk_を実行するcheck_master.sh、2つのパラメータが必要です:アラームメールを受信するメールボックス、アラームバルブ値
注意:クラスタ内のすべてのクラスタは、秘密鍵なしのログインを構成する必要があります.
コードは次のとおりです.
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 <

質問:masterスクリプトを実行すると「Pseudo-terminal will not be allocated because stdin is not a terminal.」と報告される問題があります.パラメータを入力するときは標準入力ではないため、まだ解決策が見つかっていませんが、スクリプトの実行には影響しません.