Cron की समस्या यह है कि fail होने पर कुछ नहीं होता। कोई page down नहीं होता, कोई error नहीं दिखता; बस ज़रूरत के समय backup मौजूद नहीं होता।
Heartbeat पैटर्न
हर job को एक unique URL दें। Job सफल होने पर उसे call करता है। Monitor हर N घंटे में उस call की अपेक्षा करता है; देर होने पर आपको alert मिलता है।
Cron
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 https://hb.uptimepush.com/p/TOKENsystemd timers
Service unit में ExecStartPost=/usr/bin/curl -fsS https://hb.uptimepush.com/p/TOKEN जोड़ें।
Kubernetes CronJob
Container command के अंत में && के साथ curl call जोड़ें, ताकि यह केवल सफल होने पर ही चले।
GitHub Actions
एक अंतिम step जोड़ें जो URL को curl करे, और token को secret के रूप में स्टोर करें।
Grace periods
Grace period को job के सबसे लंबे सामान्य run से थोड़ा ज़्यादा रखें, ताकि किसी धीमी रात में आपको बेवजह page न किया जाए।