Munin: Alarme via Jabber versenden
Die Erfassung von Metriken ist beim Monitoring mindestens genauso wichtig, wie das Benachrichtigen verantwortlicher Personen, wenn nun mal etwas wohldefinierte Grenzwerte überschreitet. Ich löse das nun via Jabber.
Situation
Oft habe ich schon beobachtet, dass sich Leute bei Problemen automatisiert E-Mails senden lassen. Das führt oft zu überlaufenden Postfächern und qualmenden Mailservern. Schließlich wird kein Mailserver auf die Idee kommen, Mails nicht zuzustellen, wenn er meint, dass ein Benutzer zu viele Mails bekommt. Er wird alles versuchen, seinen Job zu machen und bei Ressourcenknappheit dem anderen Mailserver Bescheid sagen, es bitte später erneut zu probieren.
Jabber
Jabber hingegen ist auf Chatnutzung ausgelegt und jede Nachricht ist nach dem Lesen tendenziell zum Wegwerfen bestimmt. Weiter haben Jabberserver stets gesetzte Limits, wie viele Nachrichten bei einem Nutzer, der offline ist, vorgehalten werden. Alarme aus Monitoringsystemen erfüllen den Wegwerfcharakter hervorragend.
Wenn man sie direkt mitbekommt, sucht man den nächsten Rechner und beginnt mit der Analyse in Graphen und Logfiles. Wenn man sie nicht sofort mitbekommt, weil man vorübergehend offline ist, ist das schade und man muss hoffen, dass eine andere verantwortliche Person den Alarm bemerkt hat.
Munin mit Jabberalarm
Die folgende Konfiguration ist auf dem Munin-Master vorzunehmen. Weiter wird auf das Werkzeug sendxmpp zurückgegriffen.
Man erstellt als erstes ein Jabberkonto für Munin, damit man sich von ihm sauber anschreiben lassen kann. Technische- und Menschenaccounts sollte man tunlichst trennen.
Mit ejabberd geht die Erstellung wie folgt.
# ejabberdctl register munin JABBERSERVERHOST PASSWORT
Nun legt man die Zugangsdaten für den neuen Nutzer munin in einer Konfigurationsdatei, die nur von einem Muninprozess gelesen werden kann ab.
# echo "munin@JABBERSERVERHOST PASSWORT" > /etc/munin/munin-jabberalert.conf # chmod 400 /etc/munin/munin-jabberalert.conf # chown munin /etc/munin/munin-jabberalert.conf
In der Konfiguration /etc/munin/munin.conf fügt man nun die Kontaktanweisung im globalen Abschnitt - außerhalb der Node-Einstellungen - hinzu. Jede Direktive bekommt dabei eine Zeile für sich.
contacts jabber contact.jabber.command sendxmpp -i -t -f /etc/munin/munin-jabberalert.conf NUTZER@JABBERSERVERHOST # the first node configuration [foo] address bar
Das war es bereits und das Logging findet normalerweise nach /var/log/munin/munin-limits.log statt, falls debuggt werden muss.
Test
Zum Test kann ein Plugin modizifiert werden, um einen Warning oder Critical zu triggern. Ob das klappt, sieht man im Webinterface von Munin. Die Kategorie mit dem Alarm wird gelb bzw. rot markiert, wenn ein Grenzwert überschritten wurde.
Ich persönlich habe zum Test einfach eine meiner Websites einen Fehlercode werfen lassen.
Fazit
Abhängig davon, wie wichtig etwas ist, kann man sich beliebig viele Grenzwerte definieren. Ich habe nur die aller wichtigsten eingerichtet, wie Platte aus dem RAID gefallen, Plattenplatz wird knapp, Webserver melden etwas anderes als 200 auf der Startseite, Errorlogs haben Einträge und so weiter.
Ich hoffe, ich konnte Dir bei Deinem Monitoring-Fanatismus behilflich sein.
Kommentare