Von ORDIX AG auf Montag, 21. März 2022
Kategorie: System Integration

Monitoring Vergleich von Prometheus und InfluxDB

Tools zur Überwachung von Status und Verfügbarkeit einer IT-Infrastruktur sind für viele Entwickler und Administratoren ein unverzichtbares Werkzeug. In diesem Beitrag werden die beiden Monitoring-Lösungen Prometheus und InfluxDB gegenübergestellt und hinsichtlich verschiedener Kriterien verglichen. Ziel ist es herauszustellen, welches Monitoringsystem in welchem Anwendungsfall eingesetzt werden sollte.

Prometheus - Open-Source Monitoring- und Alerting System

Prometheus ist ein Open-Source Monitoring- und Alerting-System, welches 2012 von SoundCloud entwickelt wurde. Seit 2016 ist es Teil der Cloud Native Computing Foundation. Prometheus wird in vielen Unternehmen und Organisationen genutzt und erfreut sich über eine sehr aktive Entwickler- und Benutzergemeinschaft. Prometheus sammelt und speichert seine Metriken als Zeitreihendaten mit einem Zeitstempel und optional mit einer beliebigen Anzahl von Labels. [1]

InfluxDB - Open-Source Datenbankmanagementsystem

InfluxDB ist ein Open-Source Datenbankmanagementsystem speziell für Zeitreihen und wird von der Firma InfluxData entwickelt und vertrieben. Seit InfluxDB 2.0 kann die eigenentwickelte Abfragesprache Flux verwendet werden, welche für den ETL-Prozess (Extract, Transfrom, Load) in Datenbanken optimiert ist. Laut DB-ENGINES [2] ist InfluxDB derzeit die beliebteste Zeitreihendatenbank (November 2021). Neben der Community Version gibt es ebenfalls InfluxDB Cloud und InfluxDB Enterprise. InfluxDB Cloud ist ein Database-as-a-Service- Angebot, welches von InfluxData in Kooperation mit verschiedenen Cloud-Anbietern angeboten wird. Mit dem Angebot wird dank Serverless Computing und der Möglichkeit für horizontale und vertikale Skalierung eine hochverfügbare Lösung mit Support angeboten. Die InfluxDB-Enterprise-Version bietet ähnliche Vorteile mit dem Unterschied, dass InfluxDB On-Premises genutzt werden kann und keine Verwaltung durch InfluxData erfolgt. [3]

Vergleich der beiden Systeme

Datensammlung - Pull gegen Push

Prometheus ist ein Pull-basiertes System. Viele Anwendungen veröffentlichen ihre Metriken direkt über eine API, wo Prometheus sie in definierbaren Zeitabständen abrufen kann (bspw. Ansible Tower, Kubernetes, GitLab). Falls eine Anwendung keine eingebaute API besitzt, gibt es Exporter, welche nachinstalliert werden können und die Metriken entsprechend veröffentlichen. [4]   Prometheus bietet mit dem Push-Gateway optional die Möglichkeit, dass Metriken aktiv in die Zeitreihendatenbank gepusht werden können.

InfluxDB ist ein Push-basiertes System. Es wartet darauf, dass Daten aktiv gepusht werden. Dafür kann unter anderem der Dienst Telegraf verwendet werden. Dieser bietet eine große Bibliothek von Input-Plugins, welche Daten schnell und einfach aus verschiedenen Quellen sammeln und in InfluxDB pushen kann. [5]


Datenspeicherung - Millisekunden gegen Nanosekunden

Prometheus speichert die Metriken mit einem Zeitstempel in Millisekunden, die aus Metriknamen, beliebig vielen Labels und einem Wert bestehen. Labels werden zur Speicherung von Metainformationen genutzt. Die Zeitreihen werden mit dem Datentyp float64 gespeichert. Für Strings gibt es lediglich eingeschränkten Support.

InfluxDB nutzt ein ähnliches Format. Metainformationen werden hier in sogenannten Tags gespeichert. Darüber hinaus gibt es ebenfalls Fields, die bis auf die Indizierung, dieselben Funktionen haben. Zeitstempel können hier in Nanosekunden angegeben werden. Als Datentypen können float64, int64, Boolean und String verwendet werden. [6]

Architektur

