cronの問題は、失敗しても何も起こらないことです。ページがダウンすることも、エラーが表示されることもなく、必要なときにバックアップがただ存在しないのです。
ハートビートのパターン
各ジョブに固有のURLを割り当てます。ジョブは成功時にそのURLを呼び出します。モニターはN時間ごとの呼び出しを待ち、遅れた場合にアラートを送ります。
cron
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 https://hb.uptimepush.com/p/TOKENsystemdタイマー
サービスユニットに ExecStartPost=/usr/bin/curl -fsS https://hb.uptimepush.com/p/TOKEN を追加します。
Kubernetes CronJob
コンテナのコマンドに && でcurlの呼び出しを追加し、成功時のみ実行されるようにします。
GitHub Actions
最後のステップとしてURLにcurlを実行する処理を追加し、トークンはシークレットとして保存します。
猶予期間
猶予期間はジョブの通常の最長実行時間よりやや長めに設定し、処理が遅い夜に呼び出されないようにしましょう。