Monitoring¶
Vue d'ensemble¶
graph TD
Script[homelab_monitor.sh
cron 1min] -->|push| Ntfy[ntfy.sh
Notifications]
Beszel[Beszel Server] -->|dashboard| Web[Interface web]
WT[Watchtower] -->|verifie| Docker[Images Docker]
Script -->|surveille| SSD[SSD]
Script -->|surveille| Temp[Temperature]
Script -->|surveille| Power[Alimentation]
Script -->|surveille| Containers[Containers]
Script -->|surveille| Disk[Espace disque]
Script -->|surveille| RAM[RAM + OOM]
Agent1[Beszel Agent penny] -->|:45876| Beszel
Agent2[Beszel Agent galahad] -->|:45876| Beszel
Agent3[Beszel Agent lancelot] -->|:45876| Beszel
homelab_monitor.sh¶
Script bash executé chaque minute via cron. Surveille :
| Check | Seuil | Alerte |
|---|---|---|
| SSD monte | /mnt/ssd absent |
:octicons-alert-16: critique |
| SSD lisible | Erreur I/O | :octicons-alert-16: critique |
| SSD read-only | Remonte en ro | :octicons-alert-16: critique |
| USB errors dans dmesg | Disconnect/offline | :octicons-alert-16: haute |
| Temperature | > 70°C warning, > 80°C critique | :octicons-alert-16: variable |
| Alimentation | Throttling / under-voltage | :octicons-alert-16: haute |
| Espace disque SD/SSD | > 80% warning, > 95% critique | :octicons-alert-16: variable |
| RAM + OOM kill | > 90% ou OOM detecte | :octicons-alert-16: critique |
| Docker daemon | Ne repond plus | :octicons-alert-16: critique |
| Containers | Stopped / unhealthy | :octicons-alert-16: haute |
Deduplication des alertes¶
Le script utilise des fichiers d'etat dans /var/lib/homelab_monitor/ :
- Une alerte n'est envoyee qu'une seule fois par incident
- Une notification "resolved" est envoyee quand le probleme disparait
- Pas de spam sur ntfy
Configuration¶
NTFY_TOPIC="<topic-randomise>" # Topic ntfy (hex 32 chars, non public)
NTFY_SERVER="https://ntfy.sh"
TEMP_WARN=70 # Seuil warning °C
TEMP_CRIT=80 # Seuil critique °C
Services de monitoring¶
| Service | Role | Acces |
|---|---|---|
| Beszel + agents | Monitoring systeme (CPU, RAM, disque, reseau) — penny, galahad, lancelot | Dashboard web |
| Watchtower | Auto-update non-critiques + notification mises a jour critiques via ntfy | Headless (pas de dashboard) |
| homelab_monitor.sh | Alertes critiques push (SSD, power, temp, Docker) | Notifications ntfy |
| Watchdog BCM2835 | Reboot auto si kernel freeze (timeout 15s) | Hardware |
| Autoheal | Restart auto des containers Docker unhealthy | Container |
| SSD auto-recovery | Remount + fsck + restart Docker apres deconnexion USB | Script (monitor) |
| dns-failover health check | Surveille penny depuis galahad (ping + Traefik + DNS) | LXC 100 / ntfy |
Architecture de resilience¶
Trois couches complementaires, chacune couvre des scenarios differents :
| Couche | Outil | Scenario | Action |
|---|---|---|---|
| 1. Monitoring | homelab_monitor.sh | SSD, temp, RAM, disque, containers | Alerte ntfy |
| 2. Auto-repair | Autoheal | Container unhealthy | Restart container |
| 3. Dernier recours | Watchdog hardware | Kernel freeze | Reboot complet |
Pas de chevauchement
Le watchdog ne remplace PAS le monitoring. Si le SSD se deconnecte, le kernel tourne toujours — le watchdog ne se declenche pas. C'est homelab_monitor.sh qui alerte. Les trois couches sont complementaires.