Mobile-Menu

Zentrales Server-Monitoring mit Open Source Prometheus und Grafana für Linux-Monitoring

Von Thomas Joos 7 min Lesedauer

Prometheus und Grafana bilden zusammen eine leistungsstarke Open-Source-Lösung für die zentrale Überwachung von Servern, Anwendungen und Netzwerken. Die Tools ermöglichen das Sammeln, Speichern und Visualisieren von Metriken in einer einheitlichen Oberfläche und sind sowohl für kleine Home-Labs als auch für große Produktionsumgebungen geeignet.

Prometheus und Grafana ermöglichen ein leistungsstarkes und flexibles Monitoring von Servern, Anwendungen und Netzwerken – von der Datenerfassung bis zur anschaulichen Visualisierung in Dashboards.(Bild:  Grafana)
Prometheus und Grafana ermöglichen ein leistungsstarkes und flexibles Monitoring von Servern, Anwendungen und Netzwerken – von der Datenerfassung bis zur anschaulichen Visualisierung in Dashboards.
(Bild: Grafana)

Die Überwachung von Systemen mit Prometheus und Grafana erfolgt durch die Erfassung von Logs und Metriken, die unterschiedliche Zwecke erfüllen. Logs enthalten detaillierte Informationen zu Ereignissen, wie Webanfragen oder Fehlern, und dienen der Fehleranalyse. Metriken hingegen liefern numerische Daten wie CPU-Auslastung, Arbeitsspeichernutzung oder Disk-I/O-Operationen. Diese Werte helfen bei der Erkennung von Ressourcenengpässen und Leistungsproblemen. Ein zentralisiertes Monitoring reduziert den Aufwand, mehrere Systeme einzeln zu überprüfen, und erlaubt einen schnellen Überblick über die gesamte Infrastruktur.

Prometheus: Metriken sammeln und speichern

Prometheus ist ein Monitoring-System, das Zeitreihendaten sammelt und speichert. Es verwendet einen eigenen Server, der in festgelegten Intervallen Metriken von Targets abruft. Targets können physische Server, virtuelle Maschinen, Container oder Anwendungen sein. Diese werden in einer zentralen Konfigurationsdatei definiert, in der auch das Abfrageintervall und weitere Parameter festgelegt werden.

Bildergalerie
Bildergalerie mit 6 Bildern

Die erfassten Daten werden in einer internen Datenbank gespeichert. Prometheus verwendet dafür standardmäßig eine Datenaufbewahrung von 15 Tagen. Diese kann angepasst werden, wenn längere Zeiträume für Analysen erforderlich sind. Zur Abfrage der Daten bietet Prometheus die Abfragesprache PromQL, mit der sich komplexe Analysen durchführen lassen.

Prometheus einrichten

Die Installation und Einrichtung von Prometheus erfolgt in mehreren Schritten. Zunächst wird die neueste Version von der offiziellen Prometheus-Webseite heruntergeladen und entpackt. Dies erfolgt über den Befehl:

tar xvfz prometheus-*.tar.gzcd prometheus-*

Die Prometheus-Binary, die als zentrale Komponente dient, befindet sich in diesem Verzeichnis und kann mit dem Befehl:

./prometheus --help

gestartet werden, um eine Übersicht aller verfügbaren Optionen anzuzeigen.

Bevor Prometheus gestartet wird, erfolgt die Konfiguration über die mitgelieferte Datei prometheus.yml. Diese Datei enthält drei Hauptblöcke:

  • Der Abschnitt "global" definiert globale Parameter wie das Standard-Abfrageintervall (scrape_interval), das hier auf 15 Sekunden eingestellt ist, und das Regelbewertungsintervall (evaluation_interval).
  • Der Block "rule_files" ermöglicht das Hinzufügen von Regeln zur Aggregation oder Erstellung neuer Zeitreihen, ist jedoch in der Standardkonfiguration leer.
  • Im Abschnitt "scrape_configs" werden die zu überwachenden Ziele definiert. Die Standardkonfiguration enthält ein Ziel mit dem Namen "prometheus", das die internen Metriken des Prometheus-Servers unter http://localhost:9090/metrics abruft.

Nach Abschluss der Konfiguration wird Prometheus über den Befehl:

./prometheus --config.file=prometheus.yml

gestartet. Sobald Prometheus läuft, ist die Benutzeroberfläche unter http://localhost:9090 zugänglich. Prometheus sammelt automatisch Metriken über den eigenen Zustand, die über die URL http://localhost:9090/metrics abrufbar sind.

