Prometheus (Software)

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Prometheus

Prometheus software logo.svg
Basisdaten

Erscheinungsjahr 24. November 2012
Aktuelle Version 2.26.0[1]
(31. März 2021)
Betriebssystem Linux, NetBSD, OpenBSD, FreeBSD, Microsoft Windows, Darwin, DragonFly BSD
Programmiersprache Go
Kategorie Netzwerk-Monitoring
Lizenz Apache-Lizenz (Freie Software)
prometheus.io

Prometheus ist eine freie Software zum Monitoring und Alerting von IT-Infrastrukturen. Es zeichnet Echtzeitmetriken in einer Zeitreihendatenbank auf, die per HTTP von Anwendungen 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.[2] Prometheus und Grafana gelten als de-facto Standard-Monitoringsystem für Kubernetes.[3] Sowohl OpenShift[4] als auch Rancher[5] haben Prometheus als internes Monitoring integriert.

Geschichte[Bearbeiten | Quelltext bearbeiten]

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, eine skalierbare Datenerfassung und eine leistungsstarke Abfragesprache in einem einzigen Tool zu vereinen.[7] Das Projekt war von Anfang an Open Source und wurde auch von Boxever- und Docker-Benutzern genutzt.[7][8] Prometheus wurde von dem bei Google genutzten Überwachungstool Borgmon inspiriert.[9][6] Ab 2013 wurde Prometheus für die Produktionsüberwachung bei SoundCloud eingesetzt.[7] Die offizielle Veröffentlichung erfolgte im Januar 2015.[7]

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.[10]

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.[12]

