Nagios Logo

Einführung


Kontakte Zeitfenster

Admins müssen oft genug Pager, Mobiltelefonanrufe usw. beantworten, wenn sie es am wenigsten gebrauchen können. Keiner mag es, morgens um 4 Uhr geweckt zu werden. Allerdings ist es oft besser, das Problem mitten in der Nacht zu lösen als den Zorn eines unglücklichen Chefs zu spüren, wenn Sie am nächsten Morgen um 9 Uhr ins Büro kommen.

Für die glücklichen Admins, die ein Team von Gurus haben, die die Verantwortlichkeiten bei der Beantwortung von Alarmen teilen können, gibt es oft Bereitschaftspläne. Mehrere Admins werden oft abwechselnd Benachrichtigungen an Wochenenden, Nächten, Urlauben usw. entgegennehmen.

Ich werde Ihnen zeigen, wie Sie Zeitfenster-Definitionen erstellen können, die die meisten Bereitschafts-Benachrichtigungen behandeln werden. Diese Definitionen werden keine menschlichen Dinge berücksichtigen, die unweigerlich auftreten werden (Admins, die sich krank melden, Tausch von Schichten, oder Pager, die ins Wasser fallen), aber sie werden es Ihnen erlauben, eine grundlegende Struktur in Ihre Aufteilung zu bringen, die für die meiste Zeit funktionieren wird.

Szenario 1: Urlaub und Wochenenden


Zwei Admins - John und Bob - sind verantwortlich für die Bearbeitung von Nagios-Alarmen. John erhält alle Benachrichtigungen an Wochentagen (und Nächten) - außer im Urlaub - und Bob erhält Benachrichtigungen während der Wochenenden und Urlaube. Glücklicher Bob. Hier nun, wie Sie diese Art der Rotation mit Zeitfenstern definieren...

Definieren Sie zuerst drei Zeitfenster, das Bereiche für Urlaube, Wochentage und Wochenenden enthält:

define timeperiod{
    name                weekdays
    timeperiod_name     weekdays
    monday              00:00-24:00
    tuesday             00:00-24:00
    wednesday           00:00-24:00
    thursday            00:00-24:00
    friday              00:00-24:00
}

define timeperiod{
    name                weekends
    timeperiod_name     weekends
    saturday            00:00-24:00
    sunday              00:00-24:00
}

define timeperiod{
    name                holidays
    timeperiod_name     holidays
    january 1           00:00-24:00 ; New Year's Day
    2008-03-23          00:00-24:00 ; Easter (2008)
    2009-04-12          00:00-24:00 ; Easter (2009)
    monday -1 may       00:00-24:00 ; Memorial Day (Last Monday in May)
    july 4              00:00-24:00 ; Independence Day
    monday 1 september  00:00-24:00 ; Labor Day (1st Monday in September)
    thursday 4 november 00:00-24:00 ; Thanksgiving (4th Thursday in November)
    december 25         00:00-24:00 ; Christmas
    december 31         17:00-24:00 ; New Year's Eve (5pm onwards)
}

Als nächstes definieren Sie ein Zeitfenster für Johns Bereitschaftszeiten, das die Wochentage und Nächte während der Woche enthält, aber die Daten/Zeiten im Urlaubs-Zeitfenster ausschließt:

define timeperiod{
    timeperiod_name     john-oncall
    monday              00:00-24:00
    tuesday             00:00-24:00
    wednesday           00:00-24:00
    thursday            00:00-24:00
    friday              00:00-24:00
    exclude             holidays    ; Exclude holiday dates/times
}

Sie können nun dieses Zeitfenster in Johns Kontaktdefinition referenzieren:

define contact{
    contact_name                john
    ...
    host_notification_period    john-oncall
    service_notification_period john-oncall
}

Definieren Sie ein neues Zeitfenster für Bobs Bereitschaftszeiten, das die Wochenenden und die Daten/Zeiten der o.g. holiday-Zeitfenster enthält:

