01 · Every six hours
Read the backups, not the dashboards.
The backup scan lists Velero Backup objects and
CloudNativePG Backup objects created in the last 48
hours (both configurable), straight from the cluster API, read-only.
Here: 14 Velero runs and 8 database backups in the window.
02 · Failed and partially failed
"Partially" failed is still failed.
Velero runs in Failed or
PartiallyFailed count. A partial failure often means
the Kubernetes objects were saved but a volume was not: exactly the
part you need for a restore.
Runs are grouped by their Schedule, so seven failed nights become one
finding, not seven.
03 · Gather the evidence
Errors, the schedule, and what git says it should be.
For each failing schedule the scan collects the error messages of the
most recent runs, the Schedule's spec and status from the cluster,
and the Schedule and BackupStorageLocation manifests from your repo.
The error usually names the layer: storage credentials, bucket,
snapshot permissions, a node agent.
04 · Databases too
CloudNativePG backups, grouped per database cluster.
Failed CNPG backups are grouped by the Cluster that owns
them. The Cluster's status and its spec.backup block
(object store, credentials reference, retention) are attached as
context.
05 · Diagnose
A probable cause and concrete next steps.
The model reads the evidence and writes a short diagnosis: the most
likely cause, what to check first, and how to confirm the fix. If
the analysis is unavailable, the issue is still opened with the raw
phase and error, never dropped.
06 · An issue, not an MR
Backup fixes are too context-dependent to guess.
Backup findings are opened as issues, labelled reliability,
high risk. The fix is often outside git (a cloud permission, a bucket
policy, a rotated key), and a wrong storage change can make things
worse.
That caution is earned: a storage-location prefix removed to fix one
error once made the whole location invalid, because the bucket was
shared. The full issue is below.
07 · When nothing fails Roadmap
No failed backup can also mean no backup.
If the BackupStorageLocation is Unavailable, Velero
attempts nothing, so there is nothing failed to find. Planned: check
the storage location itself, and the age of the newest successful
backup per schedule, so silence is not read as health.
Also planned: flag runs whose volume snapshot list is empty when the
schedule includes volumes.
08 · From finding to fix Roadmap
MRs where the fix does live in git.
Planned: draft MRs for schedule and retention changes, and for a
missing BackupStorageLocation, grounded in the bucket's actual layout
before touching a prefix.
And when an upgrade bumps a backup plugin, compare the cloud
permissions each version documents, so a new required permission is
in the upgrade MR instead of in next month's failed restore.