Aller au contenu

Vérification des sauvegardes

Une tâche de sauvegarde qui annonce « réussi » mais n’écrit plus rien depuis trois semaines passe inaperçue jusqu’au jour où vous en avez besoin. Avec une surveillance de sauvegarde (backup watch) vous indiquez à monsys où la sauvegarde atterrit ; l’agent vérifie ensuite lui-même qu’il y a bien quelque chose de récent.

  1. Vous enregistrez un chemin par agent : un dossier (p. ex. /var/backups/borg) ou un fichier (p. ex. /srv/dumps/db.sql.gz).
  2. Le hub joint la liste des surveillances à la prochaine réponse d’ingestion ; aucune configuration séparée de l’agent n’est nécessaire.
  3. Toutes les 30 minutes, l’agent fait un stat du chemin et cherche le fichier le plus récent (jusqu’à 8 niveaux, max. 200 000 entrées). Il n’ouvre jamais les fichiers : une surveillance sur un dépôt borg ou restic chiffré fonctionne sans aucun droit de lecture sur le contenu.
  4. L’agent rapporte newest_mtime, la taille et le nom du fichier dans une charge utile backup_status.
  5. Le hub compare l’âge au max_age_hours configuré et alerte lorsque la sauvegarde est périmée.

Page de détail de l’agent → section Sauvegardes → + Surveillance :

Champ Signification
Chemin chemin absolu sur l’hôte
Libellé nom libre, affiché dans les alertes (vide = le chemin)
Âge max. (heures) 1 à 8760 ; par défaut 26 — juste plus qu’une tâche quotidienne

Rôle Editor requis ; chaque mutation est inscrite dans le journal d’audit. L’API est GET/POST /api/v1/backup-watches, PUT/DELETE /api/v1/backup-watches/<id>.

Le worker du hub parcourt toutes les surveillances chaque heure :

Situation Alerte
âge > max_age warning — Backup stale: <libellé>
âge > 2 × max_age critical — même titre, sévérité supérieure
chemin inaccessible / erreur côté agent warning — Backup check failed: <libellé>

Les alertes sont dédupliquées par titre : une seule alerte ouverte par surveillance, pas de répétition horaire. Elles suivent le pipeline d’alertes habituel (ntfy, mail, webhook, astreinte).

La migration 133 ajoute le contrôle ISO27001-A.8.13-backup. Sa requête de preuve compte les surveillances dont la dernière sauvegarde est dans l’âge maximal ; ce chiffre alimente automatiquement les audit packs et la vue conformité. Pas de surveillance = pas de preuve.

  • La vérification repose sur le mtime : une tâche qui écrit un fichier vide ou corrompu compte comme « fraîche ». Combinez avec des tests de restauration.
  • Les partages réseau doivent être montés sur l’hôte où tourne l’agent.
  • Les agents antérieurs à la version de la session 18 ignorent la liste ; le hub affiche alors un last_checked_at vide.