Back to Blog
monitoring docker tutorial

Monitoring mit Uptime Kuma

Du willst wissen ob deine Services laufen? Uptime Kuma ist die einfachste Lösung.

Was ist Uptime Kuma?

  • Self-hosted Monitoring
  • Schicke Status-Page
  • Benachrichtigungen (Telegram, Discord, Slack, Mail...)
  • Keine Abhängigkeiten zu externen Services

Installation

Docker (empfohlen)

services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    restart: unless-stopped
    volumes:
      - uptime-kuma:/app/data
    ports:
      - "3001:3001"

volumes:
  uptime-kuma:
docker compose up -d

Fertig. Öffne http://server-ip:3001.

Mit Traefik

services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    restart: unless-stopped
    volumes:
      - uptime-kuma:/app/data
    networks:
      - proxy
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.uptime.rule=Host(`status.example.com`)"
      - "traefik.http.routers.uptime.tls.certresolver=letsencrypt"
      - "traefik.http.services.uptime.loadbalancer.server.port=3001"

networks:
  proxy:
    external: true

Ersten Monitor erstellen

  1. Öffne das Dashboard
  2. "Add New Monitor"
  3. Wähle Monitor-Typ

HTTP(s) Monitor

Für Webseiten und APIs:

  • URL: https://example.com
  • Interval: 60 Sekunden
  • Expected Status Code: 200

TCP Port Monitor

Für Services die kein HTTP sprechen:

  • Hostname: db.example.com
  • Port: 5432

Docker Container

Uptime Kuma kann Docker Container überwachen:

services:
  uptime-kuma:
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro

Dann Monitor-Typ "Docker Container" wählen.

DNS Monitor

Prüft ob DNS-Records korrekt sind:

  • Hostname: example.com
  • Record Type: A
  • Expected Value: 1.2.3.4

Benachrichtigungen einrichten

Telegram

  1. Bot erstellen via @BotFather
  2. Chat-ID ermitteln (Nachricht an Bot, dann https://api.telegram.org/bot<TOKEN>/getUpdates)
  3. In Uptime Kuma: Settings → Notifications → Telegram

Discord

  1. Server Settings → Integrations → Webhooks
  2. Webhook URL kopieren
  3. In Uptime Kuma: Settings → Notifications → Discord

Mehrere Benachrichtigungen

Du kannst pro Monitor verschiedene Notifications setzen:

  • Kritische Services: Telegram + SMS
  • Interne Tools: Nur Discord
  • Dev-Umgebung: Nur im Dashboard

Status Page

Das Killer-Feature: Öffentliche Status-Seite.

  1. Status Pages → New Status Page
  2. Slug wählen (z.B. status)
  3. Monitore hinzufügen
  4. Design anpassen

Erreichbar unter https://status.example.com/status

Incident Management

Bei Problemen:

  1. Status Page → "Post Incident"
  2. Beschreibung hinzufügen
  3. Wird auf der Status Page angezeigt

Maintenance Windows

Geplante Wartung ohne False Alarms:

  1. Maintenance → Schedule
  2. Zeitraum wählen
  3. Betroffene Monitore auswählen

Während der Maintenance: Keine Alerts.

API & Badges

Status Badge

Für dein README:

![Status](https://status.example.com/api/badge/1/status)

Push Monitor

Für Cronjobs und Scripts:

  1. Monitor erstellen mit Typ "Push"
  2. URL kopieren
  3. Am Ende deines Scripts:
curl -fsS "https://status.example.com/api/push/xxxxx?status=up&msg=OK"

Wenn der Push ausbleibt → Alert.

Backup

Wichtig: Die SQLite-Datenbank sichern!

# Im Container
docker exec uptime-kuma sqlite3 /app/data/kuma.db ".backup '/app/data/kuma-backup.db'"

# Oder Volume sichern
docker run --rm \
  -v uptime-kuma:/data \
  -v $(pwd):/backup \
  alpine tar -czf /backup/uptime-kuma.tar.gz /data

Tipps

  1. Interval nicht zu kurz: 60s reicht meist
  2. Retries: 2-3 Retries bevor Alert (gegen Flapping)
  3. Timeout: Anpassen für langsame Endpoints
  4. Tags nutzen: Monitore gruppieren
  5. Backup nicht vergessen: Alle Monitore sind in der DB

Alternativen

  • Gatus: Auch gut, config-file basiert
  • Healthchecks.io: Für Cronjob-Monitoring (auch self-hosted)
  • Prometheus + Grafana: Für komplexeres Monitoring

Fazit

Uptime Kuma ist in 5 Minuten aufgesetzt und macht genau was es soll. Schicke Status-Page, flexible Alerts, keine Kosten. Perfekt für kleine bis mittlere Setups.

Made with by Daniel Hiller

|