share facebook facebook2 twitter menu hatena pocket slack

2013.06.04 TUE

Nagios(プラグイン)でDNSラウンドロビンの各IPアドレスに対する(HTTP)監視

鈴木 宏康

WRITTEN BY鈴木 宏康

プラグインは下記の通りです。


# cat check_dns_roundrobin
#!/bin/sh

. `dirname $0`/utils.sh
PLUGIN=/usr/lib64/nagios/plugins/check_http

while getopts :H:I: OPT; do
case $OPT in
H) DNSNAME=$OPTARG;;
I) DNSNAME=$OPTARG;;
*) ;;
esac
done

IP_LIST=`dig +noall +answer $DNSNAME
| awk '{ print $5 }'`

if [ "$IP_LIST" = "" ]; then
echo "Can't resolve "$DNSNAME"."
exit $STATE_CRITICAL
fi

for IP in $IP_LIST; do
OPTIONS=`echo $@ | sed s/$DNSNAME/$IP/g`
OUTPUT=`$PLUGIN $OPTIONS`
STATUS=$?
if [ $STATUS -ne $STATE_OK ]; then
echo "$IP $OUTPUT"
exit $STATUS
fi
done

OUTPUT=`echo $IP_LIST | sed "s/n/ /g"`
echo "OK $OUTPUT"
exit $STATUS

仕様は次の通りです。

  • オプションは”check_http”と同じ
  • 一つでも結果がOK以外のIPアドレスがあったら、その時点で終了
  • プラグインは”utils.sh”が存在するディレクトリに配置

実行すると次のようになります。
■失敗(チェックに失敗するIPアドレスが存在)


# ./check_dns_roundrobin -H test.suz-lab.com
192.168.1.1 CRITICAL - Socket timeout after 10 seconds

■成功(すべてのIPアドレスがチェック成功)


# ./check_dns_roundrobin -H test.suz-lab.com
OK aaa.aaa.aaa.aaa bbb.bbb.bbb.bbb ccc.ccc.ccc.ccc ddd.ddd.ddd.ddd

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。