序文
通知機能がどのように働くのかということに関しては実に多くの質問を受けました。この文章ではいつ、どのホストやサービスの通知が、誰に送信されるのか正確に説明しようと思います。
いつ通知が発生しますか??
通知を送る決定はサービスチェックやホストチェックのロジックで下されます。ホストやサービス通知は以下のインスタンスで発生します・・・
誰に通知されますか?
各サービス定義はには、どの通知先グループがそのサービスのための通知を受け取るか定義する<contactgroups>オプションがあります。各通知先グループは1つ以上の個々の通知先を含むことができます。Nagiosがサービス通知を発送する時、それは、サービス定義の<contactgroups>オプションの中で指定された任意の通知先グループのメンバーである通知先ごとに通知を送信するでしょう。Nagiosはどんな通知先も1つ以上の通知先グループに属しているだろうと認識します。ですので、なにをするにしても重複した通知先への通知は取り除かれます。
各ホストは1つ以上のホスト・グループに属すことができます。各ホストグループは、どの通知先グループがそのホストグループの中のホストの通知を受け取るか明示する
通知を送るためにどのフィルタが渡されなくてはなりませんか?
どんな通知先に通知するのかという意味ではなく、ホストかサービスの通知を送り出す必要がある。送り出されるに値すると判断される前に有効な通知を渡される様々なフィルタがあります。その時でさえ、特定の通知先にこれらの通知フィルタが通知を許可していないなら、通知はされない。フィルタに渡されるべきものの詳細を見ていきましょう…
プログラム全体のフィルタ:
通知が渡される最初のフィルタはプログラム全体ベースで通知が有効になっているか否かの検査です。これはメイン設定ファイル中にあるenable_notificationsディレクティブで初期決定されるが、実行中にウェブインタフェイスから変更されるかもしれません。 もし通知がプログラム全体で無効になっているなら、ホストやサービス通知は送出されません。プログラム全体ベースで有効にすれば、合格しなければならない他のテストがまだあります…
サービスとホストフィルタ:
最初のフィルタは、ホストかサービスがスケジュールダウンタイム期間中かどうかをチェックするものです。スケジュールダウンタイム中であれば誰にも通知はされません。ダウンタイム中でない場合は、次のフィルタへ渡されます。注意すべきは、ダウンタイムに設定されているホストに関連したサービスの通知は抑圧されるという事です。
次のフィルタはホストやサービスがフラッピングになっているかどうかのチェックをします(フラップ検知を有効にしていた場合)。 サービスやホストがフラッピングを起こしているなら、通知は行われません。 さもなければ次のフィルタに渡されます。
3番目のフィルタはホストやサービスに特定の通知オプションが渡されている事です。 それぞれのサービス定義に含まれているオプションはワーニング状態、クリティカル状態とリカバリ状態に通知を有効にするか否かを決定します。 同様に、それぞれのホスト定義にもホストダウン時、到達不可能時、復旧時に通知を行うかどうかを決定します。 ホストやサービス通知にてこれらのオプションが渡されてなければ、通知は行われません。これらのオプションが渡されいれば、通知は次のフィルタに渡されます…。 注意:固有の問題により送り出された通知があれば、ホストやサービス復旧時にのみ通知が送られます。検知していない問題に対する復旧通知は意味をなしません。
4番目のホストやサービスフィルタは時間帯の検査を通過する事です。 各々のホストとサービス定義に<notification_period>オプションを指定して正しい通知時間を定義できます。指定された時間の範囲以外でのダウンでは、通知は行われません。正しい時間帯内でのダウンであれば、通知は次のフィルタに渡されます…。 注意:期間フィルタを通過していなければ、Nagiosは次に来る正しい通知期間の為にホストやサービスの次の通知を再スケジュールします(もしOKでない状態なら)。 この事により次の正しい時間帯が来た際に速やかに通知先に問題が通知されます。
最後のホストやサービスフィルタには2つの条件の上に成り立ちます。(1)通知が既に過去に同じ部分でのホストやサービスの問題について送り出されている。(2)ホストやサービスが最後の通知が送り出されてから同様の OKでない状態のままになっている。 これら2つの判定基準に満たされれば、Nagiosはホストとサービスの最後の通知が行われてから<notification_interval>オプションを満たす、もしくは超える時間になればチェックし、確かめます。 最後の通知から一定時間を満たさなければ、通知はされません。 もし最後の通知から十分な期間が過ぎるか、2つの判定基準を満たす場合は、通知が送られます!実際にそれを個々の通知先に送るかどうかはもう1セットのフィルタ次第です…。
通知フィルタ:
ここでは通知がプログラムモードフィルタと全てのホストやサービスフィルタに渡され、 Nagiosが通知されるべき人々に通知を始めます。これは各々の通知先が通知を受け取れる事を意味するのでしょうか?残念!各々の通知先はこれを受け取る前にパスされるべき自分のフィルタセットがあります。 注意: 通知フィルタはそれぞれの通知において特有であり、他の通知を受ける人には影響はありません。
それぞれの通知に渡されるべき最初のフィルタは通知オプションです。それぞれのコンタクト定義にてワーニング状態、クリティカル状態、リカバリ状態の為にサービス通知を送り出すかどうかを決定するオプションを含んでいます。 それぞれの通知はホスト通知においてもホストダウン、到達不可能時、復旧時に送出するオプション定義を含んでいます。 もしホストやサービス通知がこれらのオプションを渡されていない場合、通知は警告されません。渡されている場合は、通知は次のフィルタに渡されます…。 注意: ホストやサービス復旧は通知が固有の問題の場合は送出されます。あなたの知らない問題に対してのリカバリ通知は意味をなしません。
各々の通知先が通過しなければならない最後のフィルタは時間帯の検証です。 各々の通知先定義には通知先への正しい通知時間が<notification_period> オプションで設定されます。もし指定された時間枠外に落ちた場合、通知は行われません。指定時間枠内に落ちた場合は通知は行われます。
Nagiosには個別に提供される通知方法は一切ないのでしょうか?
何度か直接Nagiosのコードになぜ個別の通知方法が存在しないのかという事に関する質問(ポケベルとかね)をうけた事がある。答えは簡単 - 全く意味が無いから。 Nagiosの"コア"部分はオールインワンアプリケーションとして設計されていない。 サービスチェックがNagiosのコアに埋め込まれると、ユーザが新たなチェック方法を追加したり、既存のチェックを編集したりする時など、非常に難しくなってしまう。 通知行動の様式と同じです。通知には千の違った方法があり、既に汚い仕事を扱っているたくさんのパッケージがあります、ホイールを再開発して、自転車タイヤに制限しますか?それは外部の実体(すなわち、簡単なスクリプトか完全なメッセージシステム)をはるかに乱雑なものにさせやすいです。ポケットベルと携帯電話の為の通知を扱う事ができるいくつかのメッセージングパッケージが以下のリソース部で記載されています。
通知タイプマクロ
あなたが通知コマンドを作る時、どんなタイプの通知が起こっているのかを考慮する必要があります。$NOTIFICATIONTYPE$マクロは丁度それを特定する文字列が含まれています。以下のテーブルはマクロとそれぞれの説明などの可能な値をリストしています:
値 | 説明 |
---|---|
PROBLEM | サービスやホストが丁度(もしくはまだ)問題状態にあります。 もしこれがサービス通知なら、警告状態、認識不能状態、危険状態である事を意味します。これがホスト通知であれば、ダウンや未到達状態である事を意味します。 |
RECOVERY | ホストやサービスの復旧が起こりました。これがサービス通知であればOK状態に復帰した事を意味します。これがホスト通知であればUP状態に復帰した事を意味します。 |
ACKNOWLEDGEMENT | この通知はホストやサービスの問題通知の認識となります。認識通知はウェブインタフェイス経由で通知先により特定のホストやサービスが初期化されます。 |
FLAPPINGSTART | ホストやサービスがフラッピング状態となりました。 |
FLAPPINGSTOP | ホストやサービスがフラッピング状態ではなくなりました。 |
役に立つ情報
通知を送り出す為にNagiosへ設定できるたくさんの方法があります。どの方法を使うかはあなた次第です。 一度あなたがどんなソフトウェアを必要としてインストールし、使えるようにする前に設定ファイルで通知コマンドを設定しなければなりません。ここにいくつかの可能な通知方法を挙げます。
基本的にコマンドラインから出来る事は全て通知コマンドに仕立てる事ができます。
もしあなたが英数字の通知をポケットベルや携帯にEメールを使って送信する事に興味を覚えたなら、以下に挙げる情報が役立つでしょう。ここには英数字のメッセージをポケットベルや携帯にどのように送るかといった事を含む様々なメッセージングサービスプロバイダのウェブサイトへのリンクがいくつかあります。
もしあなたがポケットベルや携帯へのメッセージ送付に電子メールに代わるものを探しているなら、これらのパッケージを見てみて下さい。 問題が起こった時、モデム経由で通知を出すのにNagiosに関連してそれらを使用する事ができました。あなたは通知の為に電子メールをあてにする必要は無いのです(ネットワークで問題が起こったら電子メールは使え*ない*事を覚えておいて下さい)。 私は実際に自分でこれらのパッケージを試した事はないが、これらを利用してうまくいっているという話を聞いた事はある…
通知の非伝統的な方法十分に試してみたいのなら、警告音を色々いじってみたいかもしれません。監視サーバで(シンセサイザを使って)警告音再生したければ、Festivalを見てみて下さい。監視サーバはそのままに放っておいて、別のマシンで警告音をだすならNetwork Audio System (NAS)やrplayプロジェクトを調べてみてください。
最後に、Nagios homepageのcontribダウンロードセクションにある通知スクリプトはユーザに寄贈されたものです。これらのスクリプトで役に立つものが見つかるかもしれません。たくさんの汚い仕事の世話をして、英数字の通知を送出する必要がある時に…