Monitor a Kubernetes CronJob and know when it stops scheduling
A Kubernetes CronJob has a failure mode that surprises people: it can stop scheduling altogether, with no error and no event you'd normally see. If the CronJob controller can't start a job on time and misses more than startingDeadlineSeconds worth of scheduled times — or racks up more than 100 missed starts — it gives up and logs a single line: Cannot determine if job needs to be started. From then on the job simply never runs again. Nothing pages you, because nothing crashed. A heartbeat check turns that silence into an alert.
Ping from inside the Job
Create a check in Cronping matching the schedule (e.g. every 1 hour, with a grace window), then have the job's own container ping on success. The point is to monitor from inside the workload — a Job that the API says "succeeded" but exited before doing its real work is exactly what you want to catch:
With set -e, the ping is only reached when the real work succeeds. If the controller stops scheduling, a pod fails to start, or the work errors, the ping never arrives and Cronping emails you that the job went quiet — plus optional Slack, Discord, or webhook.
Alert immediately on a failed run
Don't want to wait for the grace window when a run fails? Signal the fail endpoint so a bad run pages you right away:
Why not rely on the Job status?
The Kubernetes API tells you whether a Job that ran succeeded — it can't tell you about the run that never happened because scheduling stalled, the node was cordoned, or the namespace hit a resource quota. An external dead-man's-switch is the only thing that notices the absence of a run. It's free: 20 checks, 1-minute resolution, full history, no credit card. A ping URL takes about ten seconds to create.
Get a ping URL in about ten seconds — no account, no email needed. Add an email later for alerts.