通知のエスカレーション
目次
導入 Introduction
Nagiosはホストやサービスの通知のエスカレーションに対応しています。サービスやホストの通知のエスカレーションはオブジェクト設定ファイル のホストのエスカレーション とサービスのエスカレーション を定義することで設定できます。
Note:Note.jpg注意:以下に掲載する例はすべてサービスのエスカレーション定義ですが、ホストのエスカレーションも同じ要領で可能です。もちろんサービスの記述をホストに置き換えてください。
いつエスカレーションされるのか? When Are Notifications Escalated?
通知のエスカレーション送信する現在の通知が1つあるいはそれ以上のエスカレーションの定義にマッチした場合にのみ実施されます。もし、ホストやサービスの通知に有効なエスカレーションの定義が無い場合、そのホストやサービス定義で指定した通知先に送られます。以下にサンプルを掲載します:
define serviceescalation{ host_name webserver service_description HTTP first_notification 3 last_notification 5 notification_interval 90 contact_groups nt-admins,managers }
define serviceescalation{ host_name webserver service_description HTTP first_notification 6 last_notification 10 notification_interval 60 contact_groups nt-admins,managers,everyone }
このエスカレーション定義には”穴”があることに注意してください。特に、通知の1と2はエスカレーション定義にハンドルされておらず、10より上もありません。最初と2回目の通知と10より後の通知はサービス定義無いの通知先グループに指定されたデフォルト 値が使用されます。私が使用している全ての例の中で、サービス定義の為のデフォルトコンタクトグループをnt-admins と呼んでいると仮定します。
通知先グループ Contact Groups
通知のエスカレーションが定義する際に気に留めないといけないのは"低"エスカレーション(エスカレーションの通知番号の低い範囲)に定義した通知先グループを"高"エスカレーション定義にも含めるべきということです。障害について通知を受けた人はエスカレーション後も継続して通知を受けることを保障するべきです。 以下に例を挙げます。
define serviceescalation{ host_name webserver service_description HTTP first_notification 3 last_notification 5 notification_interval 90 contact_groups nt-admins,managers }
define serviceescalation{ host_name webserver service_description HTTP first_notification 6 last_notification 0 notification_interval 60 contact_groups nt-admins,managers,everyone }
最初の(あるいは"最低")エスカレーションレベルにはnt-admins と managers 通知先グループが含まれています。最後の(あるいは"最高")エスカレーションレベルにはnt-admins , managers そして everyone という通知先グループが含まれます。 nt-admins は両方のエスカレーションレベルに含まれている点に注意してください。これは最初の2回のサービス障害の通知が送信された後、障害が依然として続いてる場合継続してnt-adminsに通知を送るということです。通知先 managers も" 低"エスカレーション定義で最初に現れます-managersは3回目の障害の通知で初めて通知が行われます。そして5回目の通知を実施した後も障害が継続している場合managersにも継続して通知が送られます。それは、"高"エスカレーション定義に含まれているからです。
エスカレーション範囲のオーバーラップ Overlapping Escalation Ranges
通知のエスカレーション定義は通知の範囲をオーバーラップして定義できます。以下に例を掲載します:
define serviceescalation{ host_name webserver service_description HTTP first_notification 3 last_notification 5 notification_interval 20 contact_groups nt-admins,managers }
define serviceescalation{ host_name webserver service_description HTTP first_notification 4 last_notification 0 notification_interval 30 contact_groups on-call-support }
上記の例では:
- nt-admins と managers 通知先は3回目の通知を受けます。
- すべての3つの通知先グループは4,5回目の通知を受けます。
- on-call-support は6回目(より上)の通知を受け取ります。
復旧通知 Recovery Notifications
エスカレーションした際の復旧通知は障害通知とわずかに異なります。以下に例を掲載します:
define serviceescalation{ host_name webserver service_description HTTP first_notification 3 last_notification 5 notification_interval 20 contact_groups nt-admins,managers }
define serviceescalation{ host_name webserver service_description HTTP first_notification 4 last_notification 0 notification_interval 30 contact_groups on-call-support }
もし、3回目の通知後、このサービスの復旧通知が行われた場合誰が通知を受けるでしょうか? 復旧通知は実際には4回目の通知となります。しかし、エスカレーションのコードは3回目の障害通知を誰が受けたか認識するようなスマートなコードになっています。この場合、nt-admins と managers コンタクトグループに復旧の通知が行われます。
通知間隔 Notification Intervals
エスカレーションされた通知の通知頻度をホストやサービスの notification_interval で設定した通知間隔より変更することが出来ます。 以下に例を掲載します:
define serviceescalation{ host_name webserver service_description HTTP first_notification 3 last_notification 5 notification_interval 45 contact_groups nt-admins,managers }
define serviceescalation{ host_name webserver service_description HTTP first_notification 6 last_notification 0 notification_interval 60 contact_groups nt-admins,managers,everyone }
この例では、このサービスのデフォルトの通知間隔は240分です(この定義はサービス定義にあります)。このサービスの通知が3回目、4回目、5回目でエスカレーションされた時、通知と通知の間のインターバルは45分になります。さらに6回目以降は2つ目のエスカレーション定義の60分が使用されます。
特定のホストグループやサービスのエスカレーション定義がオーバーラップしているあるいは、複数のホストグループのメンバーである可能性があるので、 Nagiosはエスカレーション定義がオーバーラップしている際にどのように通知間隔を取るのか決定しなければなりません。特定の通知で複数の有効なエスカレーション定義があるどんな場合でも、Nagiosは通知間隔の最小値を取ります。以下に例を挙げます:
define serviceescalation{ host_name webserver service_description HTTP first_notification 3 last_notification 5 notification_interval 45 contact_groups nt-admins,managers }
define serviceescalation{ host_name webserver service_description HTTP first_notification 4 last_notification 0 notification_interval 60 contact_groups nt-admins,managers,everyone }
ここに2つのエスカレーション定義があり4番目と5番目の通知はオーバーラップしています。これらの通知に関してはNagiosは通知間隔として45分を採用します。なぜなら、これはこれらの通知に関する有効なエスカレーション定義の中の通知間隔の最小値だからです。
通知間隔について最後の1点は、通知間隔の設定が0の場合の処理です。間隔が0の場合、Nagiosはそのエスカレーション定義の間では最初の通知のみ実施するという意味になります。そのホストグループあるいはサービスの移行の通知はスキップされます。以下に例を示します:
define serviceescalation{ host_name webserver service_description HTTP first_notification 3 last_notification 5 notification_interval 45 contact_groups nt-admins,managers }
define serviceescalation{ host_name webserver service_description HTTP first_notification 4 last_notification 6 notification_interval 0 contact_groups nt-admins,managers,everyone }
define serviceescalation{ host_name webserver service_description HTTP first_notification 7 last_notification 0 notification_interval 30 contact_groups nt-admins,managers }
上の例では、サービスの障害通知の最大値は4です。なぜなら、2番目のエスカレーションで通知間隔が0に設定されており、これは(4番目とそれ以降の通知を)1つだけ送り、以降の通知は送らないということを示しています。これは3番目のサービスエスカレーションはまったく意味がないということになり、4番目の通知以降は通知を行いません。
時間帯制限 Time Period Restrictions
通常の状態では、エスカレーションではホストやサービスの通知は普通にどんな時間でも送付されます。この"通知時間ウインドウ"はホスト あるいはサービス のオブジェクト定義の notification_period ディレクティブで決定されます。
オプションでエスカレーションの制限、つまり特定の時間帯でしかエスカレーションしないようにホストやサービスのエスカレーション定義のescalation_period を使用して設定できます。もしescalation_period でtimeperiodディレクティブで定義した時間帯を設定すると、そのエスカレーションはそのホストやサービスの"通知時間ウインドウ"の範囲内で利用できるようになります。
Note:Note.jpg注意:エスカレーションされた通知はホストやサービス定義のnotification_period の影響を受けます。つまり、エスカレーション定義で定義した時間帯は大きな"通知時間ウインドウ"のサブセットであるべきです。
状態制限 State Restrictions
もしホストやサービスの特定の状態の場合にエスカレーションすると言うようにエスカレーション定義を制限するには、そのホストやサービスのエスカレーション定義の escalation_options で設定できます。escalation_options を使用しない場合、エスカレーションはそのホストやサービスがどんな状態でも有効になります。