In der grafischen Oberfläche können erste Abfragen über den integrierten Ausdrucksbrowser durchgeführt werden. Beispielsweise zeigt der Ausdruck promhttp_metric_handler_requests_total die Gesamtanzahl der HTTP-Anfragen an den /metrics-Endpoint des Servers.

Für die Visualisierung von Metriken bietet Prometheus auch eine einfache Graphenansicht, die über die Registerkarte "Graph" zugänglich ist. Hier können Abfragen wie rate(promhttp_metric_handler_requests_total{code="200"}[1m]) verwendet werden, um die Anfrageraten pro Sekunde grafisch darzustellen.

Um den vollen Nutzen von Prometheus zu entfalten, können zusätzliche Exporter installiert werden, die Metriken von weiteren Systemen oder Diensten bereitstellen. Der Node Exporter ist ein gutes Beispiel und ermöglicht die Überwachung von Host-Metriken wie CPU-Auslastung, Arbeitsspeicher und Festplatten-I/O.

Grafana: Flexible Visualisierung

Grafana ergänzt Prometheus als Visualisierungswerkzeug. Es greift über die PromQL-Schnittstelle auf die Metriken zu und stellt sie in Dashboards dar, die individuell angepasst werden können. Grafana unterstützt verschiedene Datenquellen und ermöglicht neben Prometheus auch die Integration mit InfluxDB, Elasticsearch und vielen weiteren Systemen. Ein Dashboard in Grafana zeigt die Daten in Form von Diagrammen, Tabellen oder Statistiken und lässt sich an die spezifischen Anforderungen einer Umgebung anpassen. Darüber hinaus bietet Grafana eine umfangreiche Bibliothek mit vorgefertigten Dashboards, die von der Community bereitgestellt werden und direkt importiert werden können.

Grafana ermöglicht es, auf Basis von Prometheus-Daten, aussagekräftige Dashboards zu erstellen, die individuell an die Anforderungen angepasst werden können. Dabei bietet die Plattform eine Vielzahl von Visualisierungstypen, wie Zeitreihendiagramme, Gauge-Panels oder Tabellen, um Metriken übersichtlich darzustellen. Die Einrichtung eines Dashboards beginnt mit der Definition der Prometheus-Datenquelle. Hierzu wird die URL des Prometheus-Servers in Grafana hinterlegt, was den Zugriff auf alle gesammelten Metriken ermöglicht. Anschließend können Panels hinzugefügt und mit Abfragen auf PromQL-Basis gefüllt werden. Grafana bietet dafür sowohl eine grafische Oberfläche als auch die Möglichkeit, Abfragen direkt im Code zu bearbeiten.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Netzwerktechnik, IP-Kommunikation und UCC

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Bei der Panel-Erstellung können spezifische Konfigurationen vorgenommen werden, wie das Festlegen von Einheiten, die Anpassung von Legenden und die Definition von Schwellenwerten für Farbcodierungen. Beispielsweise lässt sich die CPU-Auslastung in einem Gauge-Panel visualisieren, wobei Werte über 80 % rot markiert werden können. In einem Zeitreihendiagramm können Zeitspannen wie die letzten 30 Minuten angezeigt und Metriken aggregiert werden, etwa der 95. Perzentilwert der Antwortlatenz.

Zusätzlich ermöglicht Grafana die Gruppierung von Panels in thematische Zeilen, um Dashboards übersichtlich zu organisieren. Dies ist besonders nützlich, wenn verschiedene Metriken wie Netzwerk- und CPU-Daten separat dargestellt werden sollen. Die Zeilen können durch Drag-and-Drop angeordnet und bei Bedarf eingeklappt werden. Das Ergebnis ist ein leistungsfähiges Dashboard, das komplexe Metriken klar visualisiert und die Überwachung von Systemen erheblich erleichtert. Grafana erlaubt es, Dashboards für wiederkehrende Anforderungen zu speichern und bei Bedarf durch weitere Panels oder Transformationen zu erweitern.

Grafana in Betrieb nehmen

Grafana lässt sich auch als Docker-Container in Betrieb nehmen. Dadurch ist die Integration mit Prometheus sehr schnell möglich. Die Installation kann zum Beispiel mit dem folgenden Befehl erfolgen:

docker run -d -p 3000:3000 –name=grafana -v grafana-storage:/var/lib/grafana grafana/grafana

Der angegebene Befehl startet Grafana in einem Docker-Container und konfiguriert dabei einige grundlegende Parameter. Mit docker run wird ein neuer Container auf Basis des Images grafana/grafana gestartet. Der Parameter -d sorgt dafür, dass der Container im Hintergrund läuft, sodass das Terminal für weitere Eingaben verfügbar bleibt. Die Option -p 3000:3000 legt eine Portweiterleitung fest, bei der der Port 3000 des Host-Systems mit dem internen Port 3000 des Containers verknüpft wird, auf dem der Grafana-Server standardmäßig läuft. Mit --name=grafana wird dem Container der Name "grafana" zugewiesen.

