Benachrichtigung mal einfach


Neulich beim Kunden, sollte folgendes Szenario zur Benachrichtigung umgesetzt werden. Der Weg, also ob Mail, Slack oder Telegram, soll vom Benutzer abhängig sein, je nach dessen Vorliebe. Ist beim Benutzer eine Mailadresse gesetzt, wird er auch per Mail informiert. Soll die Benachrichtigung hingegen via Telegram bzw. Slack erfolgen, muss der notwendige Empfangs-Hook über ein User-Custom-Attribute angegeben werden.

Wer zu benachrichtigen ist, wird am Host-Objekt angegeben. Die zu benachrichtigen Benutzer können hierbei in einer Liste (host.vars.notification.user) oder über die Mitgliedschaft in einer Gruppe, die ebenfalls am Host in einer Liste (host.vars.notification.groups) angegeben werden, zu gewiesen.

Sei ein Benutzer admin Mitglied der Gruppen icingaadmins und linuxadmins. Soll bei folgendem Host

object Host "localhost" {
  import "generic-host"

  address = "127.0.0.1"

  vars.notifiction = {
    groups = [ "icingaadmins", "linuxadmins", "vips" ]
  }
}

für den Benutzer admin, aber keine doppelten Nachrichten versandt werden, kann dies zunächst mit dieser Regel umgesetzt werden:

apply Notification "mail-admin to Host {
  import "mail-host-notification"
  users = [ "admin" ]

  assign where "admin" in host.vars.notification.users || f("admin", host.vars.notification.groups)
}

Über den ersten Teil der assign-Regel wäre das Vorhandensein von admin in der Liste der zu benachrichtigen Benutzer am Host abgehandelt. Der zweite Teil ist eine selbstdefinierte Funktion die ein true zurück liefert, sofern der Benutzer mindestens einer der Gruppen aus der Liste angehört.

function f(user,groups) {
  if (typeof(groups) == Array) {
    for (grp in groups) {
      if (grp in get_user(user).groups) {
        return true
      }
    }
  }
  return false
}

Nun möchte man nicht für jeden Benutzer am Icinga-System eine solche Notification definieren, zumal die Services noch nicht berücksichtigt sind, dann wären deren für jeden Benutzer, immer gleich zwei Notification-Definitionen. Notifications werden vom Config-Compiler immer nach den User- und Usergroup-Objekten ausgewertet, somit kann die Notification zu ein Notification-for, die eine Schleife über alle bekannten Benutzer führt, umgewandelt bzw. erweitert werden:

apply Notification for (user in get_objects(User)) to Host {
  import "mail-host-notification"
  users = [ user.name ]

  assign where user.name in host.vars.notification.users || f(user.name, host.vars.notification.groups)
  ignore where ! get_user(user.name).email
}

Die abschließende ignore-Klausel stellt sich, dass keine Notification für Benutzer erzeugt wird, die keine Mailadresse angegeben haben. Sollen nun die selben Benutzer, nicht nur für den Host, sondern auch über Probleme bei den zum Host gehörigen Services benachrichtigt werden, ist das ganze nur noch eine Fingerübung:

apply Notification for (user in get_objects(User)) to Service {
  import "mail-service-notification"
  users = [ user.name ]

  assign where user.name in host.vars.notification.users || f(user.name, host.vars.notification.groups)
  ignore where ! get_user(user.name).email
}

Äquivalente Notifications lassen sich damit auch für die alternativen Benachrichtigungswege Slack, Telegram und weitere erstellen.

Lennart Betz
Lennart Betz
Senior Consultant

Der diplomierte Mathematiker arbeitet bei NETWAYS im Bereich Consulting und bereichert seine Kunden mit seinem Wissen zu Icinga, Nagios und anderen Open Source Administrationstools. Im Büro erleuchtet Lennart seine Kollegen mit fundierten geschichtlichen Vorträgen die seinesgleichen suchen.
Bringing Bulk Editing to a new Level with Icinga DB

Bringing Bulk Editing to a new Level with Icinga DB

Those of you, who already tried out the new Icinga DB Web Module might have noticed a new button next to the search bar in list views.

With Icinga DB we are proud to introduce a powerful new feature for bulk editing multiple objects.

You might be already familiar with the present multiselect feature, which enables you to select multiple list objects by Ctrl(Cmd on Mac)- or Shift-clicking. It enabled you to do bulk actions on multiple objects. This was helpful, but reached its limits – usability and perfomance-wise – when you were intending to deal with a large number of objects.

