Das Problem mit Cron ist, dass bei einem Fehler nichts passiert. Keine Seite geht offline, kein Fehler wird angezeigt; das Backup ist einfach nicht da, wenn Sie es brauchen.
Das Heartbeat-Muster
Geben Sie jedem Job eine eindeutige URL. Der Job ruft sie bei Erfolg auf. Ein Monitor erwartet den Aufruf alle N Stunden; bleibt er aus, erhalten Sie einen Alarm.
Cron
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 https://hb.uptimepush.com/p/TOKENsystemd-Timer
Fügen Sie ExecStartPost=/usr/bin/curl -fsS https://hb.uptimepush.com/p/TOKEN zur Service-Unit hinzu.
Kubernetes CronJob
Hängen Sie den curl-Aufruf mit && an den Container-Befehl an, damit er nur bei Erfolg ausgeführt wird.
GitHub Actions
Fügen Sie einen letzten Schritt hinzu, der die URL per curl aufruft, wobei der Token als Secret gespeichert ist.
Karenzzeiten
Setzen Sie eine Karenzzeit, die etwas länger ist als der längste normale Lauf des Jobs, damit eine langsame Nacht keinen Alarm auslöst.