Server-Monitoring mit Grafana, Prometheus und Node-Exporter
Wer heutzutage Server betreibt, benötigt ein gutes Monitoring, um schnell Probleme erkennen zu können und die reibungslose Bereitstellung von Anwendungen zu garantieren.
In diesem Beitrag schauen wir uns kurz an, wie wir unsere Ubuntu-Server mittels Node-Exporter, Prometheus und Grafana überwachen.
Was ist Monitoring?
Beim Monitoring geht es um das Überwachen von Vorgängen. Systematisch erfassen wir dafür verschiedene Metriken, die wir auswerten, um im Problemfall eingreifen zu können. Mit verschiedenen Schwellenwerten, Alerts und Visualisierungen können wir viele Probleme auch frühzeitig erkennen und beheben, bevor sie zu Ausfällen oder Störungen führen.
Warum Grafana, Prometheus und Node-Exporter?
Grafana ist eine Open-Source-Anwendung zur Datenvisualisierung. Die Daten können dabei aus vielen verschiedenen Datenquellen abgerufen und miteinander kombiniert werden. Das ist vor allem von Vorteil, weil wir so nicht nur unser aktuelles Monitoring mit Grafana aufbauen können, sondern in Zukunft auch zentrales Logging und Tracing einfach hinzufügen können.
Prometheus wird ebenfalls Open-Source entwickelt und ist in unserem Monitoring-Stack das eigentlich Stück Software, das die Metriken der einzelnen Server einsammelt, speichert und Grafana zur Verfügung stellt.
Der Node-Exporter ist eine kleine Anwendung, die ebenfalls von den Prometheus-Machern entwickelt wird. Wenn der Node-Exporter auf einem Server gestartet wird, bietet er über eine API eine Vielzahl an Metriken an, die Prometheus dann einsammelt. Dazu gehören z.B. Speicherbelegung, CPU- und RAM-Auslastung, verschiedene Netzwerkinformationen und vieles weitere.
Einrichtung
Ganz nach dem Motto „Cattle not Pets“ wollen wir eigentlich gar nichts händisch auf unseren Servern machen. Um das zu erreichen, setzen wir mit Ansible auf Infrastructure-as-code (IaC), um unsere Anwendungen zu verwalten. Dadurch können wir einen frisch aufgesetzten Server vollkommen automatisch einrichten und unter anderem den Node-Exporter installieren. Auch unser Monitoring-Server, auf dem dann Prometheus und Grafana laufen, wird per Ansible eingerichtet und aktualisiert.
Dashboards und Alerts
Metriken einzusammeln ist aber nur der erste Schritt. Wir müssen diese auch anschaulich und verständlich darstellen können, um einen Nutzen daraus zu ziehen. Das ist der eigentliche Job von Grafana als Visualisierungsplattform.
Auf unserem Übersichtsdashboard bekommen wir direkt einen Eindruck, in welchem Zustand unsere Server aktuell sind. Die farbige Tabelle gibt uns einen Überblick über die wichtigsten Metriken. Dabei können eigene Thresholds eingestellt werden, um Ausreißer oder kritische Werte auf den ersten Blick erkennbar zu machen.
Unter der Tabelle haben wir dann noch CPU-, RAM-, HDD/SSD- und Netzwerkdiagramme über die letzten 24 Stunden, um direkt sehen zu können, ob etwas sprunghaft angestiegen ist und Aufmerksamkeit benötigt.
Eine solche Übersicht ist natürlich schön, nützt aber nichts, wenn im Zweifel niemand drauf schaut. Damit wir aber immer informiert werden, haben wir bei Grafana Alerts eingerichtet. Mit dem sehr umfangreichen Regelsystem für Alerts können wir uns frühzeitig informieren lassen. So haben wir z.B. Alerts für die HDD/SSD-Auslastung oder wenn die RAM- oder CPU-Auslastung eine bestimmte Zeit lang über unserem Grenzwert liegt. Grafana evaluiert laufend unsere eingestellten Bedingungen. Nach zuvor festgelegten Warte- und Erholungsintervallen werden wir per E-Mail und Teams alarmiert oder entwarnt.
Fazit
Das Monitoring der eigenen Infrastruktur ist ein zentraler Bestandteil beim Betreiben eigener Server. Mithilfe von Tools wie Grafana, Prometheus und Node-Exporter kann sich aber jeder oder jede ein leistungsstarkes Monitoring aufsetzen und so rechtzeitig Probleme erkennen und verhindern. Durch die Automatisierung des Prozesses mit Ansible können wir außerdem sicherstellen, dass unser System immer aktuell ist und gleichzeitig den Arbeitsaufwand für die Einrichtung und Wartung unserer Server reduzieren.
Foto: Designed be Freepik www.freepik.com
Softwareentwicklung