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