Seite wählen

Benachrichtigungen mit Icinga 2 mal anders

von | Sep 24, 2020 | Icinga, NETWAYS

Vor Kurzem stand ich im Rahmen eines Kundentermins vor der Anforderung noch die Benachrichtigungen für das Icinga 2 Setup umzusetzen. “Soweit kein Problem” dachte ich mir, allerdings war die genaue Anforderung dann doch etwas speziell: Sowohl bei Hosts als auch bei Services können SLA’s gesetzt werden (“gold”, “silver” oder “bronze”). Wenn bei einem Service kein SLA gesetzt ist, greift das Servicelevel des Hosts. Hier der erste Entwurf dazu:

apply Notification "host-mail-gold" to Host {
  import "mail-host-notification"

  period = "gold"
  users = host.vars.contacts

  assign where host.vars.sla == "gold"
}

apply Notification "service-mail-gold" to Service {
  import "mail-service-notification"

  period = "gold"
  users = service.vars.contacts

  assign where (host.vars.sla == "gold" && ! service.vars.sla) || (service.vars.sla == "gold")
}

Auch bei nicht vorhandenen Kontakten an Services sollte es so sein, das sie vom jeweiligen Host herangezogen werden. Also wurde die Service-Regel nochmal angepasst:

apply Notification "service-mail-gold" to Service {
  import "mail-service-notification"

  period = "gold"

  if (service.vars.contacts) {
    users = service.vars.contacts
  } else {
    users = host.vars.contacts
  }

  assign where (host.vars.sla == "gold" && ! service.vars.sla) || (service.vars.sla == "gold")
}

Weitere Anforderung: Es gibt nicht nur Mail- sondern auch Voice-Alarmierung. Dafür gibt es jeweils verschiedene Kontakte, die entweder mit “mail” oder “voice” beginnen. Besondere Herausforderung dabei, die Kontakte können auch gemischt sein:

apply Notification "host-mail-gold" to Host {
  import "mail-host-notification"

  period = "gold"
  users = host.vars.contacts

  assign where host.vars.sla == "gold" && regex("^mail", host.vars.contacts, MatchAny)
}

apply Notification "service-mail-gold" to Service {
  import "mail-service-notification"

  period = "gold"

  if (service.vars.contacts) {
    users = service.vars.contacts
  } else {
    users = host.vars.contacts
  }

  assign where host.vars.sla == "gold" && ! service.vars.sla && ! service.vars.contacts && regex("^mail", host.vars.contacts, MatchAny)
  assign where host.vars.sla == "gold" && ! service.vars.sla && service.vars.contacts && regex("^mail", service.vars.contacts, MatchAny)
  assign where service.vars.sla == "gold" && ( regex("^mail", service.vars.contacts, MatchAny) || (regex("^mail", host.vars.contacts, MatchAny) && ! service.vars.contacts))
}

Das Ganze dann mal drei (jeweils eine Host- und eine Service-Regel für “gold”, “silver” und “bronze”) gibt insgesamt sechs Notification-Regeln, die dem Kunden über 55.000 Benachrichtigungsobjekte beschert und ihn damit glücklich gemacht haben.

Markus Waldmüller
Markus Waldmüller
Lead Senior Consultant

Markus war bereits mehrere Jahre als Sysadmin in Neumarkt i.d.OPf. und Regensburg tätig. Nach Technikerschule und Selbständigkeit ist er nun Anfang 2013 bei NETWAYS als Lead Senior Consultant gelandet. Wenn er nicht gerade die Welt bereist, ist der sportbegeisterte Neumarkter mit an Sicherheit grenzender Wahrscheinlichkeit auf dem Mountainbike oder am Baggersee zu finden.
Mehr Beiträge zum Thema Icinga | NETWAYS

Monthly Snap March 2021

March is over and we are officially in spring mode! You can actually tell by reading our blogs: The NETWAYS Shop and NWS both have had a spring cleaning in the shape of make-overs!   NWS- NETWAYS Web Services   Our NWS customer center now has a fresh new...

Warum uns eine entfremdete Gesellschaft schadet?

Wenngleich uns die aktuellen Umstände aufgrund der Corona-Pandemie zu einer gewissen Isolation und Einschränkung von Kontakten zwingen, wurden viele bereits laufenden Prozesse dadurch lediglich beschleunigt. Jede Gesellschaft befindet sich in einem ständigen Wandel...

Was nehme ich aus meiner Ausbildung mit?

Unser drittes Lehrjahr (mich eingeschlossen) steht nach drei interessanten und lehrreichen Jahren kurz vor den Abschlussprüfungen. In wenigen Wochen geht es dann darum, dass erlernte Wissen in der Abschlussprüfung korrekt wieder zugeben. Neben dem schriftlichen Teil...

Veranstaltungen

Di 20

Icinga 2 Advanced Training | Online

April 20 @ 09:00 - April 22 @ 17:00
Di 20

InfluxDB & Grafana | Online

April 20 @ 09:00 - April 21 @ 17:00
Di 27

Elastic Stack Training | Online

April 27 @ 09:00 - April 29 @ 17:00
Di 27

Graylog Training | Online

April 27 @ 09:00 - April 28 @ 17:00
NETWAYS Headquarter | Nürnberg
Mai 04

GitLab Fundamentals Training | Online

Mai 4 @ 09:00 - Mai 5 @ 17:00