define timeperiod{
    timeperiod_name     bob-oncall
    friday              00:00-24:00
    saturday            00:00-24:00
    use                 holidays ; Also include holiday date/times
}

Sie können nun auf dieses Zeitfenster in Bobs Kontaktdefinition referenzieren:

define contact{
    contact_name                bob
    ...
    host_notification_period    bob-oncall
    service_notification_period bob-oncall
}

Szenario 2: Abwechselnde Tage


In diesem Szenario wechseln sich John und Bob täglich mit der Bearbeitung von Alarmen ab - unabhängig davon, ob es sich um Wochenenden, Wochentage oder Urlaub handelt.

Definieren Sie ein Zeitfenster, wann John Benachrichtigungen erhalten soll. Angenommen, der heutige Tage ist der 1. August 2007 und John beginnt heute mit der Bearbeitung von Benachrichtigungen, dann würde die Definition wie folgt aussehen:

define timeperiod{
    timeperiod_name     john-oncall
    2007-08-01 / 2      00:00-24:00 ; Every two days, starting August 1st, 2007
}

Nun definieren Sie ein Zeitfenster, wann Bob Benachrichtigungen erhalten soll. Bob erhält Benachrichtigungen an den Tagen, an denen John keine erhält, also beginnt seine erste Bereitschaft morgen (2. August 2007).

define timeperiod{
    timeperiod_name     bob-oncall
    2007-08-02 / 2      00:00-24:00 ; Every two days, starting August 2nd, 2007
}

Nun müssen Sie diese Zeitfenster-Definitionen in den Kontaktdefinitionen von John und Bob referenzieren.

define contact{
    contact_name                john
    ...
    host_notification_period    john-oncall
    service_notification_period john-oncall
}
define contact{
    contact_name                bob
    ...
    host_notification_period    bob-oncall
    service_notification_period bob-oncall
}

Szenario 3: Abwechselnde Wochen


In diesem Szenario wechseln sich John und Bob jede Woche mit der Bearbeitung von Alarmen ab. John bearbeitet Alarme von Sonntag bis Samstag in der einen Woche und Bob bearbeitet Alarme in den nächsten sieben Tagen. Dies wiederholt sich immer wieder.

Definieren Sie ein Zeitfenster, wann John Benachrichtigungen erhalten soll. Angenommen, heute ist Sonntag, der 29. Juli 2007 und John bearbeitet Benachrichtigungen in dieser Woche (beginnend mit heute), würde die Definition wie folgt aussehen:

define timeperiod{
    timeperiod_name    john-oncall
    2007-07-29 / 14    00:00-24:00 ; Every two weeks, starting Sunday, July 29th, 2007
    2007-07-30 / 14    00:00-24:00 ; Every other Monday starting July 30th, 2007
    2007-07-31 / 14    00:00-24:00 ; Every other Tuesday starting July 31st, 2007
    2007-08-01 / 14    00:00-24:00 ; Every other Wednesday starting August 1st, 2007
    2007-08-02 / 14    00:00-24:00 ; Every other Thursday starting August 2nd, 2007
    2007-08-03 / 14    00:00-24:00 ; Every other Friday starting August 3rd, 2007
    2007-08-04 / 14    00:00-24:00 ; Every other Saturday starting August 4th, 2007
}

Nun definieren Sie ein Zeitfenster, wann Bob Benachrichtigungen erhalten soll. Bob erhält Benachrichtigungen in den Wochen, in denen John keine bekommt, also startet seine erste Bereitschaft am nächsten Sonntag (5. August 2007).

