Ga naar inhoud

Backup-verificatie

Een backup-job die “geslaagd” meldt maar al drie weken niets nieuws wegschrijft, valt niemand op tot je hem nodig hebt. Met een backup-watch vertel je monsys waar de backup terechtkomt; de agent controleert dan zelf of daar recent iets is bijgekomen.

  1. Je registreert per agent een pad: een map (bv. /var/backups/borg) of een bestand (bv. /srv/dumps/db.sql.gz).
  2. De hub geeft de watch-lijst mee in de eerstvolgende ingest-response; er is geen aparte agent-configuratie nodig.
  3. De agent doet elke 30 minuten een stat over het pad en zoekt het nieuwste bestand (tot 8 mappen diep, max. 200 000 entries). Hij opent nooit de bestanden zelf: een watch op een versleutelde borg- of restic-repository werkt zonder leesrechten op de archiefinhoud.
  4. De agent rapporteert newest_mtime, grootte en bestandsnaam als backup_status-payload.
  5. De hub vergelijkt de leeftijd met de ingestelde max_age_hours en alerteert wanneer de backup stale is.

Agent-detailpagina → sectie Backups → + Watch:

Veld Betekenis
Pad absoluut pad op de host
Label vrije naam, verschijnt in alerts (leeg = het pad)
Max. leeftijd (uren) 1 tot 8760; standaard 26 — net meer dan een dagelijkse job

Editor-rol vereist; elke mutatie staat in het audit log. De API is GET/POST /api/v1/backup-watches, PUT/DELETE /api/v1/backup-watches/<id>.

De hub-worker loopt elk uur over alle watches:

Situatie Alert
leeftijd > max_age warning — Backup stale:
leeftijd > 2 × max_age critical — zelfde titel, hogere severity
pad onbereikbaar / fout op de agent warning — Backup check failed:

Alerts worden gededupliceerd op titel: één open alert per watch, geen herhaling elk uur. Ze volgen de gewone alert-pijplijn (ntfy, mail, webhook, on-call).

Migratie 133 voegt de control ISO27001-A.8.13-backup toe. Het bewijs-query telt watches waarvan de laatste backup binnen de max-leeftijd valt; dat cijfer landt automatisch in audit packs en in het compliance-overzicht. Geen watches = geen bewijs.

  • De check is mtime-gebaseerd: een job die een leeg of corrupt bestand aanmaakt, telt als “vers”. Combineer met restore-tests.
  • Netwerkshares moeten gemount zijn op de host waar de agent draait.
  • Agents ouder dan de versie van sessie 18 negeren de watch-lijst; de hub toont dan last_checked_at leeg.