Prometheus ist eine freie Software zum Monitoring und Alerting von IT-Infrastrukturen. Es zeichnet Echtzeitmetriken in einer Zeitreihendatenbank auf, die per HTTP von Anwendungenen abgefragt werden und ermöglicht Echtzeit-Warnmeldungen. Das Projekt ist in Go geschrieben, unter der Apache 2-Lizenz lizenziert und ist ein graduated project der Cloud Native Computing Foundation. Prometheus und Grafana gelten als de-facto Standard-Monitoringsystem für Kubernetes.[3] Sowohl OpenShift als auch Rancher haben Prometheus als internes Monitoring integriert.
Geschichte
Prometheus wurde ab 2012 von Matt Proud und Julius Volz[6] bei SoundCloud entwickelt, da die vorhandene Metriken und Überwachungslösungen (StatsD und Graphite) nicht für die Anforderungen ausreichten. Prometheus wurde entwickelt um ein mehrdimensionales Datenmodell, skalierbarer Datenerfassung und einer leistungsstarken Abfragesprache in einem einzigen Tool zu vereinen. Das Projekt war von Anfang an Open Source und wurde auch von Boxever- und Docker-Benutzern genutzt. Prometheus wurde von dem bei Google genutzten Überwachungstool Borgmon inspiriert. Ab 2013 wurde Prometheus für die Produktionsüberwachung bei SoundCloud eingesetzt. Die offizielle Veröffentlichung erfolgte im Januar 2015.
Im Mai 2016 akzeptierte die Cloud Native Computing Foundation Prometheus als zweites Inkubator-Projekt nach Kubernetes. Prometheus wurde bereits in vielen Unternehmen verwendet, darunter Digital Ocean, Ericsson, CoreOS, Weaveworks, Red Hat und Google.
Prometheus 1.0 wurde im Juli 2016 veröffentlicht.[11] Im August 2018 gab die Cloud Native Computing Foundation bekannt, dass das Prometheus-Projekt abgeschlossen wurde.
Architektur
Prometheus besteht aus mehreren Tools:
- Mehrere Exporter, die normalerweise auf dem überwachten Host ausgeführt werden, um lokale Metriken zu exportieren.
- Prometheus zur Zentralisierung und Speicherung der Metriken.
- Alertmanager [13], der bei einer Schwellwertüberschreitung Benachrichtigungen verschicken kann.
- Grafana zum Erstellen von Dashboards.
- PromQL ist die Abfragesprache, die zum Erstellen von Dashboards und Warnungen verwendet wird.
Datenerfassung
Prometheus gilt als White-Box-Monitoring. Die überwachten Anwendungen müssen deren interne Metriken als Exporter selbst bereitstellen, diese werden regelmäßig von Prometheus abgefragt.[14] Prometheus fragt diese per HTTP, meist unter dem Standard URL Pfad /metrics ab. Bestimmten Standardexportern sind standardisierte Ports zugewiesen.
Es stehen unterschiedliche Metrik-Exporter Programmbibliotheken für verschiedene Softwareumgebungen zur Verfügung. Es können anwendungsspezifische Metriken als auch Standardwerte exportiert werden. Für Linux und Windows können Betriebssystem-Metriken wie die Auslastung des Arbeitsspeicher oder des Rechnernetz exportiert werden. Prometheus unterstützt einige Überwachungs- und Verwaltungsprotokolle, um die Interoperabilität für den Übergang zu ermöglichen: Graphite, StatsD, SNMP, JMX und CollectD.
Der Prometheus-Server fragt diese Exporter regelmäßig ab. Jede der Datenquellen liefert die aktuellen Werte der Metriken für diese Datenquelle an dem von Prometheus abgefragten Endpunkt. Der Prometheus-Server aggregiert dann Daten über die Datenquellen hinweg. Prometheus verfügt über eine automatische Service-Discovery, um Ressourcen, die als Datenquellen verwendet werden sollen, automatisch zu ermitteln.
Diese gesammelten Daten werden in einer Datenbank zur Zeitreihenanalyse gespeichert.
Datenspeicherung
Prometheus-Daten werden in Form von Metriken gespeichert, wobei jede Metrik einen Namen hat, der zum Referenzieren und Abfragen verwendet wird. Jede Metrik kann durch eine beliebige Anzahl von Zuordnungstabellen (labels) aufgeschlüsselt werden. Labels können Informationen zur Datenquelle (von welchem Server die Daten stammen) und andere anwendungsspezifische Aufschlüsselungsinformationen wie den HTTP-Statuscode (für Metriken im Zusammenhang mit HTTP-Antworten), die Abfragemethode (GET versus POST), den Endpunkt usw. enthalten.
Das Datenmodell von Prometheus ist mehrdimensional da eine beliebige Liste von labes abgefragt werden kann.
Prometheus speichert seine Daten grundsätzlich lokal auf der Festplatte, um eine schnelle Datenspeicherung und Abfrage zu ermöglichen. Dort werden die Metriken normalerweise einen Monat lang gespeichert. Für die Langzeitspeicherung können Metriken in Netzwerkspeichern gespeichert werden., wie z. B. InfluxDB. Das von der Cloud Native Computing Foundation selbst als incubation project unterstütze Thanos ermöglicht eine hochverfügbare und skalierbare Langzeitspeicherung. Thanos selbst kann seine Daten in Object Storages wie Google Cloud Storage, Microsoft Azure[3], OpenStack Swift oder S3 kompatiblen Speichern (z. B. min.io) ablegen.
PromQL
Prometheus bietet eine eigene Abfragesprache PromQL (Prometheus Query Language), mit der Daten ausgewählt und aggregiert werden können. PromQL wurde speziell an die Konvention mit einer Zeitreihendatenbank angepasst und bietet zeitbezogene Abfragefunktionen. Prometheus verfügt über vier definierte Metriktypen.
Standardisierung als OpenMetrics
Es gibt Bestrebungen, das Prometheus-Expositionsformat in den Standard OpenMetrics zu überführen. Einige Produkte haben das Format von Prometheus bereits übernommen: InfluxDatas TICK-Suite, InfluxDB, Google Cloud Platform, und DataDog.
Verwendung
Prometheus wurde bei SoundCloud entwickelt und hier auch erstmals verwendet. Die Cloud Native Computing Foundation veröffentlichte Fallstudien anderer Unternehmen, die Prometheus verwenden. Dazu gehören der digitale Hosting-Service Digital Ocean, digitales Festival DreamHack, und E-Mail- und Kontaktmigrationsdienst ShuttleCloud.
Einige Softwarelösungen wie Grafana selbst, Ansible Tower, die verteilte Speicherlösung Ceph, der Messagebroker RabbitMQ und GitLab bieten Prometheus Metriken als aktivierbare Funktion an, die dann durch eine Prometheus-Instanz weiter verarbeitet werden können.