Nagiosの設定をつらつらと書いていたときに、Serviceのチェックはしたいけれど、IPアドレスにPingを打って死活チェックして欲しくないケースに直面した。例えば、ICMPパケットが通らないけど、HTTPは通るようなネットワーク(例えば、イントラネットからルーターを経由して、データセンターに置いてあるWebサーバを監視したいけど、そのルータがご丁寧にICMPパケットを落としてくれる設定になっていていじれない…みたいな)を経由して、Webサーバの死活チェック(とレスポンスタイムのチェック)をやりたいようなケースとか。こんなケースでHostCheckすると、ネットワークが原因でPingのレスポンスが帰ってこないもんだから、DOWNと判断してくれるのでうっとうしいなぁと。

で、Nagiosのドキュメントを読んでみると、max_check_attemptsの項目のところにさりげなく

To bypass the host check, just leave the check_command option blank.

って書いてあったが、blankにしても、「blank」って書いても設定ファイルチェックでエラーが検出されて、さっぱり先にすすまない(汗)ので、仕方ないので「check_dummy」プラグインを使って、とりあえずOKを返すコマンドを自作した。

とりあえず、こんなコマンドを定義。

# ‘return_ok’ command definition

define command{

command_name return_ok

command_line $USER1$/check_dummy 0

}

define host{

use linux-server

host_name HOGE

alias HOGE

address XXX.XXX.XXX.XXX

check_command return_ok

max_check_attempts 1

}

みたいな感じで呼び出してあげると、HostCheckの結果はとりあえずOKになる。こんな対処でいいのか疑問はあるけれど、とりあえず、ま、いっか(汗)

*1:例えば、イントラネットからルーターを経由して、データセンターに置いてあるWebサーバを監視したいけど、そのルータがご丁寧にICMPパケットを落としてくれる設定になっていていじれない…みたいな