web-dev-qa-db-ja.com

文字列のIcingaモニターWebサイト

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...

なぜこれでしょうか?

1
Daniel

明らかに、手動テストと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"のようなものに変更する必要があります。

ドキュメントページを読む マクロとその仕組みを理解する が役立ちます。

1
Keith