7.4 Exporter
Inhalt
Intro
Im vorherigen Kapitel haben wir Prometheus als Scrape Target hinzugefügt. Das direkte Scrapen von Applikationen und Diensten funktioniert, solange diese Applikationen einen entsprechenden Metrics-Endpunkt zur Verfügung stellen. Allerdings können nicht alle Systeme und Anwendungen Metriken direkt in dem von Prometheus erwarteten Format bereitstellen. Hier kommen Exporter ins Spiel. Ein Exporter ist eine eigenständige Anwendung oder ein Modul, das Daten von externen Systemen, Anwendungen oder Hardware in ein Format umwandelt, das Prometheus versteht. Er agiert als Vermittler zwischen der überwachten Instanz und Prometheus.
Linux OS Metriken
Im ersten Beispiel beschäftigen wir uns mit Linux Betriebssystemmetriken wie z.B. der Festplattenauslastung oder CPU-Aktivität. Um solche Metriken bereitzustellen, benötigen wir einen Exporter, da Linux von Haus aus keinen HTTP-Endpunkt besitzt, welcher diese Daten bereitstellen könnte. Wir nutzen daher den node_exporter . Dieser sammelt Information zum Zustand des Betriebssystems und stellt diese über HTTP bereit.
Hier ein Ausschnitt über die verfügbaren Metriken (Liste nicht abschliessend):
- Metriken zu Dateisystemen (Belegung, Anzahl Schreib- und Leseoperationen, Anzahl geöffneter Dateien usw.)
- Metriken zur CPU-Aktivität
- Metriken zur RAM-Aktivität
- Metriken zur Netzwerkaktivität
- Metriken zu Umgebungsdaten wie Temperatur
Der node_exporter muss auf allen zu überwachenden Linuxsystemen installiert werden. Für Windowssysteme gibt es den windows_exporter , welcher ähnliche Metriken bereitstellt.
HTTP, DNS und Zertifikate
Oft werden bestimmte HTTP(S) oder DNS Server überwacht, indem in regelmässigen Abständen Abfragen auf die zu überwachenden Systeme durchgeführt und die erhaltenen Antworten geprüft werden. Prometheus kann solche Überwachungen mithilfe des blackbox_exporters ebenfalls durchführen. Der Blackbox Exporter führt dabei die Checks aus und erstellt aus den Resultaten Metriken, welche von Prometheus verarbeitet werden können. Mit dem Blackbox Exporter können u.A. folgende Checks durchgeführt werden:
- HTTP(S) Checks auf Status Code, Inhalt der Webseite, Gültigkeit der TLS Zertifikate usw.
- TCP Checks welche prüfen, ob ein bestimmter Port erreichbar ist.
- DNS Checks
- ICMP Checks (Ping)
Cronjobs
Kurzlebige Jobs wie Cronjobs oder Skripte stellen pullbasierte Monitoringsysteme wie Prometheus vor besondere Herausforderungen. Jobs werden u.U nur in relativ langen Abständen (z.B. alle 12 Stunden) ausgeführt und dauern je nach Aufgabe nur wenige Sekunden bis Minuten. Die Wahrscheinlichkeit, dass Prometheus in diesem Zeitfenster einen Scrape durchführt, ist relativ gering. Für diese Fälle wurde der Pushgateway entwickelt. Er ermöglicht Cronjobs, Metriken per Push-Prinzip an Prometheus weiterzugeben, anstatt darauf zu warten, dass Prometheus die Metriken abfragt. Der Pushgateway agiert dabei als eine Art Zwischenspeicher/Cache für die Metriken. Cronjobs oder Skripte senden dazu ihre Metriken über eine HTTP API an den Pushgateway. Dieser speichert die Metriken und stellt sie über einen entsprechenden HTTP Endpunkt dem Prometheus Server zur Verfügung. Die Metriken sind damit für Prometheus auch dann noch verfügbar, wenn der Cronjob / das Skript seine Arbeit erledigt und wieder beendet wurde.
Weitere Exporter
Neben den oben bereits beschriebenen Exporter gibt es unzählige weitere, die für viele gängige Applikationen wie PostgreSQL, NGINX, Postfix usw. Prometheus-Metriken bereitstellen. Eine Übersicht der verfügbaren Exporter findest du z.B. auf der Prometheus-Webseite .