Vérification des Backups
Ne découvrez pas l'échec d'un backup lors d'une restauration
Un backup qui n'est jamais vérifié n'est pas un backup. C'est une illusion de sécurité. Trop d'entreprises découvrent que leurs sauvegardes ont échoué au moment précis où elles en ont besoin - lors d'un crash serveur, d'une attaque ransomware, ou d'une erreur humaine catastrophique.
Le scénario cauchemar est classique : le serveur de production tombe. L'équipe technique lance sereinement la restauration depuis le dernier backup. Et là, surprise : le backup date de 3 semaines car le script échouait silencieusement depuis tout ce temps. Ou pire : le fichier existe mais il est corrompu.
Le monitoring heartbeat des backups élimine ce risque. En vérifiant activement que chaque backup s'exécute, réussit, et produit un fichier valide, vous avez la garantie que vos données sont protégées. Et si quelque chose ne va pas, vous le savez immédiatement.
Les Risques des Backups Non Surveillés
Sans monitoring proactif, de nombreux problèmes peuvent passer inaperçus :
- Échec silencieux : Le script de backup plante avec une erreur, mais personne n'est notifié. Le backup n'existe tout simplement pas.
- Espace disque saturé : Le disque de destination est plein. Le backup commence mais ne peut pas écrire. Aucune alerte n'est générée.
- Fichiers corrompus : Le backup s'écrit mais une erreur de disque ou de réseau corrompt les données. Le fichier existe, mais il est inutilisable.
- Script modifié : Quelqu'un a "temporairement" modifié le script de backup et a oublié de le remettre. Le backup ne fait plus ce qu'il devrait.
Que Vérifier dans un Backup
Un backup fiable doit être vérifié à plusieurs niveaux :
- Exécution : Le processus de backup a-t-il démarré et terminé ? C'est le minimum - vérifiable via heartbeat.
- Existence du fichier : Le fichier de backup existe-t-il à l'emplacement attendu ? Un backup qui "réussit" sans créer de fichier est inutile.
- Taille cohérente : Le fichier fait-il une taille raisonnable ? Un backup de 10 Mo alors qu'il devrait faire 5 Go indique un problème.
- Intégrité (checksum) : Le fichier n'est-il pas corrompu ? Un checksum MD5 ou SHA256 permet de le vérifier.
- Restaurabilité : Le backup peut-il être effectivement restauré ? Seul un test de restauration réel le confirme.
Types de Backups à Surveiller
Chaque type de backup a ses particularités de monitoring :
Backups de bases de données
MySQL, PostgreSQL, MongoDB - les dumps de bases de données sont critiques. Vérifiez que le dump s'est terminé sans erreur, que le fichier n'est pas vide, et que sa taille est cohérente avec le volume de données. Pour les grosses bases, surveillez aussi la durée d'exécution.
Backups de fichiers
Sauvegardes de répertoires, de configurations, de médias. Utilisez des outils comme rsync ou tar. Vérifiez le nombre de fichiers copiés, la taille totale, et l'absence d'erreurs. Attention aux permissions qui peuvent bloquer certains fichiers.
Backups cloud (S3, GCS, Azure)
L'upload vers le cloud peut échouer pour de multiples raisons : credentials expirés, quota dépassé, problème réseau. Vérifiez que le fichier est bien présent dans le bucket et accessible.
Script de Backup Monitored Complet
Voici un exemple de script bash qui intègre toutes les vérifications recommandées :
#!/bin/bash
# backup_mysql.sh - Backup MySQL avec monitoring complet
HEARTBEAT_URL="https://monitao.com/ping/VOTRE_TOKEN"
BACKUP_DIR="/backups/mysql"
DB_NAME="production"
MIN_SIZE_MB=100 # Taille minimale attendue en Mo
# Ping de démarrage
curl -s "$HEARTBEAT_URL/start" > /dev/null
# Exécution du backup
BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_$(date +%Y%m%d_%H%M%S).sql.gz"
mysqldump -u backup_user -p"$DB_PASSWORD" "$DB_NAME" | gzip > "$BACKUP_FILE" 2>/tmp/backup_error.log
# Vérification 1: Le fichier existe
if [ ! -f "$BACKUP_FILE" ]; then
curl -s "$HEARTBEAT_URL/fail?error=file_not_created" > /dev/null
exit 1
fi
# Vérification 2: La taille est cohérente
FILE_SIZE_MB=$(($(stat -f%z "$BACKUP_FILE" 2>/dev/null || stat -c%s "$BACKUP_FILE") / 1024 / 1024))
if [ "$FILE_SIZE_MB" -lt "$MIN_SIZE_MB" ]; then
curl -s "$HEARTBEAT_URL/fail?error=file_too_small&size=${FILE_SIZE_MB}MB" > /dev/null
exit 1
fi
# Vérification 3: Test d'intégrité gzip
if ! gzip -t "$BACKUP_FILE" 2>/dev/null; then
curl -s "$HEARTBEAT_URL/fail?error=corrupted_gzip" > /dev/null
exit 1
fi
# Tout est OK - ping de succès
curl -s "$HEARTBEAT_URL?size=${FILE_SIZE_MB}MB" > /dev/null
echo "Backup terminé: $BACKUP_FILE (${FILE_SIZE_MB} MB)"
Ce script vérifie chaque étape critique : création du fichier, taille minimale, intégrité de la compression. Le ping de succès n'est envoyé que si toutes les vérifications passent.
Implémentation Étape par Étape
Voici comment mettre en place le monitoring de vos backups :
- 1. Identifier les backups critiques
Listez tous vos backups : bases de données, fichiers de configuration, données utilisateurs, logs. Priorisez par criticité. - 2. Créer les heartbeats
Dans MoniTao, créez un heartbeat par backup avec un nom explicite (backup-mysql-prod, backup-files-media). Configurez le timeout selon la durée normale du backup + marge. - 3. Intégrer les pings
Modifiez vos scripts de backup pour envoyer un ping de démarrage et un ping de fin (succès ou échec selon le résultat). - 4. Ajouter les vérifications
Avant d'envoyer le ping de succès, vérifiez que le fichier existe, que sa taille est cohérente, et idéalement son intégrité. - 5. Configurer les alertes
Activez les alertes email et SMS pour les backups critiques. Un backup échoué de nuit doit vous réveiller.
Configuration des Alertes
Les bonnes alertes vous préviennent au bon moment :
- Backup non démarré : Le backup devait s'exécuter à 3h mais aucun ping de démarrage n'a été reçu. Cause possible : cron désactivé, serveur arrêté.
- Backup trop long : Le backup a démarré mais n'est pas terminé après le timeout configuré. Cause possible : base de données bloquée, problème réseau.
- Backup échoué : Le script a explicitement signalé un échec via le ping fail. L'alerte contient les détails de l'erreur.
- Fichier invalide : Le backup s'est terminé mais le fichier est trop petit ou corrompu. Le script doit inclure cette vérification.
Erreurs Courantes à Éviter
Ces erreurs diminuent l'efficacité de votre monitoring de backup :
- Ping avant vérification : Envoyer le ping de succès avant de vérifier que le fichier existe et est valide. Le backup peut avoir "réussi" sans rien produire.
- Ignorer la taille : Ne pas vérifier que le fichier fait une taille cohérente. Un backup de 0 octets ou de 1 Mo au lieu de 10 Go passe inaperçu.
- Timeout trop court : Configurer un timeout basé sur la durée moyenne. Le jour où le backup prend plus de temps (données plus volumineuses), fausse alerte.
- Jamais tester la restauration : Avoir un backup vérifié mais ne jamais tester qu'on peut effectivement le restaurer. Le backup peut être structurellement invalide.
Checklist Backup Monitoring
- Inventaire de tous les backups critiques réalisé
- Heartbeat créé pour chaque backup avec timeout approprié
- Scripts modifiés pour envoyer ping start et end
- Vérifications post-backup (existence, taille, intégrité) implémentées
- Alertes configurées avec les bons canaux (email, SMS)
- Test de restauration planifié régulièrement
Questions Fréquentes
Comment vérifier que mon backup n'est pas corrompu ?
Pour les fichiers compressés (gzip, zip), utilisez les outils de vérification intégrés (gzip -t, unzip -t). Pour les dumps SQL, vous pouvez tenter un dry-run de restauration. Pour une vérification complète, calculez un checksum (sha256sum) et stockez-le avec le backup.
Mon backup prend 4 heures. Comment le surveiller efficacement ?
Configurez un timeout de 5-6h (durée normale + 50%). Envoyez un ping de démarrage et un ping de fin. Pour les très longs backups, ajoutez des pings de progression (par exemple toutes les heures) pour détecter les blocages avant le timeout global.
Que faire si le backup réussit mais le fichier est anormalement petit ?
Intégrez une vérification de taille dans votre script. Définissez une taille minimale acceptable basée sur l'historique. Si le fichier est en dessous du seuil, envoyez un ping fail avec "error=file_too_small&size=XXX".
Faut-il surveiller les backups vers le cloud (S3, GCS, Azure) ?
Absolument ! Le cloud n'est pas magique. Les credentials peuvent expirer, les quotas peuvent être atteints, les régions peuvent avoir des incidents. Vérifiez que l'upload a réussi (code retour de aws s3 cp ou gsutil cp) et que le fichier est bien présent et accessible.
Comment surveiller les backups gérés par des outils tiers (cPanel, Plesk) ?
Ces outils génèrent souvent des logs ou des hooks. Créez un script cron qui vérifie la présence du dernier backup, sa taille, et envoie le ping en fonction. Vous pouvez aussi utiliser les webhooks de ces outils s'ils en proposent.
Dois-je surveiller les backups incrémentiels différemment des backups complets ?
Les backups incrémentiels produisent des fichiers de taille variable (parfois très petits si peu de changements). Adaptez vos seuils ou désactivez la vérification de taille pour les incrémentiels. L'important est de vérifier que la chaîne complète (full + incrémentiels) reste cohérente.
Protégez Vos Données Critiques
Vos backups sont votre dernière ligne de défense contre la perte de données. Ils méritent un niveau de surveillance à la hauteur de leur importance. Un backup non vérifié est aussi dangereux qu'aucun backup - vous pensez être protégé alors que vous ne l'êtes pas.
Avec MoniTao, vous pouvez mettre en place un monitoring complet de vos backups en quelques minutes. Exécution, vérification, alertes - tout est couvert. Ne découvrez plus jamais qu'un backup a échoué au moment où vous en avez besoin.
Liens utiles
Prêt à dormir sur vos deux oreilles ?
Commencez gratuitement, sans carte bancaire.