Skip to content
BotServBotServ
DockerMonitoringGrafanaPrometheuscAdvisorNode Exporter

Docker-Monitoring mit Grafana und Prometheus

Container, Ressourcen und KI-Dienste in Docker überwachen. Grafana, Prometheus, cAdvisor und Node Exporter.

S

schutzgeist

3 min read
Docker-Monitoring mit Grafana und Prometheus

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.

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

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.

Zurück zum KI Blog
Share:

Ähnliche Beiträge