序論
たいていの場合、Nagiosを使ってホストやサービスを定期的なスケジュールでアクティブ・チェックをします。 アクティブ・チェックは、毎回、装置やサービスに状態情報を要求することに使います。 Nagiosは、またアクティブ・チェックの代わりにホストやサービスのパッシブ・チェックを行う方法もあります。 パッシブ・チェックの主な特徴は以下の通りです:
- パッシブ・チェックは外部のプリケーション/プロセスから実行されます。
- パッシブ・チェックの結果は、Nagiosに渡されます。
アクティブ・チェックとパッシブ・チェックの主な違いはアクティブ・チェックがNagiosによって開始されて、実行されるということです、それに対してパッシブ・チェックは外部のアプリケーションで実行されます。
パッシブ・チェックの用途
パッシブ・チェックの役立つサービス監視は以下の通りです。
- 非同期の特性を持つものは定期的なスケジュールでの状態チェックでは有効に監視できません。
- 監視ホストからファイアーウォールを通しての動的にチェックは出来ません。
非同期サービス例としてSNMPでのトラップとセキュリティ・アラームの監視があります。 決まった時間内にどのくらいの(あればですが)トラップやアラームを受け取るかは分からないので、その状態を数分間毎にモニタするのは現実的ではありません。 パッシブ・チェックは、分散系や冗長系のモニタリングの導入設定でも使われます。
パッシブ・チェックはどう働いているか。
ここに、パッシブ・チェックの詳細があります…
- 外部のアプリケーションがホスやサービスの状態をチェックします。
- 外部のアプリケーションは外部のコマンド・ファイルにチェックの結果を書きます。
- 次にNagiosは外部コマンドファイルを読み、全パッシブ・チェック結果を後の処理の待ち行列に並べます。 また、アクティブ・チェックから結果を保存するのに使用されるのと同じ待ち行列は、パッシブ・チェックからの結果を保存するのにも使用されます。
- Nagiosは定期的にチェック結果確認イベントを実行して、チェック結果待ち行列をスキャンします。 チェックがアクティブかパッシブかにかかわらず待ち行列で見つけられるそれぞれのサービス・チェック結果は、同じ方法で処理されます。 Nagiosは通知、チェック結果情報によるログ警戒などを出すかもしれません。
アクティブ、パッシブ・チェック結果の処理は本質的には同じです。 これはNagiosと外部アプリケーションのステータス情報の境界なき統合を可能とします。
パッシブ・チェックを可能にします。
Nagiosでアクティブ・チェックを可能にするために、以下をする必要があります:
- accept_passive_service_check を1に設定
- ホストとサービス定義の passive_checks_enable 指示を 1 に設定します。
全体に渡ってパッシブ・チェックを行いたい場合 accept_passive_service_checks を 0 に設定してください。 わずかいくつかのホストかサービスのためにパッシブ・チェックを無効にしたいならホスト、そして/または、サービス定義で passive_checks_enabled を使って行ってください。
パッシブ・サービス・チェック結果の引渡し。
外部のアプリケーションは、PROCESS_SERVICE_CHECK_RESULT 外部コマンドが外部コマンド・ファイルに書くことによって、パッシブ・サービス・チェック結果をNagiosに渡すことができます。
コマンドの形式は以下の通りです:
[<timestamp>] PROCESS_SERVICE_CHECK_RESULT;<host_name>;<svc_description>;<return_code>;<plugin_output>
ここで…
- timestamp サービス・チェックをおこなった time_t形式(UNIXエポック:1970年1月1日以降の秒数)の時間です。 右のブラケットの後にシングルスペースに注意します。
- host_name is はサービス定義におけるサービスに関連しているホストの省略名です。
- svc_descriptionはサービス定義における指定されるとしてのサービスの記述です。
- return_code はチェックの復帰コードです。 (0 = OK 1: WARNING:注意 2 = CRITICAL:重大 3 = UNKNOWN:未定)
- plugin_outputはサービス・チェックのテキスト出力です。 (すなわち、プラグイン出力)
注意: それにパッシブ・チェック結果を渡す前に、Nagiosにサービスを定義しなければなりません! Nagiosはそれが設定される以前のチェック結果は、Nagiosの起動(再起動)で無視されます。
パッシブ・チェックの結果をNagiosに渡すシェルスクリプト例は、不安定なサービスの項にあります。
パッシブ・ホスト・チェック結果を渡します。
外部のアプリケーションは、PROCESS_HOST_CHECK_RESULTの外部のコマンドが外部のコマンド・ファイルに書くことによって、パッシブ・ホスト・チェック結果をNagiosに提出できます。
コマンドの形式は以下の通りです:
[<timestamp>] PROCESS_HOST_CHECK_RESULT;<host_name>;<host_status>;<plugin_output>
ここで…
- timestamp サービス・チェックをおこなった time_t形式(UNIXエポック以降の秒数)の時間です。 右のブラケットの後にシングルスペースに注意します。
- host_nameはホストの略称です。 (ホスト定義で定義されるように)
- host_statusi はホストの状態です。 (0 = 復旧 1: DOWN:停止 2 = UNREACHABLE:つながらない )
- plugin_outputi はホスト・チェックのテキスト出力です。
注意: それのためにパッシブ・チェック結果を渡す前に、Nagiosでホストを定義しなければなりません! Nagiosが起動(再起動)前に、設定されていなけらば、ホストのすべてのチェック結果を無視します。
パッシブ・チェックとホスト状態
アクティブ・ホスト・チェックと違ってNagiosは(省略形)でDOWNかUNREACHABLE:到達できるか否か分からないホストにパッシブ・チェックを実行しません。 むしろNagioshは、パッシブ・チェックの結果を使って実際の状態を知ります。そして 到達性のロジックを使ってホストの実際の状態確認は行いません。 親子関係が違っている環境でリモートホストからパッシブ・チェックを実行するか分散監視設定を行った場合に問題が起こります。 Nagiosに translate_passve_host_checks 変数を使ってDOWN/UNREACHABLEのパッシブ・チェック結果の適切な状態を通知することが出来ます。 ここでこれがどう働くかに関する詳しい情報を見つけることができます。
注意: passive_checks_are_soft オプションが enable にするとパッシブ・ホスト・チェックは安定(HARD)状態で使われます。
リモート・ホストからパッシブ・チェック結果を渡します。
Nagiosと同じホストの上にあるアプリケーションが、ホストやサービスのパッシブ・チェック結果を送る場合、上で記述された様に、単に直接外部のコマンド・ファイルに結果を書きます。 しかしながら、リモート・ホストにおけるアプリケーションはそれほど容易にできません。
リモート・ホストがパッシブ・チェック結果を監視ホストに送るのを許可するために、私はNSCA addonを開発しました。 NSCA addonは Nagios で実行するデーモンと リモートホストで実行するクライアントからなります。 デーモンは、リモートクライアントからの情報を聞いて、渡された通常の結果正当性を確認を行います。そしてそれから結果を外部コマンドファイルに書き出します(上記) ここでNSCA addonに関する詳しい情報を見つけることができます。
参照: アクティブ・チェック, サービス・チェック, ホスト・チェック