サーバーマシンにnagiosをインストールしたところ、HTTPサービスで重大なエラーが発生しました。
エラーは
HTTP CRITICAL - Socket timeout after 10 seconds
私 検索 このエラーについて、より長いタイムアウトでcheck_http
を実行するように提案されました。そのため、「check_http」コマンドの横に、ファイル-t 20
のcommands.cfg
を追加しました。 nagiosを再起動しましたが、まだエラーが発生します(新しいタイムアウトの場合)。
次に、いくつかの more を検索しました。エラーはよくあるようですので、他の問題があるのではないかと考え始めます。
自分でcheck_httpを実行してみました:
root@srv$ /usr/libexec/nagios/check_http -H localhost -N -p 80 -t 1
HTTP OK: HTTP/1.1 200 OK - 846 bytes in 0.003 second response time |time=0.003080s;;;0.000000 size=846B;;;0
応答は問題ないようですが、httpについてはほとんど知りません。
手がかりはありますか?
編集:/etc/nagios/objects/commands.cfgから取得したcheck_http
のコマンド定義は
# 'check_http' command definition
define command{
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
}
変数$ HOSTADDRESS $、さらに重要なのは$ ARG1 $の値を確認する方法がわかりません。
次に、サービスの定義は
define service{
use local-service ; Name of service template to use
Host_name localhost
service_description HTTP
check_command check_http
notifications_enabled 1
}
ディストリビューションはslackware 14.0 64ビットです。
チェックコマンドが手動テストと一致しません。
Nagiosが手動でテストしているのと同じ方法でチェックを実行する場合、チェックコマンドの定義方法により、サービス定義は次のようになります。
define service{
use local-service
Host_name localhost
service_description HTTP
check_command check_http!-N -p 80 -t 1
notifications_enabled 1
}
...また、このホストのアドレスとして「localhost」も必要です。
(しかし、1秒のタイムアウトは一種の短いものです。)
$ HOSTADDRESS $ $ HOSTNAME $などに要求する変数は、$ SERVICEXXXX $と同じように、ホスト定義のフィールドADDRESSを要求するようなものです。 $ ARG1 $は!すでに述べたように、コマンド定義で。
この特定のケースでは:
check_command check_http!-N -p 80 -t 1
$ ARG1 $ = -N -p 80 -t 1 //-p 80はhttpのデフォルトであるため、不要です。
これがNagiosマクロの理解に役立つことを願っています。
Check_httpプラグインは、外部IPからWebページをロードしようとするのと同じことを行います。ブラウザーでWebページをロードできること、およびプラグインが構成ファイル(FQDNまたはIP番号)で指定したものとまったく同じホスト定義を使用してコマンドラインで機能することを確認してください。
ローカルホストを実際にチェックしている場合は、127.0.0.1で試してみてください。また、wgetなどを使用して、ローカルホストがそれ自体からWebページをロードすることを本当に許可されていることを確認してください(wget http://127.0.0.1
)。これは他のサイトでも機能します(wget http://www.yourdomain.com
)。