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

Natalie Meets Jessica

Hallo an alle Leser*innen und willkommen zurück zu unserer Blogpostserie „Natalie meets...“, die natürlich auch im neuen Jahr fortgesetzt werden soll! 😊 Hiermit auch von meiner Seite nochmals ein gesundes und frohes neues Jahr 2021 - ich hoffe, ihr seid alle gut ins...

Gemeinsam was Neues starten! Die NETWAYS Startup Days 2020

Anfangen – wenn ein neues Jahr beginnt, dann spielt das Thema Anfangen in der Regel eine große Rolle. Wir haben uns schon im Dezember mit dem Anfang von was Neuem beschäftigt – und zwar in unseren Startup Days. Getöse, Gezwitscher, ein Mann mit Tarnanzug und Gasmaske...

Monthly Snap December 2020

  Christmas is long gone, and we wish you all a happy new year! December seems so far away, as we are now looking ahead towards brighter times. But what was on our minds last year?   JITSI of course! Which is why Marius started the month with his blog NWS...

Veranstaltungen

Di 19

Icinga 2 Advanced Training (englisch class) | Online

Januar 19 @ 09:00 - Januar 21 @ 17:00
Feb 02

Elastic Stack Training | Online

Februar 2 @ 09:00 - Februar 4 @ 17:00
Feb 10

GitLab Fundamentals Training | Online

Februar 10 @ 09:00 - Februar 11 @ 17:00
Feb 23

Terraform mit OpenStack Training | Online

Februar 23 @ 09:00 - Februar 24 @ 17:00
Feb 23

Fundamentals for Puppet | Online

Februar 23 @ 09:00 - Februar 25 @ 17:00