Zeitreihen-Stack aufsetzen - InfluxDB und Grafana mit Docker

Zeitreihen-Stack aufsetzen - InfluxDB und Grafana mit Docker

InfluxDB als Zeitreihendatenbank, Grafana für Dashboards — in wenigen Minuten steht ein vollständiges Monitoring-System.

Was wir bauen

  • InfluxDB 2: Speichert Metriken als Zeitreihen
  • Grafana: Visualisiert die Daten in Dashboards
  • Telegraf: Sammelt System-Metriken (CPU, RAM, Disk) und schreibt sie in InfluxDB

docker-compose.yml

services:
  influxdb:
    image: influxdb:2.7
    restart: unless-stopped
    ports:
      - "8086:8086"
    environment:
      DOCKER_INFLUXDB_INIT_MODE: setup
      DOCKER_INFLUXDB_INIT_USERNAME: admin
      DOCKER_INFLUXDB_INIT_PASSWORD: supersecretpassword
      DOCKER_INFLUXDB_INIT_ORG: myorg
      DOCKER_INFLUXDB_INIT_BUCKET: metrics
      DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: mytoken123
    volumes:
      - influxdb-data:/var/lib/influxdb2

  grafana:
    image: grafana/grafana:latest
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      GF_SECURITY_ADMIN_PASSWORD: grafanapassword
    volumes:
      - grafana-data:/var/lib/grafana
    depends_on:
      - influxdb

  telegraf:
    image: telegraf:latest
    restart: unless-stopped
    volumes:
      - ./telegraf.conf:/etc/telegraf/telegraf.conf:ro
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
    environment:
      HOST_PROC: /host/proc
      HOST_SYS: /host/sys
    depends_on:
      - influxdb

volumes:
  influxdb-data:
  grafana-data:

Telegraf-Konfiguration

Minimale telegraf.conf für System-Metriken:

[agent]
  interval = "10s"

[[outputs.influxdb_v2]]
  urls = ["http://influxdb:8086"]
  token = "mytoken123"
  organization = "myorg"
  bucket = "metrics"

[[inputs.cpu]]
  percpu = false
  totalcpu = true

[[inputs.mem]]

[[inputs.disk]]
  ignore_fs = ["tmpfs", "devtmpfs"]

[[inputs.net]]

Stack starten

docker compose up -d
docker compose logs -f influxdb  # warten bis InfluxDB bereit ist

InfluxDB initialisiert beim ersten Start automatisch Organisation, Bucket und Admin-Account — dank der DOCKER_INFLUXDB_INIT_* Variablen.

Grafana einrichten

  1. http://localhost:3000 aufrufen, Login: admin / grafanapassword
  2. Data SourcesAdd data sourceInfluxDB
  3. Query Language: Flux
  4. URL: http://influxdb:8086
  5. Organization: myorg, Token: mytoken123, Default Bucket: metrics
  6. Save & Test

Fertige Dashboards importieren

Grafana hat eine Dashboard-Bibliothek unter grafana.com/grafana/dashboards. Dashboard für Telegraf-System-Metriken:

  • Dashboard → Import → ID: 928 (Telegraf: system dashboard)

Der Dashboard lädt die InfluxDB-Daten automatisch und zeigt CPU, RAM, Disk und Netzwerk in Echtzeit.

Ergebnis

Nach weniger als 10 Minuten läuft ein vollständiges Monitoring-System: Telegraf sammelt alle 10 Sekunden System-Metriken, InfluxDB speichert sie dauerhaft, Grafana zeigt sie auf einem professionellen Dashboard. Alle Daten überleben Neustarts durch benannte Volumes.