5.5 KiB
title, description, published, date, tags, editor, dateCreated
| title | description | published | date | tags | editor | dateCreated |
|---|---|---|---|---|---|---|
| Monitoring und Alerting Setup | true | 2026-01-14T20:26:36.634Z | pi5, monitoring, alerting | markdown | 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
alertnameundnamezusammen, 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://<Pi-IP>:9090(Hier werden Regeln und Metriken visualisiert). - Alertmanager-UI:
http://<Pi-IP>:9093(Hier können Alarme stummgeschaltet/Silenzen werden). - cAdvisor Metriken:
http://<Pi-IP>: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 pullausfü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:
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:
- Wird die Log-Datei bei 10 MB "abgeschnitten".
- Wird eine neue Datei angefangen.
- Wird die älteste Datei gelöscht, sobald mehr als 3 Dateien existieren.
- 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:
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!