Prometheus ist ein Open-Source-Toolkit für Monitoring und Benachrichtigungen, das mit dem Wachstum von Kubernetes immer beliebter wurde. Prometheus wurde ursprünglich bei SoundCloud entwickelt und kann bis zu einem Monitoringprojekt bei Google namens Borgmon zurückverfolgen.
Prometheus ist der Hauptvorteil des Erfassens von Messwerten aus Ihren Anwendungen und Ihrer Infrastruktur mithilfe eines Pull-basierten Modells. Das bedeutet, dass Prometheus regelmäßig eine Anfrage an Ihre Ziele sendet und die erfassten Messwerte dann in einer Zeitreihendatenbank gespeichert werden. In selbstverwalteten Prometheus-Instanzen stellen Sie die Infrastruktur zum Erfassen, Speichern und Abfragen der Messwerte bereit. In verwalteten Prometheus-Versionen stellt ein Anbieter die gesamte Infrastruktur und ein Service Level Agreement (SLA) für die Betriebszeit des Dienstes zur Verfügung.
Zum Abfragen Ihrer Zeitreihendaten bietet Prometheus eine Abfragesprache namens PromQL. Es gibt viele Projekte, die PromQL nutzen, darunter Grafana und Alertmanager, um analytische und operative Aufgaben wie die Datenvisualisierung, das Erstellen von Benachrichtigungen und die Skalierung Ihrer Monitoring-Infrastruktur zu unterstützen.
Mit Prometheus werden Messwerte aus Ihren Anwendungen und Ihrer Infrastruktur erfasst. Anhand dieser Messwerte können Sie den Zustand Ihrer Systeme verfolgen, potenzielle Probleme identifizieren und Probleme beheben.
Die Verwendung von Prometheus bietet unter anderem folgende Vorteile:
Prometheus nutzt ein Pull-Modell, um Messwerte zu erfassen. Das bedeutet, dass der Prometheus-Server die Systeme oder Anwendungen abfragt, die er auf Messwerte überwacht. Dies steht im Gegensatz zum Push-Modell, das von vielen anderen Monitoringsystemen verwendet wird, bei dem Sie den Anwendungscode so ändern, dass regelmäßig Messwerte an den Server gesendet werden.
Für das Pull-Modell ist es nicht erforderlich, dass die überwachten Systeme oder Anwendungen den Prometheus-Server erkennen. Daher kann es einem Monitoringsystem hinzugefügt werden, ohne Änderungen am Anwendungscode vorzunehmen. Im Pull-Modell werden Messwerte nur dann erfasst, wenn sie benötigt werden. Daher verschwendet Prometheus keine Ressourcen durch das Erfassen nicht verwendeter Messwerte.
Darüber hinaus kann Prometheus Datenquellen automatisch erkennen:
Sobald Prometheus eine Ressource gefunden hat, wird sie regelmäßig nach Messwerten durchsucht. Die Messwerte werden dann in der Prometheus-Datenbank gespeichert, wo sie abgefragt und visualisiert werden können.
PromQL ist eine leistungsstarke und flexible Abfragesprache für die von Prometheus erfassten Messwerte, mit denen Ad-hoc-Grafiken, -Tabellen und -Benachrichtigungen erstellt werden können.
PromQL verwendet eine funktionale Abfragesprache, mit der der Nutzer Zeitreihendaten in Echtzeit auswählen und aggregieren kann. Das Ergebnis eines Ausdrucks kann entweder als Diagramm oder als tabellarische Daten im Ausdrucksbrowser von Prometheus angezeigt oder von externen Systemen über die HTTP API verarbeitet werden.
Hier sind einige der Dinge, für die Prometheus und PromQL verwendet werden können:
Hier sind einige Beispiele für PromQL-Abfragen:
Mit der folgenden Abfrage können Sie die durchschnittliche CPU-Auslastung pro Sekunde für eine bestimmte Anwendung ermitteln:
Um die Anzahl der Anfragen an einen bestimmten Endpunkt abzurufen, können Sie die folgende Abfrage verwenden:
Um die Gesamtzahl der Fehler abzurufen, die von einem bestimmten Endpunkt zurückgegeben wurden, können Sie die folgende Abfrage verwenden: