--- title: Monitoring und Alerting Setup description: published: true date: 2026-01-14T20:26:36.634Z tags: pi5, monitoring, alerting editor: markdown dateCreated: 2026-01-14T20:23:26.086Z --- Das ist eine hervorragende Idee. Eine saubere Dokumentation ist das A und O, wenn man in sechs Monaten mal etwas ändern muss oder das System neu aufsetzen will. Hier ist die Zusammenfassung deines Monitoring-Stacks für den Raspberry Pi 5. --- ## System-Dokumentation: Docker-Monitoring & Alerting Dieses Setup überwacht Docker-Container in Echtzeit und sendet kritische Statusänderungen sowie Ressourcen-Engpässe direkt via Telegram-Bot an den Administrator. ### 1. Die Architektur Das System besteht aus vier Kernkomponenten: * **cAdvisor:** Liest Ressourcen-Daten (CPU, RAM, Status) direkt vom Docker-Daemon. * **Prometheus:** Sammelt diese Daten (Scraping) und gleicht sie mit definierten Alarm-Regeln ab. * **Alertmanager:** Empfängt Alarme von Prometheus, gruppiert sie und regelt den Versand. * **Telegram-API:** Dient als Zustellungsweg für die Benachrichtigungen. --- ### 2. Konfigurationsdateien #### A. Prometheus Rules (`alert_rules_docker.yml`) Hier ist die Logik definiert, wann ein Alarm ausgelöst wird. * **ContainerDown:** Prüft über `time() - container_last_seen`, ob ein Container länger als 60 Sekunden keine Daten mehr gesendet hat. * **HighContainerMemory:** Warnt, wenn ein Container dauerhaft mehr als 1 GB RAM belegt. #### B. Alertmanager Config (`alertmanager.yml`) Regelt das Layout und den Versandweg. * **Grouping:** Fasst Alarme nach `alertname` und `name` zusammen, um Fluten bei Systemstarts zu vermeiden. * **Template:** Nutzt HTML-Formatierung für Telegram, um Informationen wie Dienstname, Startzeit und Beschreibung sauber darzustellen. --- ### 3. Wichtige Befehle für die Verwaltung | Aktion | Befehl | | --- | --- | | **Konfiguration neu laden** | `docker exec -it monitoring-prometheus kill -SIGHUP 1` | | **Alertmanager neu laden** | `docker exec -it monitoring-alertmanager kill -SIGHUP 1` | | **Logs prüfen (Fehlersuche)** | `docker logs -f monitoring-alertmanager` | | **Regel-Check (Syntax)** | `promtool check rules /pfad/zu/rules.yml` | --- ### 4. Endpunkte im Netzwerk * **Prometheus Web-UI:** `http://:9090` (Hier werden Regeln und Metriken visualisiert). * **Alertmanager-UI:** `http://:9093` (Hier können Alarme stummgeschaltet/Silenzen werden). * **cAdvisor Metriken:** `http://:8080/metrics` (Rohdatenquelle). --- ### 5. Sicherheitsrelevante Daten * **Bot-User:** `@YourBotName` * **Chat-ID:** `1925816130` (Deine persönliche Telegram-ID) * **Wichtig:** Der Bot-Token wurde am 14.01.2026 rotiert und sollte niemals im Klartext in öffentlichen Repositories (z. B. GitHub) landen. --- ### 6. Wartungshinweise * **Log-Rotation:** Docker-Container sollten mit einem Log-Limit konfiguriert sein (z. B. `max-size: 10m`), damit die SD-Karte des Pi 5 nicht durch Metrik-Logs gefüllt wird. * **Updates:** Einmal im Monat `docker compose pull` ausführen, um Sicherheitsupdates für Prometheus und cAdvisor zu erhalten. --- **Soll ich dir noch die passende `docker-compose.yml` Sektion für die Log-Begrenzung (Log-Rotation) heraussuchen, damit dein Pi langfristig stabil bleibt?** Das ist ein sehr wichtiger Punkt für einen Raspberry Pi, da Docker standardmäßig unendlich große Log-Dateien schreibt, was bei einem Monitoring-System (viele Schreibvorgänge!) schnell die SD-Karte füllen kann. Hier ist die Ergänzung für deine Dokumentation, wie du die **Log-Rotation** global für alle Monitoring-Container in deiner `docker-compose.yml` festlegst. ### Log-Rotation in der `docker-compose.yml` Füge diesen `logging`-Block zu jedem deiner Dienste (Prometheus, Alertmanager, cAdvisor) hinzu: ```yaml services: prometheus: image: prom/prometheus:latest container_name: monitoring-prometheus # ... deine anderen Einstellungen ... logging: driver: "json-file" options: max-size: "10m" # Maximale Größe einer Datei (10 Megabyte) max-file: "3" # Behalte maximal 3 Dateien (insg. 30MB) alertmanager: image: prom/alertmanager:latest container_name: monitoring-alertmanager # ... logging: driver: "json-file" options: max-size: "10m" max-file: "3" cadvisor: image: gcr.io/cadvisor/cadvisor:latest container_name: monitoring-cadvisor # ... logging: driver: "json-file" options: max-size: "10m" max-file: "3" ``` --- ### Warum ist das wichtig? (Doku-Notiz) Ohne diese Einstellung wächst die Datei `/var/lib/docker/containers/.../*-json.log` ununterbrochen an. Besonders cAdvisor und Prometheus erzeugen viele Statusmeldungen. Mit dieser Konfiguration: 1. Wird die Log-Datei bei **10 MB** "abgeschnitten". 2. Wird eine neue Datei angefangen. 3. Wird die älteste Datei gelöscht, sobald mehr als **3 Dateien** existieren. 4. Dein Speicherverbrauch pro Container für Logs bleibt also bei **maximal 30 MB** gedeckelt. ### Aktivierung Damit die Änderung greift, musst du die Container einmal neu erstellen lassen: ```bash docker compose up -d ``` --- ### Zusammenfassung deiner Monitoring-Doku (Finaler Stand) | Komponente | Zweck | Wichtigste Datei | | --- | --- | --- | | **Metriken** | cAdvisor | `docker-compose.yml` | | **Logik** | Prometheus | `alert_rules_docker.yml` | | **Versand** | Alertmanager | `alertmanager.yml` | | **Sicherheit** | Log-Rotation | `max-size: 10m` | | **Output** | Telegram | `@YourBot` | Damit ist dein Pi 5 jetzt ein echtes "Self-Healing" Monitoring-System!