Open-Source-Monitoring: Prometheus im Überblick


    Tags: ,

    Prometheus LogoPrometheus stammt vom Streaming-Dienst Sound­cloud und kann Server, Clouds oder virtua­lisierte Infra­strukturen über­wachen. Es verfolgt den Health-Status und die Perfor­mance von Systemen. Admins können die Daten mit Reports aus­werten, mit Grafana visua­lisieren und sich per Alert benach­richtigen lassen.

    Viele Administratoren müssen laufend den Status ihrer Systeme analysieren, um aufgetretene Fehler zu bewerten oder drohende Engpässe rechtzeitig zu erkennen. Abhilfe schafft dabei eine Monitoring-Lösung, welche bei Fehlern entsprechende Alerts aussendet und mittel- oder langfristig Metriken für die Kapazitäts­planung sammelt.

    Pull-Monitoring

    Prometheus setzt, anders als etwa Nagios, auf Pull-Monitoring (auch als Polling bezeichnet). Der Monitoring-Server ruft dabei die Daten in einem spezifischen Textformat periodisch über HTTP von den Clients ab. Es ist die Aufgabe eines Exporters, die auf dem Quellsystem erfassten Metriken entsprechend zu konvertieren.

    Zur Distribution selbst gehört bereits eine Reihe derartiger Komponenten, darunter solche für Datenbanken, Hardware oder Web-Server. Dazu kommt eine Vielzahl von Exportern, die von der Community oder Drittherstellern beigesteuert wurden.

    Anwendungen überwachen

    Möchte man Anwendungen überwachen und hat keinen Zugang zu deren Quellcode, um die Metriken im Prometheus-Format bereitzustellen, dann kann man stattdessen Client Libraries nutzen. Diese liegen für mehrere Programmiersprachen vor.

    Mit ihrer Hilfe spricht man die APIs der betreffenden Applikation an, um Metriken auszulesen, und stellt sie im erforderlichen Textformat bereit. Auch hier gibt es bereits eine größere Zahl an vorgefertigten Integrationen.

    Sollte Quellsysteme für den Prometheus-Server nicht direkt erreichbar sein, etwa weil sich diese hinter einer Firewall befinden, dann kann ein Push-Gateway als Vermittler einspringen.

    Aufbau des Servers

    Prometheus speichert die erfassen Leistungsdaten von den Clients in einer lokalen Datenbank, die speziell für diesen Zweck entwickelt wurde. Das Tool verzichtet auf eine verteilte Datenhaltung oder Cluster. Die Entwickler begründen dies mit einer vereinfachten Nutzung sowie der hohen Skalier­barkeit der Software, die das Überwachen tausender Systeme mit nur einem Server erlaube.

    Sollte das nicht ausreichen, dann besteht die Empfehlung für den nächsten Schritt darin, die Umgebung zu segmentieren. Dabei würde man bestimmte Systeme einem Server zuordnen, andere einem zweiten. So könnte man etwa einen eigenen Prometheus-Server für eine stark frequentierte Website einrichten und einen zusätzlichen für die intern genutzten Server.

    Das Tool erlaubt aber darüber hinaus auch eine Architektur aus föderierten Systemen, bei denen die so genannten Slaves ihre Daten über eine definierte Hierarchie bis hinauf zum Master aggregieren.

    Auswertung der Daten

    Prometheus verfügt über eine Reihe von HTTP-APIs, über die Daten abgerufen und mittels PromQL ausgewertet werden können. Zum Lieferumfang gehört zudem ein Expression Browser, der eine Abfrage und die Untersuchung der gespeicherten Metriken erlaubt.

    Die von Prometheus gesammelten Metriken lassen sich mit Grafana-Dashboards visualisieren.

    Für das Erstellen von Dashboards empfiehlt sich jedoch der Einsatz von Grafana. Dieses unterstützt das Erzeugen unterschiedlicher Diagrammtypen und unterstützt Prometheus offiziell als Datenquelle.

    Alerts

    Ist eine Bedingung erfüllt, unter der Prometheus den Admin über ein bestimmtes Ereignis wie das Erreichen eines Schwellwerts warnen soll, dann übergibt es die entsprechende Information an den Alertmanager, der die Benachrichtigung generiert. Dabei kann es sich etwa um eine E-Mail oder eine Chat-Nachricht handeln.

    Der Alertmanager beschränkt sich aber nicht darauf, die Alerts eins zu eins als Nachrichten auszusenden. Vielmehr kann er zusammengehörige Alarme für eine Benachrichtigung zusammenfassen. Außerdem ist er über seine Routing-Funktion in der Lage, die Nachrichten abhängig von festgelegten Kriterien an bestimmte Admins zu senden.

    Vorteile und Anwendungen von Prometheus

    Insgesamt sind die besonderen Stärken des Monitoring-Tools:

    • Eine Vielzahl an kostenlosen Templates für nahezu jedes System, ob Storage, Cloud-Plattform oder OS
    • Jedes System stellt Metriken über HTTP bzw. HTTPS zur Verfügung, was das Testen und die Fehleranalyse vereinfacht.
    • Vollständiger Support für Docker und Kubernetes
    • Vorrausschauendes Alerting: Benachrichtigung beispielsweise schon bei Speicheranstieg und nicht erst nach Erreichen eines Schwellwertes.

    Für Windows-Umgebungen wären etwa folgende Einsatzgebiete denkbar:

    • Der IT-Adminstrator bekommt eine Benachrichtigung über Microsoft Teams, sobald die Festlatte für Log-Files auf einem Domain Controller ungewöhnlich viele Schreibvorgänger verzeichnet.
    • Der Druck-Service eines Print-Servers reagiert nicht mehr, ein entsprechendes Ticket wird erstellt, bevor ein User den Ausfall bemerkt.
    • Der Abteilungsleiter erhält Zugriff auf ein Dashboard mit visualisierten Statistiken über die Update-Verteilung mit WSUS.
    • Nachdem der Wartungsvertrag für den File-Server-Cluster abgelaufen ist, muss eine Ausschreibung mit benötigten Sizing-Spezifikationen erstellt werden.

    Eine mögliche Anwendung von Prometheus im Windows-Umfeld ist die Überwachung von WSUS.

    Diese Use Cases lassen sich mit Prometheus kostenfrei abbilden, für viele ist es nur notwendig, bestehende Community-Templates einzubinden.

    Systemvoraussetzungen und Verfügbarkeit

    Prometheus läuft auf Windows, Mac OS X, diversen Linux-Distributionen sowie auf BSD (OpenBSD, FreeBSD, NetBSD, DragonFly). Die Software unterliegt der Open-Source-Lizenz Apache 2 Licence.

    Die aktuellen Installations­dateien können von der Website des Projekts heruntergeladen werden.

    Das Sizing des Servers hängt von verschiedenen Faktoren ab, unter anderem von den Pull-Intervallen, den abgerufenen Metriken pro Server (was wird alles überwacht) und natürlich der Anzahl der überwachten Nodes.

    Prinzipiell sollte mit wachsender Anzahl der Knoten auch Memory- und Disk-Usage des Prometheus-Servers selbst überwacht werden.

    Keine Kommentare