Aller au contenu

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.