define timeperiod{
    timeperiod_name    bob-oncall
    2007-08-05 / 14    00:00-24:00 ; Every two weeks, starting Sunday, August 5th, 2007
    2007-08-06 / 14    00:00-24:00 ; Every other Monday starting August 6th, 2007
    2007-08-07 / 14    00:00-24:00 ; Every other Tuesday starting August 7th, 2007
    2007-08-08 / 14    00:00-24:00 ; Every other Wednesday starting August 8th, 2007
    2007-08-09 / 14    00:00-24:00 ; Every other Thursday starting August 9th, 2007
    2007-08-10 / 14    00:00-24:00 ; Every other Friday starting August 10th, 2007
    2007-08-11 / 14    00:00-24:00 ; Every other Saturday starting August 11th, 2007
}

Nun müssen Sie diese Zeitfenster-Definitionen in den Kontaktdefinitionen von John und Bob referenzieren.

define contact{
    contact_name                john
    ...
    host_notification_period    john-oncall
    service_notification_period john-oncall
}
define contact{
    contact_name                bob
    ...
    host_notification_period    bob-oncall
    service_notification_period bob-oncall
}

Szenario 4: Urlaubstage


In diesem Szenario bearbeitet John Benachrichtigungen an allen Tagen außer an denen, an denen er frei hat. Er hat frei an einigen festen Tagen im Monat ebenso wie an einigen geplanten Urlaubszeiten. Bob bearbeitet Benachrichtigungen, wenn John Urlaub hat oder nicht im Büro ist.

Definieren Sie zuerst ein Zeitfenster, das die Bereiche für Johns Urlaubstage und freie Tage enthält:

define timeperiod{
    name                john-out-of-office
    timeperiod_name     john-out-of-office
    day 15              00:00-24:00        ; 15th day of each month
    day -1              00:00-24:00        ; Last day of each month (28th, 29th, 30th, or 31st)
    day -2              00:00-24:00        ; 2nd to last day of each month (27th, 28th, 29th, or 30th)
    january 2           00:00-24:00        ; January 2nd each year
    june 1 - july 5     00:00-24:00        ; Yearly camping trip (June 1st - July 5th)
    2007-11-01 - 2007-11-10  00:00-24:00   ; Vacation to the US Virgin Islands (November 1st-10th, 2007)
}

Als nächstes definieren Sie ein Zeitfenster für Johns Bereitschaftszeiten, das die Daten/Zeiten im o.g. Zeitfenster ausschließt:

define timeperiod{
    timeperiod_name     john-oncall
    monday              00:00-24:00
    tuesday             00:00-24:00
    wednesday           00:00-24:00
    thursday            00:00-24:00
    friday              00:00-24:00
    exclude             john-out-of-office ; Exclude dates/times John is out
}

Sie können nun dieses Zeitfenster in Johns Kontaktdefinition referenzieren:

define contact{
    contact_name                john
    ...
    host_notification_period    john-oncall
    service_notification_period john-oncall
}

Definieren Sie ein neues Zeitfenster für Bobs Bereitschaftszeiten, das die Zeiten von Johns Abwesenheiten enthält:

define timeperiod{
    timeperiod_name     bob-oncall
    use                 john-out-of-office ; Include holidays when John is out
}

Sie können nun dieses Zeitfenster in Bobs Kontaktdefinition referenzieren:

define contact{
    contact_name                bob
    ...
    host_notification_period    bob-oncall
    service_notification_period bob-oncall
}

Andere Szenarien


Es gibt eine Menge von anderen Bereitschafts-Benachrichtigungs-Szenarien, die Sie haben könnten. Die Datumsausschluss-Direktive in den Zeitfenster-Definitionen ist in der Lage, die meisten Datums- und Zeitbereiche abzubilden, die Sie brauchen könnten, also betrachten Sie die verschiedenen Formate, die Sie benutzen können. Wenn Sie einen Fehler bei der Erstellung von Zeitfenster-Definitionen machen, dann sollten Sie darauf achten, jemand anderem mehr Bereitschaftszeit zu geben. :-)

Siehe auch Siehe auch: Zeitfenster, Benachrichtigungen

English Deutsch 日本語

Inhaltsverzeichnis