Icingaを使用して、特定の文字列についてWebサイトを監視しようとしています。コマンドラインからプラグインを実行すると、正常に機能しているように見えますが、Icinga-Webでは、文字列に何を入力しても、常に成功として表示されます。
#Doesn't Work - always returns ok
define service {
Host_name mywebserver
service_description Check Website
servicegroups Websites
check_command check_http!-s "no such string" -H www.mysite.com -u /apath/ -t 7
use generic-service
notification_interval 60 ; set > 0 if you want to be renotified
}
奇妙なことに、/ usr/lib/nagios/plugins/check_httpにあるプラグインを次のように実行すると、期待どおりの結果が得られます。
./check_http -H www.mysite.com -u "/apath/" -s "no such string"
HTTP CRITICAL: HTTP/1.1 200 OK - string 'no such string' not found on...
なぜこれでしょうか?
明らかに、手動テストとIcingaconfは異なります。
Check_httpコマンドの定義を見つけてください。少なくともあなたが思っている方法では、渡されたARGを処理していないことはほぼ確実です。
プラグインパスから判断すると、UbuntuまたはDebianを使用していると思います。 /etc/nagios-plugins/config/http.cfg
を調べてみると、おそらく次のようなものが見つかります。
# 'check_http' command definition
define command {
command_name check_http
command_line /usr/lib/nagios/plugins/check_http -H '$HOSTADDRESS$' -I '$HOSTADDRESS$' -f follow
}
ARG1、ARG2などを使用していないため、-s "no such string" -H www.mysite.com -u /apath/ -t 7
をすべて完全に無視していることに注意してください。
使用する引数を受け入れる新しいコマンドを作成してから、例としてcheck_commandをcheck_http_path_expect!/apath/!"no such string"
のようなものに変更する必要があります。
ドキュメントページを読む マクロとその仕組みを理解する が役立ちます。