Grafana-Dashboards bauen: von der Datenquelle zum Panel
So bauen Sie mit Grafana aussagekräftige Dashboards: Installation auf Debian oder Ubuntu, Datenquelle anbinden, erstes Panel mit Query, Einheiten und Schwellenwerten, Template-Variablen und Export als JSON.
Geprüft am 30.09.2026 · für Grafana 13.2.3
WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Grafana-Dashboards stellen Metriken aus Prometheus, PostgreSQL oder MySQL als Panels dar. Diese Anleitung führt Sie von der Installation über die erste Datenquelle bis zum Panel mit Einheiten und Schwellenwerten und zeigt Export und Import als JSON. Die Befehle gelten für Debian 12/13 und Ubuntu 24.04 LTS, die Menüpfade für Grafana 12 und 13.
Voraussetzungen
- Ein Server mit Debian 12/13 oder Ubuntu 24.04 LTS (amd64 oder arm64), mindestens 1 CPU-Kern und 512 MB RAM (Herstellerangabe), für mehrere Nutzer und Dashboards 2 Kerne und 2 GB RAM, und
sudo-Rechten. - Internetzugriff für das APT-Repo
apt.grafana.com. - Eine erreichbare Datenquelle: ein laufender Prometheus (Standard
http://localhost:9090) oder eine PostgreSQL-/MySQL-Datenbank mit lesendem Benutzer. - Port
3000/tcpfür die Web-UI, im LAN oder hinter einem Reverse-Proxy mit TLS. - Grundkenntnisse der Shell und, je nach Datenquelle, von PromQL oder SQL.
Hinweis zur Sicherheit: Grafana liefert auf Port 3000 standardmäßig unverschlüsseltes HTTP aus. Setzen Sie es im Produktivbetrieb hinter einen Reverse-Proxy mit TLS und öffnen Sie die Firewall nur gezielt.
Schritt 1: Grafana über das offizielle APT-Repo installieren
Installieren Sie die Hilfspakete und legen Sie den GPG-Schlüssel von Grafana Labs ab. Der Schlüssel gpg-full.key liegt im ASCII-Format vor und wird direkt als .asc gespeichert, passend zur signed-by-Angabe in der Repo-Zeile.
# Voraussetzungen + GPG-Key (Debian 12 / Ubuntu 24.04)
sudo apt-get install -y apt-transport-https wget gnupg
sudo mkdir -p /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/grafana.asc https://apt.grafana.com/gpg-full.key
sudo chmod 644 /etc/apt/keyrings/grafana.ascTragen Sie das stabile Repo ein; signed-by verweist exakt auf die Schlüsseldatei:
# Offizielles APT-Repo (stable) eintragen
echo "deb [signed-by=/etc/apt/keyrings/grafana.asc] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.listAktualisieren Sie die Paketliste und installieren Sie Grafana OSS:
# Installieren (Grafana OSS)
sudo apt-get update
sudo apt-get install -y grafanaDas Paket grafana ist die Open-Source-Edition. Grafana Labs empfiehlt inzwischen grafana-enterprise: Es ist ebenfalls kostenlos, enthält alle OSS-Funktionen und schaltet Enterprise-Funktionen nur mit Lizenz frei. Für diese Anleitung genügen beide.
Verifizieren: apt-cache policy grafana zeigt als Quelle https://apt.grafana.com stable/main und eine installierte Version (Stand September 2026: 13.x).
Schritt 2: Dienst starten und Web-UI prüfen
Grafana läuft als systemd-Unit grafana-server (nicht grafana). Aktivieren und starten Sie den Dienst:
# Dienst aktivieren, starten und prüfen
sudo systemctl daemon-reload
sudo systemctl enable --now grafana-server
sudo systemctl status grafana-serverNutzen Sie UFW, geben Sie den Web-Port frei (besser nur für Ihr Admin-Netz, z. B. sudo ufw allow from 192.168.1.0/24 to any port 3000 proto tcp):
# Optional: Firewall (UFW) Port 3000 freigeben
sudo ufw allow 3000/tcpÖffnen Sie http://SERVER-IP:3000 im Browser und melden Sie sich mit admin/admin an. Grafana fordert sofort ein neues Passwort an; die Seite lässt sich überspringen, tun Sie das nicht.
Verifizieren: systemctl status grafana-server zeigt active (running), curl -s http://localhost:3000/api/health liefert "database": "ok", und nach dem Login erscheint die Startseite „Welcome to Grafana“.
Haben Sie das Admin-Passwort vergessen, setzen Sie es per CLI zurück (grafana-cli ist veraltet):
# Admin-Passwort per CLI zurücksetzen
sudo grafana cli --homepath /usr/share/grafana --config /etc/grafana/grafana.ini admin reset-admin-password 'NeuesStarkesPasswort'Zur Orientierung die wichtigsten Pfade auf dem System:
# Konfiguration: /etc/grafana/grafana.ini
# Daten: /var/lib/grafana/ (grafana.db als SQLite, plugins/)
# Logs: /var/log/grafana/Schritt 3: Datenquelle anbinden
Eine Datenquelle (Data source) verbindet Grafana mit Ihren Metriken. Sie binden sie über das linke Menü Connections > Add new connection an. Prometheus, PostgreSQL und MySQL sind als Core-Plugins enthalten.
Prometheus anbinden
Öffnen Sie Connections > Add new connection, suchen Sie nach Prometheus und klicken Sie Add new data source. Tragen Sie unter Prometheus server URL die Adresse Ihres Prometheus ein und klicken Sie Save & test:
Prometheus server URL: http://localhost:9090Verifizieren: Grafana meldet Successfully queried the Prometheus API. Bei bad gateway oder connection refused prüfen Sie Port 9090 und die URL.
PostgreSQL anbinden
Legen Sie in der Datenbank zuerst einen Benutzer an, der nur SELECT darf. So können Panel-Queries nicht schreiben (Least Privilege).
-- Dedizierten Lese-Benutzer in PostgreSQL anlegen
CREATE USER grafana_ro WITH PASSWORD 'StarkesPasswort';
GRANT CONNECT ON DATABASE meinedb TO grafana_ro;
GRANT USAGE ON SCHEMA public TO grafana_ro;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO grafana_ro;
-- Auch für künftige Tabellen automatisch SELECT vergeben:
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO grafana_ro;Wählen Sie in Grafana PostgreSQL und tragen Sie Host und Port (z. B. 127.0.0.1:5432), Database, User, Password und den TLS/SSL Mode ein. disable ist nur für lokale oder vertrauenswürdige Netze gedacht; über das Netz nutzen Sie mindestens require, bei eigenen Zertifikaten verify-full. MySQL funktioniert analog über Port 3306.
Verifizieren: Save & test meldet Database Connection OK.
Schritt 4: Erstes Dashboard und Panel anlegen
Öffnen Sie Dashboards > New > New dashboard, klicken Sie + Add visualization und wählen Sie die Datenquelle. Im Query-Editor bauen Sie die Abfrage. Die CPU-Auslastung pro Instanz (setzt den Prometheus Node Exporter voraus) liefert:
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)Bei SQL-Datenquellen erwartet Grafana für Zeitreihen eine Spalte time (oder einen Alias darauf) und einen Wert. $__timeFilter() begrenzt die Abfrage auf den gewählten Zeitraum:
SELECT created_at AS "time", COUNT(*) AS bestellungen
FROM orders
WHERE $__timeFilter(created_at)
GROUP BY 1
ORDER BY 1;Rechts oben wählen Sie die Visualisierung passend zur Aussage:
| Visualisierung | Wofür geeignet |
|---|---|
| Time series | Verläufe über Zeit (CPU, RAM, Requests pro Sekunde). Der Standard für Metriken. |
| Stat | Eine große Einzelkennzahl mit optionaler Sparkline (z. B. freier Speicher gerade jetzt). |
| Gauge / Bar gauge | Ein Wert im Verhältnis zu einer Schwelle (z. B. Festplattenfüllstand in Prozent). |
| Table | Mehrere Spalten und Zeilen, etwa eine Liste von Hosts mit Status. |
Verifizieren: Die Vorschau über dem Query-Editor zeigt Datenpunkte im gewählten Zeitraum; bei „No data“ prüfen Sie Zeitraum und Query mit Query inspector.
Schritt 5: Einheiten, Schwellenwerte und Legende setzen
Im Panel-Editor rechts legen Sie fest, wie Werte dargestellt werden:
- Standard options: Hier setzen Sie die Unit (Einheit), zum Beispiel
Percent (0-100),bytes(IEC)oderrequests/sec. Auch Nachkommastellen und Min/Max gehören hierher. - Thresholds: Schwellenwerte markieren das Panel farblich. Zum Beispiel Grün (Basis), Gelb ab 80, Rot ab 90; kritische Zustände sind so ohne Lesen der Zahl erkennbar.
- Legend: Steuert, welche Serien wie beschriftet werden. Beschränken Sie die Legende auf das Nötige.
Kehren Sie mit Back to dashboard zum Dashboard zurück und ordnen Sie das Panel per Drag-and-drop ein. Zeitreihen gehören in Time series, einzelne Kennzahlen in Stat oder Gauge.
Verifizieren: Die Achse bzw. der Wert zeigt die Einheit (z. B. „%“), und ein Wert über 90 färbt das Panel rot.
Schritt 6: Template-Variablen für flexible Dashboards
Template-Variablen machen ein Dashboard wiederverwendbar: Statt für jeden Server ein eigenes Dashboard zu pflegen, filtern Sie über ein Dropdown. Sie legen sie im Bearbeitungsmodus über Settings > Variables > Add variable an. Die wichtigsten Typen:
| Typ | Zweck |
|---|---|
| Query | Werte dynamisch aus der Datenquelle holen (z. B. alle instance-Labels). |
| Custom | Feste, manuell gepflegte Auswahlliste. |
| Constant | Konstanter, versteckter Wert; wird bei einem Export für eine andere Instanz zur Eingabe beim Import. |
| Interval | Auswahl von Zeit-Intervallen für Aggregationen. |
| Data source / Ad hoc / Text box | Datenquelle umschalten, freie Filter setzen oder Texteingabe ermöglichen. |
In Queries referenzieren Sie eine Variable als $variable oder ${variable}. Beispiel mit einer Query-Variable instance (Query: label_values(up, instance)):
node_memory_MemAvailable_bytes{instance="$instance"}Verifizieren: Oben im Dashboard erscheint ein Dropdown instance mit Ihren Hosts; ein Wechsel aktualisiert das Panel.
Schritt 7: Dashboard speichern, teilen und als JSON exportieren
Speichern Sie das Dashboard oben rechts über Save dashboard unter einem eindeutigen Namen. Zum Versionieren in Git oder für das Provisioning exportieren Sie das JSON-Modell: Klicken Sie in der Toolbar auf Export und wählen Sie Export as code. Für eine andere Grafana-Instanz aktivieren Sie Share dashboard with another instance; dann ersetzt Grafana die Datenquellen-UIDs durch Platzhalter. Mit Download file speichern Sie die Datei.
Den Import starten Sie über Dashboards > New > Import: JSON-Datei hochladen, JSON-Text einfügen oder eine Grafana.com-ID angeben, Datenquelle zuordnen, Import. Stark vereinfacht sieht ein exportiertes Modell so aus:
{
"title": "Server-Uebersicht",
"panels": [
{
"type": "timeseries",
"title": "CPU-Auslastung",
"datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" },
"fieldConfig": {
"defaults": {
"unit": "percent",
"thresholds": {
"steps": [
{ "color": "green", "value": null },
{ "color": "red", "value": 90 }
]
}
}
}
}
],
"templating": { "list": [] }
}Verifizieren: Die heruntergeladene Datei ist gültiges JSON (jq .title datei.json gibt den Namen aus), und ein Test-Import erzeugt ein Dashboard mit Daten.
Share > Share externally (früher „Public dashboard“) macht ein Dashboard ohne Login erreichbar. Nutzen Sie das nur bewusst und nie mit sensiblen Daten.
Typische Fehler
- Falscher Dienstname:
systemctl start grafanaschlägt fehl. Die Unit heißtgrafana-server. - Repo nicht aktualisiert: Ohne
apt-get updatenach dem Eintragen des Repos findet APT das Paketgrafananicht. - Keyring-Falle: Ältere Anleitungen verwenden
gpg --dearmorund eine.gpg-Datei. Stimmt diesigned-by-Angabe nicht mit dem abgelegten Schlüssel überein, scheitertapt-get updatemitNO_PUBKEYoder Signaturfehlern. Legen Sie den ASCII-Key alsgrafana.ascab und verweisen Sie genau darauf. - Standard-Login behalten: Wer
admin/adminbeibehält, öffnet das System für jeden im Netz; Port 3000 spricht zudem kein TLS. - DB-Superuser als Datenquelle: Nutzen Sie nie einen Superuser. Ein Lese-Benutzer mit nur
SELECTverhindert ungewollte Schreibzugriffe. - Prometheus-Verbindung scheitert: Falscher Port oder ein überflüssiger Trailing-Slash in der URL führt zu
bad gatewayoderconnection refused. Prüfen Sie mitSave & test. - Leere Panels nach Import: Feste Datenquellen-UIDs im JSON laufen auf der Zielinstanz ins Leere. Exportieren Sie mit
Share dashboard with another instanceund ordnen Sie die Datenquelle beim Import zu.
Häufige Fragen
Warum erreiche ich Grafana nicht unter Port 3000?
Prüfen Sie, ob der Dienst läuft (sudo systemctl status grafana-server) und mit sudo ss -tlnp | grep 3000 lauscht. Ist er aktiv, blockiert meist die Firewall: sudo ufw allow 3000/tcp. Kontrollieren Sie außerdem http_addr und http_port in /etc/grafana/grafana.ini.
Muss ich für PostgreSQL oder MySQL ein Plugin installieren?
Nein. PostgreSQL und MySQL sind Core-Plugins und in Grafana bereits enthalten. Sie fügen sie direkt über Connections > Add new connection hinzu.
Wie verschlüssele ich den Zugriff auf Grafana?
Setzen Sie Grafana hinter einen Reverse-Proxy wie nginx, der TLS terminiert, oder setzen Sie im Abschnitt [server] der /etc/grafana/grafana.ini protocol = https mit cert_file und cert_key. Öffnen Sie Port 3000 nicht ins Internet.
Welche Visualisierung soll ich für eine einzelne Kennzahl nehmen?
Für eine einzelne, aktuelle Kennzahl eignet sich Stat (mit optionaler Sparkline) oder Gauge, wenn der Wert relativ zu einer Schwelle interessant ist. Verläufe über die Zeit gehören in Time series.
Wie versioniere ich meine Dashboards sinnvoll?
Exportieren Sie jedes Dashboard über Export as code als JSON und legen Sie die Datei in Git ab. So entsteht eine nachvollziehbare Historie, und Sie können Dashboards in andere Instanzen importieren oder per Provisioning ausrollen.
Was passiert mit Constant-Variablen beim Export?
Constant-Variablen sind im Dashboard versteckt. Beim Export mit Share dashboard with another instance werden sie zu Eingabefeldern, für die Sie beim Import einen Wert angeben.
Fazit
Über das offizielle APT-Repo installieren Sie Grafana und betreiben es als Dienst grafana-server. Eine angebundene Datenquelle, die passende Visualisierung sowie Einheiten und Schwellenwerte machen Metriken lesbar. Setzen Sie auf wenige aussagekräftige Panels, nutzen Sie Template-Variablen und versionieren Sie Dashboards als JSON. Datenbank-Benutzer erhalten nur Leserechte, der Zugriff läuft über TLS.
Weiterführende Anleitungen und Quellen
- Alternative für agentenbasiertes Infrastruktur-Monitoring: Zabbix-Server aufsetzen und einen Host überwachen
- Wenn Ihre Datenquelle eine PostgreSQL-Datenbank ist: PostgreSQL-Performance-Tuning für Einsteiger
- Logs zentralisieren mit Grafana Loki: Logs neben den Metriken im selben Grafana
- Weitere Anleitungen rund um Überwachung: Kategorie Monitoring
Quellen: Grafana-Dokumentation: Installation unter Debian/Ubuntu, Dashboards teilen und exportieren, PostgreSQL-Datenquelle konfigurieren (geprüft für Grafana 13, September 2026).


