Nagios

序論


接触

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-adminsmanagersという連絡先グループが含まれています。 最後の("最も高い")エスカレーションレベルではnt-adminsmanagersそして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
}

上記の例で:

復旧通知


復旧の通知はエスカレーションする際、障害の通知とは多少動きが異なります。 では例を見ていきましょう:

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-adminsmanagers連絡先グループ に復旧連絡先が送られます。

通知間隔


ホストグループやサービス通知エスカレーション定義の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指示を使わないのであれば、サービスがどんな状態であろうとエスカレーションは行われます。

参照 参照: 通知, 時間帯

English Deutsch 日本語

目次