15.1 Unterschiede zwischen Push-
und Pull-Modellen
Prometheus verwendet hauptsächlich das Pull-Modell zur
Datenerfassung, unterstützt jedoch auch das Push-Modell für spezifische
Anwendungsfälle. Beide Modelle haben ihre eigenen Vor- und Nachteile und
eignen sich für unterschiedliche Szenarien.
15.1.1 Pull-Modell
Im Pull-Modell fragt Prometheus die Metriken direkt von den
Endpunkten (Targets) ab. Dies geschieht in regelmäßigen Intervallen, die
in der Konfigurationsdatei definiert sind.
Funktionsweise:
Prometheus konfiguriert eine Liste von Zielen (Targets), die
regelmäßig abgefragt (gescraped) werden.
Diese Abfragen erfolgen über HTTP(S), wobei die Metriken in einem
Prometheus-kompatiblen Format zurückgegeben werden.
Vorteile:
Zentralisierte Kontrolle: Prometheus hat die
Kontrolle darüber, wann und wie oft die Metriken abgefragt werden. Dies
erleichtert die Verwaltung der Abfrageintervalle und die Anpassung der
Abfragelast.
Einfache Konfiguration: Targets können einfach
durch Konfigurationsänderungen hinzugefügt oder entfernt werden, ohne
dass Änderungen an den überwachten Diensten erforderlich sind.
Service Discovery: Dynamische Umgebungen wie
Kubernetes können automatisch überwacht werden, da Prometheus neue
Targets selbstständig entdecken und abfragen kann.
Nachteile:
Erreichbarkeit: Die Ziele müssen für den
Prometheus-Server erreichbar sein. Dies kann in stark gesicherten oder
isolierten Netzwerken eine Herausforderung darstellen.
Lastverteilung: Bei vielen Targets oder sehr kurzen
Abfrageintervallen kann die Last auf dem Prometheus-Server und den
Targets hoch sein.
15.1.2 Push-Modell
Im Push-Modell senden die Endpunkte ihre Metriken aktiv an einen
Zwischenspeicher (Push Gateway), von dem Prometheus die Metriken
abruft.
Funktionsweise:
Die zu überwachenden Dienste pushen ihre Metriken an das Push
Gateway.
Prometheus fragt das Push Gateway in regelmäßigen Intervallen ab, um
die gesammelten Metriken zu erhalten.
Vorteile:
Kurzlebige Jobs: Für kurzlebige Jobs oder
Batch-Prozesse, die möglicherweise beendet sind, bevor Prometheus sie
abfragen kann, ist das Push-Modell ideal.
Netzwerkisolierung: Dienste, die sich in stark
isolierten Netzwerken befinden und keine eingehenden Verbindungen
zulassen, können ihre Metriken dennoch über das Push Gateway
bereitstellen.
Nachteile:
Komplexität: Die Einrichtung und Verwaltung eines
Push Gateways erhöht die Komplexität der Monitoring-Infrastruktur.
Verlust der Kontrolle: Prometheus verliert die
Kontrolle darüber, wann die Metriken gesendet werden. Dies kann zu
Inkonsistenzen bei der Datenerfassung führen, insbesondere wenn Dienste
unregelmäßig oder asynchron ihre Metriken pushen.
15.1.3 Anwendungsfälle
Pull-Modell:
Langlaufende Dienste: Ideal für dauerhafte Dienste
wie Webserver, Datenbanken und Microservices, die kontinuierlich
überwacht werden müssen.
Dynamische Umgebungen: In Kubernetes oder anderen
Container-Orchestrierungssystemen, wo sich die Endpunkte dynamisch
ändern, bietet das Pull-Modell durch Service Discovery erhebliche
Vorteile.
Push-Modell:
Kurzlebige Prozesse: Batch-Jobs, Cron-Jobs oder
andere kurzlebige Prozesse, die ihre Laufzeit überschreiten, bevor
Prometheus sie abfragen kann.
Hochsichere Netzwerke: Umgebungen, in denen
ausgehende Verbindungen erlaubt, eingehende jedoch blockiert sind. Hier
können Dienste ihre Metriken sicher an ein Push Gateway senden.
15.1.4 Kombination der Modelle
In vielen Fällen ist eine Kombination aus beiden Modellen sinnvoll.
Während der Großteil der Metriken über das Pull-Modell erfasst wird,
kann das Push-Modell für spezielle Anwendungsfälle wie kurzlebige Jobs
oder stark gesicherte Umgebungen verwendet werden.
Durch das Verständnis der Unterschiede zwischen Push- und
Pull-Modellen und deren geeigneten Einsatz können Sie Prometheus
flexibel und effizient in verschiedenen Überwachungsumgebungen
einsetzen.