Architektur[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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.[15]

Es stehen unterschiedliche Metrik-Exporter Programmbibliotheken für verschiedene Softwareumgebungen zur Verfügung.[16] Es können anwendungsspezifische Metriken als auch Standardwerte exportiert werden. Für Linux[17] und Windows[18] können Betriebssystem-Metriken wie die Auslastung des Arbeitsspeicher oder des Rechnernetz exportiert werden.[6] 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.[7] Prometheus verfügt über eine automatische Service-Discovery, um Ressourcen, die als Datenquellen verwendet werden sollen, automatisch zu ermitteln.[19]

Diese gesammelten Daten werden in einer Datenbank zur Zeitreihenanalyse gespeichert.

Datenspeicherung[Bearbeiten | Quelltext bearbeiten]

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.[20][7]

Prometheus speichert seine Daten grundsätzlich lokal auf der Festplatte, um eine schnelle Datenspeicherung und Abfrage zu ermöglichen.[7]Dort werden die Metriken normalerweise einen Monat lang gespeichert[21]. Für die Langzeitspeicherung können Metriken in Netzwerkspeichern gespeichert werden.[22], wie z. B. InfluxDB[23]. Das von der Cloud Native Computing Foundation selbst als incubation project unterstütze Thanos[24] ermöglicht eine hochverfügbare und skalierbare[25] 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.[26]

PromQL[Bearbeiten | Quelltext bearbeiten]

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[27]:

Counter
ist ein monotones Zählwerk dessen Wert nur inkrementell hinzu addiert wird.
Gauge
ist eine Anzahl die beliebig durch die Applikation verändert werden kann.
Histogramm
sammelt die Häufigkeitsverteilung, um dann als Histogramm graphisch aufbereitet werden zu können.
Summary
ähnlich wie der Typ Histogramm werden Häufigkeitsverteilung erfasst und auch die Anzahl und Summe aller beobachteten Werte erfasst. Es lässt sich so eine konfigurierbares empirische Quantile über ein gleitendes Zeitfenster abfragen.

Alerting[Bearbeiten | Quelltext bearbeiten]

Werden konfigurierbare Schwellwerte überschritten kann Prometheus Benachrichtigungen auslösen. Diese Benachrichtigungen werden an den Alertmanager-Dienst weitergeleitet. Der Alertmanager kann eine Logik enthalten, mit der Alerts stummgeschaltet und an E-Mail-, Slack- oder Benachrichtigungsdienste wie PagerDuty weitergeleitet werden können.[28]

Dashboards[Bearbeiten | Quelltext bearbeiten]

Prometheus ist grundsätzlich nicht als Dashboarding-Lösung gedacht. Durch eine Integration von Grafana können bestimmte Abfragen grafisch dargestellt werden und zu Dashboards zusammengestellt werden. Dies wurde aufgrund der zusätzlichen Komplexität des Setups als Nachteil angeführt.[29]

Standardisierung als OpenMetrics[Bearbeiten | Quelltext bearbeiten]

Es gibt Bestrebungen, das Prometheus-Expositionsformat in den Standard OpenMetrics zu überführen.[30] Einige Produkte haben das Format von Prometheus bereits übernommen: InfluxDatas TICK-Suite,[31] InfluxDB, Google Cloud Platform,[32] und DataDog.[33]

Verwendung[Bearbeiten | Quelltext bearbeiten]

Prometheus wurde bei SoundCloud entwickelt und hier auch erstmals verwendet.[7] Die Cloud Native Computing Foundation veröffentlichte Fallstudien anderer Unternehmen, die Prometheus verwenden. Dazu gehören der digitale Hosting-Service Digital Ocean,[34] digitales Festival DreamHack[35], und E-Mail- und Kontaktmigrationsdienst ShuttleCloud[36].

Einige Softwarelösungen[37] wie Grafana selbst[38], Ansible Tower[39], die verteilte Speicherlösung Ceph[40], der Messagebroker RabbitMQ[41] und GitLab[42] bieten Prometheus Metriken als aktivierbare Funktion an, die dann durch eine Prometheus-Instanz weiter verarbeitet werden können.

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Release 2.26.0. 31. März 2021 (abgerufen am 17. April 2021).
  2. Projects. In: Cloud Native Computing Foundation. Abgerufen am 30. August 2020 (amerikanisches Englisch).
  3. a b "Die Kombination von Prometheus und Grafana ist für das Monitoring von Kubernetes Clustern in den letzten Jahren zu einem de-facto Standard in der Cloud Native Community geworden." aus microsoft.com - Ein neues Zuhause für Prometheus Metriken und Grafana Dashboards außerhalb des Kubernetes Clusters im Azure Monitor
  4. About cluster monitoring - Cluster monitoring | Monitoring | OpenShift Container Platform 4.5. Abgerufen am 30. August 2020.
  5. "you can monitor the state and processes of your cluster nodes, Kubernetes components, and software deployments through integration with Prometheus, a leading open-source monitoring solution." aus rancher.com - Integrating Rancher and Prometheus for Cluster Monitoring
  6. a b c Zeitreihen-basiertes Monitoring mit Prometheus. In: Linux-Magazin. Abgerufen am 30. August 2020 (deutsch).
  7. a b c d e f g h Prometheus: Monitoring at SoundCloud. Abgerufen am 30. August 2020 (englisch).
  8. Monitor Docker Containers with Prometheus. Abgerufen am 30. August 2020.
  9. "In particular, Prometheus42 shares many similarities with Borgmon, especially when you compare the two rule languages." aus Practical Alerting from Time-Series Data
  10. cncf: Cloud Native Computing Foundation Accepts Prometheus as Second Hosted Project. In: Cloud Native Computing Foundation. 9. Mai 2016, abgerufen am 30. August 2020 (amerikanisches Englisch).
  11. cncf: Prometheus 1.0 Is Here. In: Cloud Native Computing Foundation. 18. Juli 2016, abgerufen am 30. August 2020 (amerikanisches Englisch).
  12. Kristen Evans: Cloud Native Computing Foundation Announces Prometheus Graduation. In: Cloud Native Computing Foundation. 9. August 2018, abgerufen am 30. August 2020 (amerikanisches Englisch).
  13. https://github.com/prometheus/alertmanager
  14. Instrumentation | Prometheus. Abgerufen am 30. August 2020.
  15. github.com/prometheus/prometheus/ - Default port allocations
  16. Client libraries | Prometheus. Abgerufen am 30. August 2020.
  17. https://github.com/prometheus/node_exporter
  18. https://github.com/prometheus-community/windows_exporter
  19. Prometheus: Collects metrics, provides alerting and graphs web UI. Abgerufen am 30. August 2020 (amerikanisches Englisch).
  20. Data model | Prometheus. Abgerufen am 30. August 2020.
  21. Zeitreihen-basiertes Monitoring mit Prometheus (Seite 3)
  22. Integrations | Prometheus. Abgerufen am 30. August 2020.
  23. Prometheus endpoints support in InfluxDB | InfluxData Documentation. Abgerufen am 30. August 2020 (englisch).
  24. Thanos. Abgerufen am 30. August 2020 (englisch).
  25. Thanos: Hochverfügbares und skalierbares Prometheus. In: JAXenter. 28. November 2018, abgerufen am 30. August 2020 (deutsch).
  26. Thanos. Abgerufen am 30. August 2020 (englisch).
  27. prometheus.io - Metric types
  28. Abhishek Dubey: AlertManager Integration with Prometheus. 16. März 2020, abgerufen am 30. August 2020 (englisch).
  29. Prometheus monitoring: Pros and cons. In: JAXenter. 28. Juli 2017, abgerufen am 30. August 2020 (amerikanisches Englisch).
  30. OpenMetrics is a working group to determine a standard for exposing metrics data, influenced by the Prometheus exposition format.
  31. influxdata/telegraf. Abgerufen am 30. August 2020 (englisch).
  32. Stackdriver Kubernetes Monitoring: Comprehensive Kubernetes observability from the start
  33. Kubernetes Prometheus and OpenMetrics metrics collection
  34. Kristen Evans: Prometheus User Profile: How DigitalOcean Uses Prometheus. In: Cloud Native Computing Foundation. 28. Februar 2017, abgerufen am 30. August 2020 (amerikanisches Englisch).
  35. Kristen Evans: Prometheus User Profile: Monitoring the World's Largest Digital Festival - DreamHack. In: Cloud Native Computing Foundation. 24. August 2016, abgerufen am 30. August 2020 (amerikanisches Englisch).
  36. Kristen Evans: Prometheus User Profile: ShuttleCloud Explains Why Prometheus Is Good for Your Small Startup. In: Cloud Native Computing Foundation. 17. Mai 2017, abgerufen am 30. August 2020 (amerikanisches Englisch).
  37. https://prometheus.io/docs/instrumenting/exporters/#software-exposing-prometheus-metrics
  38. https://grafana.com/docs/grafana/latest/administration/metrics/
  39. https://docs.ansible.com/ansible-tower/latest/html/administration/metrics.html
  40. https://docs.ceph.com/en/latest/mgr/prometheus/
  41. https://www.rabbitmq.com/prometheus.html
  42. GitLab Prometheus metrics | GitLab. Abgerufen am 30. August 2020.