161 lines
5.5 KiB
Markdown
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!
|