33800 Docs

← Retour

Proposition : Restauration Docker, Notifications et Crons

Date : 05-01-2026 Statut : En attente de validation Priorité : CRITIQUE Impact : prod-portainer, notifications, dashboard


Diagnostic

1. Docker sur prod-portainer (192.168.1.12) - EN PANNE

Erreur :

mkdir /mnt/stock_36to/33800-stack: permission denied

Cause : daemon.json pointe vers /mnt/stock_36to/... (backup) au lieu de /mnt/stock_8to/... (frontal)

Fichier actuel (/etc/docker/daemon.json) :

{"data-root": "/mnt/stock_36to/33800-stack/docker/prod"}

2. Système de notification - EN PANNE

Les containers suivants ne peuvent pas démarrer car Docker est down :

3. Cron monitoring dashboard - MAL CONFIGURÉ

Crontab actuel de gouroubleu :

0 * * * * /stock_36to/data/33800-stack/monitoring/collect.sh

Problème : Exécute depuis stock_36to (backup) au lieu de stock_8to (frontal)

Scripts collect.sh et generate.sh : Utilisent stock_36to en priorité

if [ -d "/stock_36to/data/33800-stack/monitoring" ]; then
    BASE_DIR="/stock_36to/data/33800-stack/monitoring"  # ← MAUVAIS

4. NeedFinder - OK (sur dev-portainer)


Plan de correction

Étape 1 : Corriger Docker sur prod-portainer

# Sur prod-portainer (192.168.1.12)
ssh gouroubleu@192.168.1.12

# 1. Modifier daemon.json
sudo tee /etc/docker/daemon.json << 'EOF'
{"data-root": "/mnt/stock_8to/33800-stack/docker/prod"}
EOF

# 2. Redémarrer Docker
sudo systemctl restart docker

# 3. Vérifier
sudo systemctl status docker
docker ps

Étape 2 : Vérifier les containers de notification

# Sur prod-portainer après redémarrage Docker
docker ps | grep -E 'notif|apprise|ntfy'

# Si containers pas démarrés, les relancer via Portainer ou docker-compose

Étape 3 : Corriger les scripts monitoring (stock_8to comme source)

Les scripts doivent utiliser stock_8to (frontal) et non stock_36to (backup).

collect.sh - Modifier lignes 11-15 :

# AVANT
if [ -d "/stock_36to/data/33800-stack/monitoring" ]; then
    BASE_DIR="/stock_36to/data/33800-stack/monitoring"
else
    BASE_DIR="/mnt/stock_36to/data/33800-stack/monitoring"
fi

# APRÈS
if [ -d "/stock_8to/33800-stack/monitoring" ]; then
    BASE_DIR="/stock_8to/33800-stack/monitoring"
else
    BASE_DIR="/mnt/stock_8to/33800-stack/monitoring"
fi

generate.sh - Même modification (lignes 7-12)

generate-needfinder.sh - Modifier ligne 8 :

# AVANT
MONITORING_DIR="/mnt/stock_36to/data/33800-stack/monitoring"

# APRÈS
MONITORING_DIR="/stock_8to/33800-stack/monitoring"

Étape 4 : Corriger le crontab de gouroubleu sur PVE

# Remplacer l'ancien cron
crontab -e
# Changer :
# 0 * * * * /stock_36to/data/33800-stack/monitoring/collect.sh ...
# Par :
# 0 * * * * /stock_8to/33800-stack/monitoring/collect.sh >> /var/log/monitoring-33800.log 2>&1

Étape 5 : Tester le flow complet

# 1. Exécuter collect.sh manuellement
/stock_8to/33800-stack/monitoring/collect.sh

# 2. Vérifier que current.json est mis à jour sur stock_8to
ls -la /stock_8to/33800-stack/monitoring/current.json

# 3. Exécuter generate.sh pour créer le dashboard HTML
/stock_8to/33800-stack/monitoring/generate.sh

# 4. Vérifier la sortie HTML
ls -la /tmp/dashboard-33800/index.html

Commandes complètes (copier-coller)

# === 1. DOCKER PROD-PORTAINER ===
ssh gouroubleu@192.168.1.12 "sudo tee /etc/docker/daemon.json << 'EOF'
{\"data-root\": \"/mnt/stock_8to/33800-stack/docker/prod\"}
EOF"

ssh gouroubleu@192.168.1.12 "sudo systemctl restart docker && sleep 5 && docker ps"

# === 2. CORRIGER collect.sh ===
sed -i 's|/stock_36to/data/33800-stack/monitoring|/stock_8to/33800-stack/monitoring|g' /stock_8to/33800-stack/monitoring/collect.sh
sed -i 's|/mnt/stock_36to/data/33800-stack/monitoring|/mnt/stock_8to/33800-stack/monitoring|g' /stock_8to/33800-stack/monitoring/collect.sh

# === 3. CORRIGER generate.sh ===
sed -i 's|/stock_36to/data/33800-stack/monitoring|/stock_8to/33800-stack/monitoring|g' /stock_8to/33800-stack/monitoring/generate.sh
sed -i 's|/mnt/stock_36to/data/33800-stack/monitoring|/mnt/stock_8to/33800-stack/monitoring|g' /stock_8to/33800-stack/monitoring/generate.sh

# === 4. CORRIGER generate-needfinder.sh ===
sed -i 's|/mnt/stock_36to/data/33800-stack/monitoring|/stock_8to/33800-stack/monitoring|g' /stock_8to/33800-stack/monitoring/generate-needfinder.sh

# === 5. CORRIGER CRONTAB ===
crontab -l | sed 's|/stock_36to/data/33800-stack/monitoring|/stock_8to/33800-stack/monitoring|g' | crontab -

# === 6. TEST COMPLET ===
echo "=== Test collect.sh ===" && /stock_8to/33800-stack/monitoring/collect.sh && ls -la /stock_8to/33800-stack/monitoring/current.json
echo "=== Test generate.sh ===" && /stock_8to/33800-stack/monitoring/generate.sh && ls -la /tmp/dashboard-33800/index.html

Vérification après corrections

# Docker et notifications sur prod-portainer
ssh gouroubleu@192.168.1.12 "docker ps --format 'table {{.Names}}\t{{.Status}}' | head -30"

# Vérifier scripts modifiés
grep -n "BASE_DIR" /stock_8to/33800-stack/monitoring/collect.sh | head -5
grep -n "BASE_DIR" /stock_8to/33800-stack/monitoring/generate.sh | head -5

# Crontab corrigé
crontab -l

# Test du flow complet
/stock_8to/33800-stack/monitoring/collect.sh && /stock_8to/33800-stack/monitoring/generate.sh
ls -la /stock_8to/33800-stack/monitoring/current.json
ls -la /tmp/dashboard-33800/

Résumé des corrections

Élément Avant Après
Docker daemon.json stock_36to stock_8to
collect.sh BASE_DIR stock_36to stock_8to
generate.sh BASE_DIR stock_36to stock_8to
generate-needfinder.sh stock_36to stock_8to
Crontab gouroubleu stock_36to stock_8to

Validation requise