13

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

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


最初にcheck_urlを見つけましたが、それを/ usr / lib / nagios / libexecにインストールした後、「255のリターンコードが範囲外です」というエラーが発生し続けました。それが私がこの質問を書き始めることに決めたときです(しかし待ってください!私が最初に試すことに決めた別のプラグインがあります!)

check_urlで発生しているのとほぼ同じ問題が発生したこの質問を確認した後、a)このチェックでNRPEを使用していないため、この件について新しい質問を開くことにしました。私がリンクした以前の質問ですが、どれも機能しませんでした。例えば...

./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-Usome-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_status34行目。BEGINfailed--コンパイルは./check_url_status行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
}
4

3 に答える 3

25

私は物事をあまりにも複雑にしていました。

組み込み/デフォルトのプラグイン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$
}
于 2012-02-21T03:10:06.177 に答える
2

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

以下の問題は、perlパッケージutilsがインストールを試みていないという理由によるものです。

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

于 2012-07-25T09:49:27.907 に答える
1

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

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

$ URLは、paramによってスクリプトコマンドに渡すものです。

次に、結果を確認します。399を超えるコードがある場合は問題があります。それ以外の場合は、すべて問題ありません。右の終了モードとNagiosへのメッセージ。

于 2016-01-21T10:44:23.497 に答える