Metriken in Grafana visualisieren: Datenquellen, Panels und Community-Dashboards
Verbinde Grafana mit Prometheus, baue ein Panel von Grund auf und importiere dann ein fertiges Dashboard, statt alles von Hand zu bauen.
Prometheus speichert und fragt Metriken ab; es ist nicht dazu gedacht, der Ort zu sein, an dem du sie im Alltag ansiehst. Grafana ist die Dashboard-Schicht, die am häufigsten damit kombiniert wird. Diese Anleitung verbindet beide, baut ein Panel von Hand, um zu verstehen, was darunter passiert, und importiert dann ein Community-Dashboard, statt alles von Grund auf zu bauen, so wie die meiste echte Grafana-Nutzung tatsächlich abläuft.
Prometheus als Datenquelle hinzufügen
# docker-compose.yml (zum Stack der vorherigen Anleitung hinzufügen)
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
volumes:
- grafana-data:/var/lib/grafana
Öffne nach docker compose up -d http://localhost:3000 und melde dich mit dem Standard admin / admin an (du wirst aufgefordert, es zu ändern). Füge unter Connections → Data sources → Add new data source eine Datenquelle hinzu, wähle Prometheus und richte ihre URL auf http://prometheus:9090, den Compose-Service-Namen aus der vorherigen Anleitung, da Grafana und Prometheus dasselbe Docker-Netzwerk teilen. Speichern und testen; eine erfolgreiche Verbindung bestätigt, dass Grafana Prometheus erreichen kann, bevor du etwas darauf aufbaust.
Ein Panel von Hand bauen
Erstelle ein neues Dashboard, füge eine Visualisierung hinzu und wähle die Prometheus-Datenquelle. Statt PromQL direkt zu tippen, lässt dich Grafanas Query Builder eine Abfrage Feld für Feld konstruieren, was ein vernünftiger Weg ist zu lernen, was eine Abfrage tatsächlich tut:
- Metrik: wähle
node_cpu_seconds_total. - Label-Filter: füge
mode != "idle"hinzu, da CPU-Zeit im Modus idle nicht der Teil ist, den du visualisieren willst. Hast du nur eine Instanz von node_exporter, unterscheiden die Labelsjobundinstancenichts und können weggelassen werden; sie zählen, sobald du mehr als einen Host überwachst. - Grafana weist darauf hin, dass ein Counter wie dieser eine Ratenfunktion braucht. Wechsle zu
rate()(oderirate(), obwohl wie in der PromQL-Anleitung behandeltrate()der stetigere Standard ist) über ein Fenster wie1m. - Ändere unter Options die Legende von Auto auf ein eigenes Format,
{{mode}}, damit die resultierenden Liniensystem,user,iowaitund so weiter heißen statt den vollständigen, repetitiven Label-Satz zu zeigen.
Speichere das Panel mit einem Namen und füge es einem Dashboard hinzu. Unter dem Builder zeigt eine Code-Ansicht das tatsächliche PromQL, das Grafana konstruiert hat, was sich einmal anzusehen lohnt, damit du irgendwann den Builder überspringen und Abfragen direkt schreiben kannst.
Ein zweites Panel: Disk-Nutzung aus einem Ausdruck
Nicht jedes Panel stammt aus einer einzelnen Metrik; manche aus der Kombination einiger:
node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}
Das berechnet die tatsächlich auf dem Root-Dateisystem genutzten Bytes, indem es die freien Bytes von der Gesamtgröße abzieht, gefiltert auf den Root-Mountpoint, damit temporäre und virtuelle Dateisysteme das Ergebnis nicht verstopfen. Füge das direkt in die Code-Ansicht des Panels ein, statt zu versuchen, es Feld für Feld zu bauen; alles mit Arithmetik zwischen zwei Metriken ist meist schneller zu schreiben, als sich durch einen Builder zu klicken.
Ein Community-Dashboard importieren, statt von Grund auf zu bauen
Jedes Panel von Hand zu bauen skaliert nicht, sobald du Dutzende Metriken hast, die es wert sind, verfolgt zu werden, und für gängige Exporter hat mit ziemlicher Sicherheit schon jemand anderes ein umfassendes Dashboard gebaut und veröffentlicht. Grafanas Dashboard-Bibliothek ist nach Exporter-Namen durchsuchbar, und jedes Dashboard hat eine numerische ID:
- Durchsuche die Bibliothek nach dem Exporter, den du nutzt (
node exporter,cadvisor), und wähle eines mit guten Bewertungen und einer aktuellen Aktualisierung. - Kopiere seine Dashboard-ID.
- Gehe in Grafana zu Dashboards → New → Import, füge die ID ein und lade es.
- Wähle auf Nachfrage deine Prometheus-Datenquelle und importiere.
Das gibt dir einen vollständigen, vorgefertigten Satz an Panels, CPU, Speicher, Swap, Disk-I/O, Netzwerkfehler, Uptime und mehr, ohne jedes einzeln von Hand zu bauen. Es ist auch ein wirklich nützlicher Weg, PromQL zu lernen: Öffne den Editor eines importierten Panels und lies die Abfragen, die es für eine Metrik nutzt, die du gut verstehst, was oft klarer ist, als Dokumentation isoliert zu lesen.
Von dort anpassen
Ein importiertes Dashboard ist ein Ausgangspunkt, keine endgültige Antwort. Jedes Panel bleibt vollständig bearbeitbar: Passe Label-Filter an, ändere Visualisierungstypen, justiere Schwellen und Farben oder lösche Panels, die du nicht brauchst. Behandle den Import als Gerüst, auf dem du aufbaust, statt als etwas, das du entweder unverändert nutzt oder ganz meidest.
Beliebte Anleitungen
-
Prometheus-Architektur und das Pull-Modell Warum Prometheus abfragt statt zu empfangen und wie Targets, Exporter und Service Discovery zusammenpassen. -
Das Prometheus-Datenmodell: Metriken, Labels und Metriktypen Was eine Zeitreihe in Prometheus tatsächlich ist und das Klartextformat, in dem Targets sie bereitstellen. -
Einstieg in PromQL: Auswählen, Raten und Aggregieren Baue von einem einfachen Metrik-Selektor zu einer echten Abfrage auf: Fehlerrate pro Pfad, live berechnet. -
Einen Host und seine Container mit node_exporter und cAdvisor überwachen Betreibe Prometheus, node_exporter und cAdvisor zusammen, frage beide ab und bestätige, dass die Targets gesund sind.