Docker-Monitoring mit Grafana und Prometheus
Was dieser Artikel über Docker-Monitoring behandelt
- Wichtige Metriken für Docker-Container.
- Prometheus, Grafana, cAdvisor und Node Exporter im Überblick.
- Compose-Beispiel für ein Monitoring-Stack.
- Dashboards, Alerts und Tipps.
- Typische Stolpersteine.
Einleitung: Docker-Monitoring mit Grafana und Prometheus
Wer Ollama, Open WebUI und andere Dienste in Docker betreibt, möchte wissen, wie viel CPU, RAM, Netzwerk und Speicher verbraucht werden. Ein Monitoring-Stack aus Prometheus, Grafana, cAdvisor und Node Exporter zeigt diese Werte übersichtlich an. So lassen sich Engpässe früh erkennen, bevor Dienste ausfallen oder langsam werden.
Dieser Artikel zeigt, wie man diese Komponenten in Docker aufsetzt und welche Metriken für KI-Dienste besonders wichtig sind.
Wichtige Begriffe
- Prometheus: Zeitserien-Datenbank für Metriken.
- Grafana: Visualisierung von Metriken und Dashboards.
- cAdvisor: Container-Advisor, sammelt Docker-Container-Metriken.
- Node Exporter: Sammelt Host-Metriken wie CPU, RAM und Festplatte.
- Scrape: Regelmässiges Abholen von Metriken.
- Target: Ziel, von dem Prometheus Daten holt.
- Dashboard: Grafische Übersicht in Grafana.
- Alert: Benachrichtigung bei Schwellenwertüberschreitung.
Warum Monitoring wichtig ist
- Frühzeitige Erkennung von Engpässen.
- CPU- und RAM-Auslastung pro Container sehen.
- GPU-Auslastung bei KI-Modellen prüfen.
- Netzwerk- und Festplatten-I/O überwachen.
- Langfristige Trends erkennen.
- Alerts bei Problemen erhalten.
Komponenten
Prometheus
Prometheus speichert Metriken als Zeitserien. Er fragt in regelmässigen Abständen definierte Endpunkte ab und speichert die Werte.
Grafana
Grafana verbindet sich mit Prometheus und stellt die Daten in Dashboards dar. Es gibt vorgefertigte Dashboards für Docker, Hosts und GPU.
cAdvisor
cAdvisor läuft als Container und liefert detaillierte Metriken zu laufenden Docker-Containern. Er kennt CPU-, RAM-, Netzwerk- und Dateisystem-Statistiken.
Node Exporter
Node Exporter läuft direkt auf dem Host oder als privilegierter Container und liefert Hardware- und Betriebssystemmetriken.
Compose-Beispiel
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-data:/prometheus
ports:
- "127.0.0.1:9090:9090"
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus"
restart: unless-stopped
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "127.0.0.1:3000:3000"
volumes:
- grafana-data:/var/lib/grafana
restart: unless-stopped
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
container_name: cadvisor
privileged: true
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker:/var/lib/docker:ro
- /dev/disk:/dev/disk:ro
ports:
- "127.0.0.1:8080:8080"
restart: unless-stopped
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- "--path.procfs=/host/proc"
- "--path.rootfs=/rootfs"
- "--path.sysfs=/host/sys"
restart: unless-stopped
volumes:
prometheus-data:
grafana-data:
Prometheus-Konfiguration
prometheus.yml:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']
Grafana-Dashboards
Nach dem Start unter http://localhost:3000 anmelden. Prometheus als Datenquelle hinzufügen. Vorgefertigte Dashboards können über die Dashboard-ID importiert werden:
- Docker: ID 11600
- Node Exporter Full: ID 1860
- cAdvisor: ID 14282
Wichtige Metriken für KI-Dienste
- container_cpu_usage_seconds_total: CPU-Verbrauch pro Container.
- container_memory_usage_bytes: RAM-Nutzung.
- container_network_receive_bytes_total: Netzwerk eingehend.
- container_fs_usage_bytes: Speichernutzung.
- nvidia_gpu_utilization: GPU-Auslastung, wenn Nvidia-Exporter genutzt wird.
- node_memory_MemAvailable_bytes: Verfügbarer RAM auf dem Host.
Alerts
Grafana kann Benachrichtigungen versenden, wenn Werte Schwellen überschreiten. Beispiele:
- Container verwendet über 90 Prozent des zugewiesenen RAM.
- CPU-Auslastung dauerhaft über 95 Prozent.
- Festplattenauslastung über 85 Prozent.
GPU-Monitoring
Für Nvidia-GPUs kann man den Nvidia DCGM Exporter oder nvidia-smi über Node Exporter integrieren. AMD-GPUs erfordern andere Tools wie rocm-smi oder amdgpu-pro. Eine genauere Behandlung findet sich im GPU-Monitoring-Artikel.
Tipps
- Monitoring am Anfang mit aufsetzen, nicht später nachrüsten.
- Prometheus- und Grafana-Volumes sichern.
- Nicht öffentlich verfügbar machen, wenn möglich hinter VPN oder Authentifizierung.
- Ressourcenlimits setzen, damit Monitoring nicht das System überlastet.
- Langfristige Trends beobachten, um Wachstum zu planen.
Typische Stolpersteine
- cAdvisor nicht privilegiert: Container-Metriken fehlen.
- Falsche Pfade bei Node Exporter: Metriken sind unvollständig.
- Prometheus erreichbar Verbindungsprobleme: Container-Namen oder Ports prüfen.
- Keine Daten in Grafana: Datenquelle nicht korrekt konfiguriert.
- Dashboard passt nicht: Metriknamen können je nach Setup variieren.
- Speicher voll: Prometheus-Daten wachsen, Retention einstellen.
Weiterführende Links und Infos
- BotServ.de Docker Compose
- BotServ.de Docker Volumes
- BotServ.de Docker Netzwerk
- BotServ.de Proxmox Monitoring
- BotServ.de GPU-Monitoring
FAQ: Docker-Monitoring
Brauche ich alle vier Komponenten? Für einfaches Monitoring reichen Prometheus, Grafana und cAdvisor. Node Exporter ergänzt Host-Metriken.
Wie viel Ressourcen braucht das Monitoring? Prometheus und Grafana sind ressourcenschonend, cAdvisor kann etwas CPU verbrauchen.
Kann ich auch Nvidia-GPUs überwachen? Ja, mit dem passenden Exporter. Siehe GPU-Monitoring-Artikel.
Sollte ich Grafana öffentlich erreichbar machen? Nein, am besten nur intern oder per VPN.
Wie bewahre ich alte Daten auf? Volumes sichern oder Prometheus Remote-Storage nutzen.
Quellen und weiterführende Literatur
- Prometheus: https://prometheus.io/
- Grafana: https://grafana.com/
- cAdvisor: https://github.com/google/cadvisor
- Node Exporter: https://github.com/prometheus/node_exporter
Zusammenfassung: Docker-Monitoring mit Grafana und Prometheus
Ein Monitoring-Stack aus Prometheus, Grafana, cAdvisor und Node Exporter zeigt, wie Docker-Container und Host belastet sind. Für KI-Dienste sind CPU, RAM, Netzwerk, Speicher und GPU besonders interessant. Mit vorgefertigten Dashboards und Alerts lassen sich Engpässe früh erkennen. Wichtig ist, das Monitoring von Beginn an mitzuplanen, Volumes zu sichern und den Zugriff abzusichern. So behält man das eigene Homelab und die KI-Infrastruktur im Blick.