Standardmäßig greifen die Prozesse von Prometheus und der Community-Version von InfluxDB auf lokale Server-Ressourcen zu. Die Datenbank wird dabei im lokalen Speicher abgelegt. Prometheus kann über 3rd-Party-Anwendungen, wie Thanos bspw., auf Bucket Storages zugreifen. 

InfluxDB bietet über die Enterprise-Version die Möglichkeit für ein verteiltes Speicher-Cluster. In der Community Version kann InfluxDB nur vertikal skaliert werden.

Abfragesprache - PromQL vs. Flux

Prometheus bietet eine funktionale Abfragesprache namens PromQL an. Der Benutzer kann so Zeitreihendaten in Echtzeit aggregieren. Das Ergebnis der Abfrage kann als Diagramm oder Tabelle dargestellt werden. Externe Systeme können über die HTTP-API eigene Abfragen starten.

Flux ist die Abfragesprache von InfluxDB und wurde als Sprache für Abfrage, Analyse und Verarbeitung von Daten entwickelt. Flux unterstützt verschiedene Datenquellen. Neben InfluxDB werden relationale Datenbanken (z.B. MySQL und PostgreSQL) und CSV als Quelle unterstützt. Die Sprache ist mit Blick auf Benutzerfreundlichkeit, Lesbarkeit, Flexibilität und Zusammensetzbarkeit entwickelt.

Visualisierung auf beiden Systemen

Prometheus bietet einen Expression Browser an, welcher ad-hoc-Abfragen als Tabelle oder Graph anzeigen kann und für Debugging genutzt werden kann. Das volle Potenzial kann nur mit einer Visualisierungssoftware wie z.B. Grafana genutzt werden.

InfluxDB wird von Grafana ebenfalls als Datenquelle unterstützt. Jedoch bietet InfluxDB die Möglichkeit, Daten auch direkt in eigenen Dashboards zu visualisieren.

Benachrichtigungen

Benachrichtigungen laufen in Prometheus über den Alertmanager. Dieser verarbeitet Alerts und leitet sie entsprechend auf diversen Wegen weiter. In InfluxDB müssen sogenannte „Checks" angelegt werden, welche ähnlich funktionieren. Beide werden über Benachrichtigungsregeln konfiguriert.

Anwendungsfälle - Einsatzgebiete der Systeme

InfluxDB wurde als Datenbankmanagementsystem speziell für Zeitreihen entwickelt, Prometheus als Open-Source-Monitoring- und Alerting-System. Beide können für die Überwachung und Speicherung von Zeitreihen genutzt werden.

Prometheus arbeitet als Teil der Cloud Native Computing Foundation sehr gut mit vielen Anwendungen zusammen, die bereits über eine API ihre Metriken veröffentlichen wie z.B. Kubernetes. Aufgrund des Pull-Modells eignet sich Prometheus vorwiegend für ein dauerhaftes Monitoring wie z.B. OS Monitoring oder Monitoring von Datenlast.

InfluxDB eignet sich vorwiegend für Event-basiertes Monitoring, also bspw. DevOps-Überwachunsdaten und IoT-Sensoren. Darüber hinaus bieten die Versionen InfluxDB Cloud und Enterprise weitere Funktionen, wie Produkt-Support, Skalierung und Hochverfügbarkeit ohne den Einsatz von 3rd-Party Anwendungen.

Fazit des Vergleichs

Beide Lösungen bieten sich gut für die Überwachung von Zeitreihendaten an. Dabei stellt sich nicht die Frage, welche Lösung besser ist, sondern welche Lösung am besten zu dem jeweilige Anwendungsfall passt. Wenn es sich überwiegend um Event-Logging handelt, einfache Möglichkeiten zur Skalierung ohne 3rd-Party-Anwendungen die Voraussetzung ist und die Möglichkeit für kommerziellen Support gewünscht ist, führt kein Weg an InfluxDB vorbei. Handelt es sich beispielweise um ein OS-Monitoring bei dem das Pull-Modell genutzt werden soll, eignet sich Prometheus. Prometheus besitzt genauso wie InfluxDB eine starke Community und es werden viele 3rd-Party Erweiterungen angeboten. Mithilfe dieser Erweiterungen können Hochverfügbarkeit oder Skalierung ebenfalls in Prometheus umgesetzt werden.

Kommentare hinterlassen