Continue With Filter goes beyond that and brings bulk editing to a whole new level. Setting downtimes, comments or acknowledgements works now a lot more efficient, because you can apply them to a filtered set of objects.

Setting downtimes to a large number of objects

So, let’s say you want to set downtimes on functional services on a certain host.

1) Create a filter with the filter editor
2) Select all resulting objects by clicking “Continue with filter”
3) You can now execute actions on all of the objects

See it in action

 

For the realisation of this feature we made multiselect urls handle filter parameters. And because it is also more performant, we use it in different places all around the new web module:

* The new badges in the host and service groups view
* The new service widget in the host detail view

You can now reach a new bulk object detail view by passing the filter syntax via the url.

`/icingadb/hosts?([filter syntax])`

It can also be easily added among other parameters, e.g.

`/icingaweb2/icingadb/hosts?state.soft_state=0&([filter syntax])`

To learn more about the new UI Features of the Icinga DB Web module, you can have a look at this post.

Happy bulk editing!

Florian Strohmaier
Florian Strohmaier
UX Designer

Mit seinen Spezialgebieten UI-Konzeption, Prototyping und Frontendentwicklung unterstützt Florian das Dev-Team bei NETWAYS. Trotz seines Design-Backgrounds fühlt er sich auch in der Technik zuhause. Gerade die Kombination aus beidem hat für ihn einen besonderen Reiz.

HP controller firmware issues to check

Just about a week ago I posted a short blog post introducing a new check to verify firmware of SSD disks by HPE. Since our customer informed us about another bulletin he has to take care of, we extended the check to support RAID controllers, and verify if a problematic firmware needs to be patched.

HPE says about the issue in bulletin a00097210:

HPE Smart Array SR Gen10 Controller Firmware Version 2.65 (or later) provided in the Resolution section of this document is required to prevent a potential data inconsistency on select RAID configurations with Smart Array Gen10 Firmware Version 1.98 through 2.62, based on the following scenarios. HPE strongly recommends performing this upgrade at the customer’s earliest opportunity per the “Action Required” in the table located in the Resolution section. Neglecting to perform the recommended resolution could result in potential subsequent errors and potential data inconsistency.

Important: Please read the full document and verify with your used hardware.

For controllers, the check will alert you with a CRITICAL when the firmware is in the affected range with:

  • if you have RAID 1/10/ADM – update immediately!
  • if you have RAID 5/6/50/60 – update immediately!

And it will add a short note when firmware older than affected or firmware has been updated. At the moment the plugin does not verify configured logical drives, but we believe you should update in any case.

Please see the repository and README on GitHub for all details, you can download the binaries from releases.

All information about affected disks can be found on GitHub or the previous blogpost.

OK - All 2 controllers and 33 drives seem fine
[OK] controller (0) model=p816i-a serial=XXX firmware=1.65 - firmware older than affected
[OK] controller (4) model=p408e-p serial=XXX firmware=1.65 - firmware older than affected
[OK] (0.9 ) model=MO003200JWFWR serial=XXX firmware=HPD2 hours=8086
[OK] (0.11) model=EK000400GWEPE serial=XXX firmware=HPG0 hours=8086
[OK] (0.12) model=EK000400GWEPE serial=XXX firmware=HPG0 hours=8086
[OK] (0.14) model=MO003200JWFWR serial=XXX firmware=HPD2 hours=8086
[OK] (4.0 ) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.1 ) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.2 ) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.3 ) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.4 ) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.5 ) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.6 ) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.24) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.25) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.26) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.27) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.28) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.29) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.30) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.31) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.50) model=MO3200JFFCL serial=XXX firmware=HPD8 hours=7568 - firmware update applied
[OK] (4.51) model=MO003200JWFWR serial=XXX firmware=HPD2 hours=7568
...
Markus Frosch
Markus Frosch
Principal Consultant

Markus arbeitet bei NETWAYS als Principal Consultant und unterstützt Kunden bei der Implementierung von Nagios, Icinga und anderen Open Source Systems Management Tools. Neben seiner beruflichen Tätigkeit ist Markus aktiver Mitarbeiter im Debian Projekt.

Das Runde ist das Fleckige

Pandemie. Es sollte wohl so sein,
Jetzt hab ich Zeit und bin daheim.
Blöd gelaufen, doch was mach ich nun?
Ach, es gibt doch immer was zu tun.

Jetzt ist Icinga hier am Start,
Das ging schnell, war nicht hart.
Die Installation ging flott voran,
Doch der Stress fing dann erst an.

