Translations of this page:

Nagios

Bereitschafts-Rotationen


Hoch zu
Hoch zu: Inhalt
Siehe auch
Siehe auch: Zeitfenster, Benachrichtigungen

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 ein Zeitfenster, das Bereiche für Urlaube enthält:

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 defined elsewhere
	}


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 defined elsewhere
	}


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 14 days (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 (8. August 2007).

define timeperiod{
	timeperiod_name		bob-oncall
	2007-08-05 / 14	00:00-24:00	; Every 14 days (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 holiday date/times that 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. :-)

nagios/doku3/oncallrotation.txt · Zuletzt geändert: 2009/11/15 11:49 von wolfgang
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0