web-dev-qa-db-ja.com

NagiosによるURLの監視

複数のWebサイトで共有サーバーを運用しているため、Nagiosで実際のURLを監視するだけでなく、ホストだけでなく、基本的なHTTPサービスを監視するだけでは十分ではないと思います(この質問の最後に、私が想像していることの簡単な説明)。

(注意:私はNagiosをインストールしてCentOSシステムのchroot内で実行していることに注意してください。ソースからnagiosを構築し、yumを使用して必要なすべての依存関係をこのルートにインストールしています...)


最初に 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$
}

(ちなみに、この質問の一番下にあるサービス構成ファイルで私が使用していたものも表示できます)


ただし、この質問を公開する前に、解決策を理解するためにもう1度試してみることにしました。 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)at ./check_url_status line 34. BEGIN failed --compilation aborted at ./check_url_status line 34 。


したがって、この時点で私はあきらめ、いくつか質問があります。

  1. これら2つのプラグインのうち、どちらをお勧めしますか? 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
}
12
David W

物事を複雑すぎて作りすぎていました。

組み込み/デフォルトのプラグインである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$
}
25
David W

URLを監視するより良い方法は、nagiosで使用できるwebinjectを使用することです。

以下の問題は、Perlパッケージのutilsでインストールを試行していないためです。

bash-4.1#./check_url_status -U mydomain.com @INCでutils.pmが見つかりません(@INCには以下が含まれます:

2
Priya

スクリプトプラグインを作成できます。簡単です。次のようなURLを確認するだけです。

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

$ URLは、パラメーターによってスクリプトコマンドに渡すものです。

次に、結果を確認します。399よりも大きいコードを使用している場合は問題があります。それ以外の場合...すべて問題ありません。正しい出口モードとNagiosへのメッセージ。

1
Eduardo Andrés