パッシブサービスチェック


イントロダクション

Nagiosの機能の1つに外部アプリケーションから提示されたチェック結果を処理する機能があります。外部アプリケーションから受付けて処理したサービスチェックのことを"パッシブ"チェックと称しています。パッシブチェックはNagiosによって行われるサービスチェックであるアクティブチェックと対照的です。

なぜパッシブチェックが必要なんでしょう?

パッシブチェックは以下の様な監視サービスに有用です:

パッシブチェックはどのように働きくのでしょう?

パッシブチェックとアクティブチェックの実際の違いはアクティブチェックはNagiosがチェックを開始するのに対し、パッシブチェックは外部アプリケーションがチェックを開始するというただ1点です。外部アプリケーションがサービスチェック(たとえばSNMPトラップやセキュリティアラートなどの非同期通信を受け取っているかとか)を開始すると、そチェックのの"結果"がNagiosの外部コマンドファイルに送られます。

次にNagiosは外部コマンドファイルの中身を処理します。Nagiosはパッシブチェックの結果を後処理へのキューへ入れます。アクティブチェックの結果を溜めるのと同じ様にがパッシブチェックからのキューも溜められます。

Nagiosはサービス修復イベントを周期的に実行し、キューにあるサービスチェック結果をスキャンします。それぞれのサービスチェックの結果は、アクティブチェックでもパッシブチェックでも同じように処理されます。サービスチェックのロジックはこの両方のチェックのタイプでも同じです。これはアクティブチェック、パッシブチェックの両方の結果で同じハンドリング方法を提供すると言うことです。

どうやって外部アプリケーションはサービスチェックの結果を登録するのでしょう?

外部アプリケーションはPROCESS_SERVICE_CHECK_RESULT外部コマンドを使って外部コマンドファイルに結果を登録することができます。

そのコマンドのフォーマットは以下の通りです:

[<timestamp>] PROCESS_SERVICE_CHECK_RESULT;<host_name>;<description>;<return_code>;<plugin_output>

そして…

Nagiosにサービスチェックを登録するには、サービス オブジェクト設定ファイルにそのサービスがすでに定義されていなくてはならないことに注意してください! Nagiosは(再)起動して、定義されていないサービスチェックの結果はすべて無視します。

もし特定のサービスだけパッシブチェックを使用したい場合(例:アクティブチェックがうまくいかない場合とか)は、サービス定義のactive_checks_enabledディレクティブを0に設定してください。 この設定ではNagiosが恒久的にサービスをアクティブチェックするのを防ぎます。サービス定義のpassive_checks_enabledが1になっているか確認してください。そうなっていなければNagiosはパッシブチェックをを処理しません!

Nagiosにパッシブサービスチェックの結果を登録するサンプルのシェルスクリプトが、volatileサービスドキュメントの中にあります。

リモートホストからパッシブチェックの結果を登録する

Nagiosにパッシブサービスチェックを送るアプリケーションが同じホストにある場合は、単純に上のアウトラインに沿っ手外部コマンドファイルに直に結果を書き出せば良いですが、リモートホストにアプリケーションがある場合は簡単にはいきません。Nagiosのホストにリモートホストからパッシブチェックの結果を送信するために、nscaアドオンを開発しました。このアドオンはNagiosホストでデーモンとして、リモートホストでクライアントとして実行されます。そのデーモンはリモートホストのクライアントからの接続をリスンし、登録されてくる結果を基本的な確認を行い、(上で説明したように)外部コマンドファイルに直接書き込みます。ncsaのより詳しい情報はこちらです・・・

アクティブとパッシブチェックの両方を使用する

もし、センターサーバでパッシブチェックのみ受け付ける(アクティブチェックは処理しない)分散監視環境を構築しているのでなければ、アクティブとパッシブの両方のチェックがおそらく使えるでしょう。前述したように、アクティブチェックは周期的にチェックを行うのにより適しています(FTPやウェブサーバなどが挙げられます)が、パッシブチェックは様々な間隔で発生する非同期のイベントをハンドリングするのに適しています(セキュリティアラートなど)。

下の図はアクティブとパッシブチェックの両方がネットワークリソースをどのように環視しているか表したものです(画像をクリックすると大きな図が見られます)。

右のオレンジの雲のような図がNagiosにパッシブチェックの結果を登録している外部アプリケーションです。一方の外部アプリケーションはNagiosと同じホストにあり、コマンドファイルに直に結果を書いています。もう一方のアプリケーションはリモートホストにあり、ncsaクライアントとデーモンを使用してパッシブチェックの結果をNagiosへ転送しています。

左側の図がNagiosが稼働してるアクティブサービスチェックを表しています。また、それにはロカールリソース(ディスク使用率など)と"公開された"リモートホストのリソース(ウェブサーバやFTPサーバなど)、ししてリモートの"プライベート"のリソース(リモートホストのディスク使用量、CPU使用率)のそれぞれをどのように環視しているかということも表しています。この例では、リモートホストのプライベートリソースは実際にはリモートホスト上でプラグインを実行する機能を持ったnrpeアドオンを使用してチェックされています。