Files
da-HomeNetDocumentation/PI5/MonitoringUndAlerting.md
T

161 lines
5.5 KiB
Markdown

---
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://<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 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!