Background jobs fail in three ways: they don't run at all (a missed cron, a crashed worker, a daylight-saving misalignment), they run but fail silently (an exception swallowed inside a try block, a script that returns 0 even when nothing happened), or they run forever (a hung DB connection, a queue worker stuck on a poisoned message). External polling catches the first kind if you're lucky — but it can't see inside your job, and log scraping only finds what your code knew enough to log. Heartbeat monitoring inverts the model: every successful run announces itself, and the absence of that announcement is the alert.
What polling can't see
External HTTP probes only check what's publicly exposed. They have no idea whether your nightly invoice generator actually ran, whether your Stripe sync produced output, or whether your queue workers consumed yesterday's messages. From the outside, a healthy 200 OK on your homepage looks identical to a backend silently dropping every billing job for the last 18 hours.
What logs can't see
Log aggregators like Sentry and Datadog catch errors your code reported. They have nothing to say about jobs that never ran, processes the OS killed mid-execution, or schedulers that misfired after a daylight-saving change. Silence in the log stream is indistinguishable from success — exactly the failure mode that costs the most when it goes undetected.
What heartbeats catch
Every monitor expects a ping inside a known window. Missed runs are explicit, not inferred. Late runs trigger grace-period alerts. Failed runs surface the exit code. Hung runs are caught when the start ping arrives but the matching success ping doesn't. The signal is positive — when a job is healthy, it tells you so on every single run.
Heartbeat monitoring works behind firewalls (your job sends an outbound HTTP request — no inbound probing required), it survives infrastructure changes (move from EC2 to Kubernetes; the curl line stays the same), and it doesn't care which cron daemon, queue, or scheduler you use. Adoption is a single line of code per job, and Drumbeats is free for up to 50 monitors — so you can wire up your most critical jobs in the next ten minutes.