2013年5月13日月曜日

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

スズキです。

プラグインは下記の通りです。
# 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

ELBのノード監視にも使えるかも...
--------
http://www.suz-lab.com

2 コメント:

匿名 さんのコメント...

Visit Our Website Excuse for that I interfere … To me this situation is familiar. Is ready to help.

匿名 さんのコメント...

Hi there, I enjoy reading through your post. I wanted to write
a little comment to support you.

Here is my weblog ... Nuvocleanse Reviews