クラスタのディスク領域使用量を監視し、バルブ値を超えてアラームメールを送信
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
disk_check_master.sh
質問:masterスクリプトを実行すると「Pseudo-terminal will not be allocated because stdin is not a terminal.」と報告される問題があります.パラメータを入力するときは標準入力ではないため、まだ解決策が見つかっていませんが、スクリプトの実行には影響しません.
実行方法:
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.」と報告される問題があります.パラメータを入力するときは標準入力ではないため、まだ解決策が見つかっていませんが、スクリプトの実行には影響しません.