簡體   English   中英

使用Nagios監控URL

[英]Monitoring URLs with Nagios

我正在嘗試使用Nagios來監控實際的URL,而不僅僅是主機,因為我在運行帶有多個網站的共享服務器時,我認為它不足以監控基本的HTTP服務(我包括在內這個問題的底部是我想象的一個小解釋。

(旁注:請注意我在CentOS系統上的chroot中安裝並運行了Nagios。我從源代碼構建了nagios,並使用yum在這個root中安裝了所有需要的依賴項等等。)


我首先找到了check_url ,但是在將它安裝到/ usr / lib / nagios / libexec后,我不斷得到“返回代碼255超出界限”錯誤。 就在那時我決定開始寫這個問題(但是等等!還有另一個插件,我決定先試試!)

在回顧了這個問題時 ,我遇到了幾乎與check_url相同的問題,我決定打開一個關於這個問題的新問題因為a)我沒有使用NRPE這個檢查b)我嘗試了對這個問題的建議我之前鏈接的問題,但沒有一個有效。 例如...

./check_url some-domain.com | echo $0

返回“0”(表示檢查成功)

然后我按照Nagios Suppor t上的調試說明創建一個名為debug_check_url的臨時文件,並在其中加入以下內容(然后由我的命令定義調用):

#!/bin/sh
echo `date` >> /tmp/debug_check_url_plugin
echo $*  /tmp/debug_check_url_plugin
/usr/local/nagios/libexec/check_url $*

假設我沒有處於“調試模式”,我運行check_url的命令定義如下(在command.cfg中):

'check_url' command definition
define command{
       command_name    check_url
       command_line    $USER1$/check_url $url$
}

(順便說一句,你也可以在我的服務配置文件中查看我在這個問題的最底部使用的內容)


然而,在發布這個問題之前,我決定再一次嘗試找出解決方案。 我找到了check_url_status插件,並決定給它一個鏡頭。 要做到這一點,這就是我做的:

  1. mkdir / usr / lib / nagios / libexec / check_url_status /
  2. 同時下載了check_url_status和utils.pm
  3. 根據check_url_status插件頁面上的用戶評論/評論,我將“lib”更改為/ usr / lib / nagios / libexec /的正確目錄。
  4. 運行以下命令:

    ./check_user_status -U some-domain.com。 當我運行上面的命令時,我不斷收到以下錯誤:

bash-4.1#。/ check_url_status -U mydomain.com找不到@INC中的utils.pm(@INC包含:/ usr / lib / nagios / libexec / / usr / local / lib / perl5 / usr / local / share / perl5 / usr / lib / perl5 / vendor_perl / usr / share / perl5 / vendor_perl / usr / lib / perl5 / usr / share / perl5)在./check_url_status第34行.BEGIN失敗 - 編譯在./check_url_status第34行中止。


所以在這一點上,我放棄了,並提出了幾個問題:

  1. 你會推薦這兩個插件中的哪一個? check_url或check_url_status? (在閱讀了check_url_status的描述后,我覺得這個可能是更好的選擇。你的想法?)
  2. 現在,我如何使用您推薦的插件解決我的問題?

在這個問題的開頭,我提到我會對我想象的內容做一個小小的解釋。 我有一個名為services.cfg的文件,這是我所有服務定義所在的位置(想象一下!)。

以下是我的服務定義文件的片段,我寫的是使用check_url(因為當時我認為一切正常)。 我將為我想要監控的每個URL構建一個服務:

###
# Monitoring Individual URLs...
#
###
define service{
        host_name                       {my-shared-web-server}
        service_description             URL: somedomain.com
        check_command                   check_url!somedomain.com
        max_check_attempts              5
        check_interval                  3
        retry_interval                  1
        check_period                    24x7
        notification_interval           30
        notification_period             workhours
}

我讓事情變得太復雜了。

內置/安裝的默認插件check_http可以實現我想要的功能和更多功能。 這是我如何完成這個:

我的服務定義:

  define service{
            host_name                       myers
            service_description             URL: my-url.com
            check_command                   check_http_url!http://my-url.com
            max_check_attempts              5
            check_interval                  3
            retry_interval                  1
            check_period                    24x7
            notification_interval           30
            notification_period             workhours
    }

我的命令定義:

define command{
        command_name    check_http_url
        command_line    $USER1$/check_http -I $HOSTADDRESS$ -u $ARG1$
}

監控網址的更好方法是使用可與nagios一起使用的webinject。

以下問題是由於您沒有perl包utils嘗試安裝它的原因。

bash-4.1#。/ check_url_status -U mydomain.com無法在@INC中找到utils.pm(@INC包含:

你可以制作一個腳本插件。 這很容易,您只需要檢查URL,例如:

`curl -Is $URL -k| grep HTTP | cut -d ' ' -f2`

$ URL是您通過param傳遞給腳本命令的內容。

然后檢查結果:如果你的代碼大於399你就有問題,否則......一切都OK! 這是一個正確的退出模式和Nagios的消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM