matthias-leonhardt.de
image
Monitoring
Das Backend muß überwacht werden, so daß mögliche Probleme frühzeitig erkannt werden können oder im Fehlerfalle effektive Alarmierungen erfolgen.

Niemand will 24/7 vor einem Bildschirm hocken und warten, daß man irgendwo eine Anomalie im Verhalten seiner Hadrd- und Software Landschaft bemerkt. Dafür hat man ja die Rechner, die einem diese stumpfsinnige Arbeit abnehmen. Ein Projekt an dem ich gerabeitet habe, benötigte diese Funktionen und so habe ich mich in dieses Thema eingearbeitet - wollte das privat auch schon lange realisert haben. So konnte ich zwei Fliegen mit einer Klappe schlagen.

Meine Recherchen brachten mich zu Icinga2 - ursprünglich einem Fork von Nagios. Eigentlich ist diese Software darauf ausgelegt große Umgebungen zu überwachen, aber mich sprach das Konzept an. Mit Icinga läßt sich ein hierarchisches Netzwerk aus Überwachungsknoten aufbauen. Dabei können ausgewählte Knoten so konfiguriert werden, daß sie als Master für ihre untergeordneten Knoten fungieren und diese verwalten und überwachen. So lassen sich Netzwerke an verschiedenen Standorten verwalten - aber man kann das auch so konfigurieren, daß man als Dienstleister die Überwachung mehrerer Kunden übernehmen kann. Jeder Kunde hat dann sein eigenes Überwachungsnetzwerk, das autark arbeitet - der globale Master ist dann nur für die Konfiguration der untergeordneten Knoten zuständig.

Nachdem sich das ursprüngliche Projekt zerschlagen hat, nutze ich meine erworbenen Kenntnisse, um in paar kleine Server und meine eigene Hardware zu überwachen. Der Icinga-Client auf den Knoten ist so genügsam, daß ein alter Raspberry 2, der bei mir Syncthing, VPN und ein paar weitere kleine Dienste zur Verfügung stellt, diese Aufgabe locker noch mit übernehmen kann.

Icinga im Docker-Container?

Für zu überwachende Rechner halte ich es für keine gute Idee, den Icinga-Client in einem Docker-Container zu installieren. Durch die Isolation im Container sind die Zugriffe auf den zu überwachenden Rechner eingeschränkt und diverse Parameter können von dort nicht oder nicht so einfach gemessen werden. Der Icinga-Client gehört hier für mich direkt installiert. Etwas anderes sind Nodes, die nur zur Verwaltung dienen. So mein Master Node, der über Allem sitzt. Der sammelt selber keine eigenen Daten, sondern bündelt nur die Daten seiner untergeordneten Knoten. Hier macht eine Installation in einem Docker-Container Sinn, so daß man ihn schnell zusammen mit der Datenbank auf andere Rechner / Server verschieben kann.

Die gesammelten Monitoring- und Performance Daten speise ich in eine InfluxDB Datenbank ein, aus der ich dann mit Grafana entsprechende Dashboards erstelle. Ein Software-Gespann, das zur Zeit angesagt ist. Werde ich dann wohl auch für die Auswertungen meiner gesammelten Sensordaten meiner IoT-Projekte verwenden können - aber das ist ein anderes Thema.