Ein wichtiger Bestandteil des Befehls ist: der Parameter

-v grafana-storage:/var/lib/grafana.

Dieser sorgt dafür, dass ein Docker-Volume namens "grafana-storage" erstellt oder verwendet wird, um persistente Daten zu speichern. Das Volume wird mit dem Verzeichnis /var/lib/grafana innerhalb des Containers verknüpft, in dem Grafana alle wichtigen Daten wie Dashboards und Konfigurationen speichert. Dadurch bleiben diese Daten erhalten, auch wenn der Container gelöscht oder neu gestartet wird. Der Befehl stellt somit sicher, dass Grafana zuverlässig und mit dauerhaft gespeicherten Daten läuft. Mehr zur Installation und Einrichtung kann über die Dokumentation in Erfahrung gebracht werden. Die Grafana-Dokumentation zeigt darüber hinaus auch die ausführliche Einrichtung.

Exporters: Datenquellen erweitern

Prometheus sammelt Daten über Exporters, die Metriken aus verschiedenen Systemen bereitstellen. Zu den wichtigsten Exporters gehören:

  • Node Exporter: Erfasst Systemmetriken wie CPU- und Speicherverbrauch auf Linux-Servern.
  • cAdvisor: Bietet detaillierte Metriken zu Container-Ressourcen, wie CPU- und Speichernutzung, speziell für Docker-Umgebungen.
  • Datenbankspezifische Exporters: Exporters wie der MySQL Server Exporter erfassen Datenbankmetriken.

Die Konfiguration dieser Exporters erfolgt über zusätzliche Jobs in der Prometheus-Konfigurationsdatei.

Node Exporter: Tiefgehende Systemüberwachung mit Prometheus

Vor allem der Node Exporter erweitert Prometheus um die Fähigkeit, detaillierte Systemmetriken zu erfassen. Diese Daten umfassen CPU-, Speicher- und Netzwerkmetriken sowie spezifische Informationen wie Temperaturdaten oder Prozesse. Der Node Exporter kann auf nahezu jedem System installiert werden, sei es ein Linux-Server, ein Raspberry Pi oder ein Windows-Rechner. Alternativ lässt er sich auch als Docker-Container betreiben, wobei die Installation direkt auf dem Host-System oft bevorzugt wird, da der Exporter ressourcenschonend ist und keine zusätzlichen Containerverwaltungsprozesse benötigt.

Die Kommunikation zwischen Prometheus und dem Node Exporter erfolgt über das Pull-Prinzip: Der Prometheus-Server ruft die Metriken aktiv vom Exporter ab, der zum Beispiel auf Port 9100 lauscht. Die Konfiguration des Exporters erfolgt über eine Prometheus-Konfigurationsdatei, in der der Exporter als Ziel (Target) definiert wird. Die Metriken werden in regelmäßigen Intervallen abgefragt, die individuell eingestellt werden können, beispielsweise alle fünf Sekunden, um besonders engmaschige Analysen zu ermöglichen.

Für den dauerhaften Betrieb des Node Exporters auf einem Linux-System empfiehlt sich die Integration in das Systemd-Framework. Dies stellt sicher, dass der Exporter automatisch startet und auch nach einem Systemneustart aktiv bleibt. Ein entsprechendes Systemd-Service-Skript lässt sich mit wenigen Zeilen erstellen und ermöglicht so eine zuverlässige und konsistente Datenerfassung.

Durch den Einsatz des Node Exporters in Kombination mit Prometheus entsteht eine leistungsfähige Monitoring-Architektur, die tiefgehende Einblicke in den Zustand und die Performance von Systemen bietet. Diese Informationen können in Grafana visuell aufbereitet und analysiert werden, was eine intuitive Interpretation der Metriken ermöglicht und die Erkennung von Engpässen oder Fehlern vereinfacht.

Sichere Bereitstellung und Schutz der Umgebung

Weder Prometheus noch Grafana bieten standardmäßig Verschlüsselung oder Authentifizierung. Daher sollten diese Systeme nur in sicheren Netzwerken betrieben oder durch zusätzliche Schutzmaßnahmen wie Zugriffskontrollproxies (Teleport) oder Reverse-Proxies (Traefik oder Nginx) abgesichert werden. Grafana bietet ein Login-System, das zusätzliche Sicherheitsschichten wie SSL-Zertifikate sinnvoll ergänzt.

(ID:50305049)