Monitoring

Icinga 字元串監控網站

  • November 6, 2013

我正在嘗試使用 Icinga 來監視特定字元串的網站。當我從命令行執行外掛時,它似乎工作正常,但在 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...

為什麼會這樣?

顯然,您的手動測試和您的 Icinga conf 是不同的。

去尋找你對 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"的內容,例如。

閱讀文件頁面了解宏及其工作方式會有所幫助。

引用自:https://serverfault.com/questions/522289