Schließlich will ich alles messen
Und dabei auch nichts vergessen.
Dabei war ich ganz beflissen
Um alles überwacht zu wissen.

Ich hab an diesen freien Tagen
Manchen Sensor neu vergraben,
Den halben Garten neu verrohrt
Und manchen Türstock angebohrt.

Kann Kälte und auch Wärme messen,
Weiß wer den ganzen Strom gefressen.
Bewegungsmelder und 'ne Webcam dran:
So seh ich was der Rasenmäher kann.

Mit Gewichtssensor und ein paar Platten
Muss ich jetzt auch nicht mehr raten
Wieviel von diesem schwarzbraunweißen
Zeug die Tauben täglich runter... schmeißen.

Und so meint' ich alles wär bedacht,
Doch wurd ich überrumpelt über Nacht.
Ungeplant war da ein Change passiert
Frech, unverhofft und ungeniert.

Eine Notification gab es nicht,
Keine Webcam hielt was sie verspricht.
Der ganze Garten voll, in jeder Ecke
Ihr glaubt es kaum was ich entdecke.

Das muss wohl dies' Corona sein
Jetzt zieht es auch bei mir hier ein.
Ich flipp gleich aus, das Zeugs ist rund
Sieht aus Eier - doch in bunt!

Thomas Gelf
Thomas Gelf
Principal Consultant

Der gebürtige Südtiroler Tom arbeitet als Principal Consultant für Systems Management bei NETWAYS und ist in der Regel immer auf Achse: Entweder vor Ort bei Kunden, als Trainer in unseren Schulungen oder privat beim Skifahren in seiner Heimatstadt Bozen. Neben Icinga und Nagios beschäftigt sich Tom vor allem mit Puppet.

Neue Icinga Web Themes verfügbar! – Bayerisch, Fränkisch, Österreichisch

Zum Abschluss der Woche möchte ich noch unseren April-Scherz auflösen. Solltet ihr ernsthaft gedacht haben, dass wir diese Themes wirklich bauen…

 

Dann habt ihr genau richtig gelegen!

 

Bayerisch

Github: https://github.com/NETWAYS/icingaweb2-theme-bayerisch

 

 

 

 

Fränkisch

Github: https://github.com/NETWAYS/icingaweb2-theme-fraenkisch

 

 

 

 

Österreichisch

Github: https://github.com/NETWAYS/icingaweb2-theme-oesterreichisch

 

 

 

 

 

 

Viel Spaß damit!

 

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker, arbeitet an seiner dritten Millionen Euro (aus den ersten beiden ist nix geworden) und versucht die Weltherrschaft an sich zu reißen.

Icinga Web Themes coming soon – Bayerisch, Fränkisch, Österreichisch!

Als Icinga-Partner kümmert sich NETWAYS unter anderem um die Beratung und Umsetzung von Projekten rund um Icinga, aber auch um kundenspezifische Entwicklungen. Ein Beispiel für solche Entwicklungen sind Icinga-Plugins oder auch die Icinga Web Themes, die ich euch hiermit gerne ankündigen möchte: Bayerisch, Fränkisch und Österreichisch.

Von unseren Kunden bekommen wir konstant Input für neue Ideen und versuchen diese natürlich auch in die Tat umzusetzen. Diese Ideen sortieren wir sorgfältig nach Aufwand, Kosten und Nutzen, wodurch eine Priorisierung entsteht.

Nun mag sich der ein oder andere fragen: “Wenn es nach der Priorität geht? Warum dann solche Themes zuerst!?”

Die Antwort ist relativ einfach. Das beruht auf einem Versehen in der Planung. Eines schönen Morgens haben wir unsere Development-Ressourcen geplant und die To-Do-Liste lag verkehrt herum auf dem Tisch. Da ihr mir sicher nicht glaubt, folgt direkt das Beweisfoto. Aus Gründen des Datenschutzes musste ich einige Stellen schwärzen.

Was soll ich sagen… Nach monatelanger Entwicklung können wir heute schon mal eine kleine Vorschau der Themes veröffentlichen.

Bayerisch

Fränkisch

Österreichisch


In diesem Sinne: Seid gespannt! Coming soon – Bayerisch, Fränkisch und Österreichisch 🙂

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker, arbeitet an seiner dritten Millionen Euro (aus den ersten beiden ist nix geworden) und versucht die Weltherrschaft an sich zu reißen.