From d6cd86c1d248ef5e39f3adfefe878f6416814804 Mon Sep 17 00:00:00 2001 From: perco Date: Mon, 7 Sep 2026 22:00:29 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20surveillance=20=C3=A9tendue=20aux=20mont?= =?UTF-8?q?ages=20mergerfs=20+=20format=20des=20messages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le crash mergerfs du 07/09 (2x en 24h) n'était pas détecté par la version précédente : un container peut rester "Up" tout en ayant un montage cassé en dessous (FUSE mort silencieusement). Ajout d'une vérification directe des points de montage /mnt/serveurPlex et /mnt/serveurNAS. Corrigé aussi un bug d'affichage : les \n dans le message Discord restaient en texte littéral au lieu de vrais retours à la ligne (bash n'interprète pas \n dans une chaîne "..." classique). --- docker-health-check.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/docker-health-check.sh b/docker-health-check.sh index 2aec1fa..5316df0 100755 --- a/docker-health-check.sh +++ b/docker-health-check.sh @@ -9,6 +9,15 @@ WEBHOOK_URL="https://discord.com/api/webhooks/1466011674371821599/KPvSSS53ot4cjI problems=() +# Vérification des points de montage critiques (mergerfs) : un container peut +# rester "Up" tout en ayant un montage cassé en dessous (FUSE mort), donc la +# vérification de l'état des containers seule ne suffit pas. +for mount_point in /mnt/serveurPlex /mnt/serveurNAS; do + if ! timeout 5 stat "$mount_point" > /dev/null 2>&1; then + problems+=("🔴 **$mount_point** inaccessible (montage cassé, transport endpoint not connected ?)") + fi +done + while IFS='|' read -r name state status; do if [ "$state" = "restarting" ]; then problems+=("🔴 **$name** en boucle de redémarrage ($status)") @@ -30,9 +39,9 @@ if [ ${#problems[@]} -eq 0 ]; then exit 0 fi -message="⚠️ **Alerte containers Docker** (${#problems[@]})\n" +message=$'⚠️ **Alerte homelab** ('"${#problems[@]}"$' problème(s))\n' for p in "${problems[@]}"; do - message+="$p\n" + message+="$p"$'\n' done json_payload=$(python3 -c "import json,sys; print(json.dumps({'content': sys.argv[1]}))" "$message")