序論
Nagiosはオプションでホストやサービスの通知をエスカレーションする機能をサポートしています。 ホストとサービス通知のエスカレーションは、あなたのオブジェクト設定ファイルでホスト・エスカレーションとサービス・エスカレーションを定義することによって、実行されます。
注意: 下で示す例ではサービス・エスカレーションで使用する定義ですが、ホストとホストグループのエスカレーションも同じように働きます。 ただしサービス・エスカレーションではなくホスト用のエスカレーションになりますが
通知がエスカレーションされるタイミング
通知は送信される現在の通知が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通目以降も同じくエスカレーションされません。 1通目と2通目の通知、そして10通目以降はサービス定義で指定したデフォルトの通知先に送られます。 ここで使用している例ではサービス定義で指定したデフォルトの連絡先グループはnt-adminsということにします。
連絡先グループ
通知エスカレーションを定義する際、エスカレーションの"低い"段階(通知回数番号が低い)に属する連絡先グループはエスカレーションの"高い"段階にも属すべきだというこが大事です。 というのは通知がエスカレーションしたときに今まで受け取っていたメンバーも続けて通知が行われるべきだからです。 例:
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通のサービス通知が送られた後障害が続いているようであれば続けて通知を受け取ることを意味しています。 "低い"エスカレーション・レベルの定義に初めて出てくるmanagers通知先グループは3通目の通知以降の通知を受け取ります。 managers通知先グループは6通目以降も障害が継続していれば継続して通知を受け取りたいため"高い"エスカレーション・レベルの定義にも含まれています。
エスカレーション範囲のオーバーラップ通知エスカレーション定義はその範囲をが重なっていても良いです。 では例を見ていきましょう:
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-supporti連絡先グループのみ6回目(もしくはそれ以降)の通知が送られます。
復旧通知
復旧の通知はエスカレーションする際、障害の通知とは多少動きが異なります。 では例を見ていきましょう:
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_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分になります。
特定のホストグループやサービスのエスカレーション定義は重ねることができ、また複数のホストグループに1つのホストが所属できるため、 Nagiosはエスカレーション定義が重なっている場合、通知間隔が係わっている場合、どうすべきか決めなくてはなりません。 interval.特定の通知について適切なエスカレーション定義が複数オーバーラップしているどんな場合も、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分の通知間隔を採用します。なぜなら、上の2つの通知エスカレーション定義の内もっとも短い値だからです。
最後に、通知間隔が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秒になっているため通知が1回しか送られません。(4番目の通知を含めて)、そして、その後の通知は送られません。 このため、3つ目のサービスエスカレーション定義はなんの効果もないため、4以上の通知は送られないと言うことになります。
期間帯の制限
通常の状況下で、サービスが出した通知はいつでもエスカレーションする事ができます。 この"通知時間枠"はホスト定義,サービス定義のnotification_period指示で定義されます。
エスカレーションが有効な期間でescalation_period指示を時間帯で指定しているなら、エスカレーションはこの時間帯のみ行われます。 オプションとしてサービス・エスカレーション定義のescalation_period指示を使って指定した秒数の間はエスカレーションを使うことができます。 もしescalation_period指示を指定していないのであれば、サービス"通知時間枠"の範囲内でいつでもエスカレーションされます。
注意: エスカレートした通知は、ホストまたはサービス定義のnotification_period指示の通常時間の制限になお影響を受けるので、エスカレーション定義で指定された時間間隔は大きな"通知時間ウインドウ"の一部であるべきです。
状態の制限
サービスが特定の状態にある時だけエスカレーション定義を制限したければ、サービスエスカレーション定義の escalation_options指示を使用できます。 escalation_options指示を使わないのであれば、サービスがどんな状態であろうとエスカレーションは行われます。