Define the expectation.
Name the job, say how often it should run (an interval or a cron expression, in any timezone) and how long to wait before worrying.
Backups, scheduled tasks and queue workers fail quietly: nothing crashes, nothing logs, they simply stop. Pingvella watches for the check-in that should arrive, and tells you when it doesn’t.
Most monitoring waits for something to go wrong and report it. A job that never starts reports nothing, so it can’t raise an alarm itself. Heartbeat monitoring turns that around: the job sends a small “I’m alive” request when it finishes, and the monitor raises the alarm when that request stops arriving.
Name the job, say how often it should run (an interval or a cron expression, in any timezone) and how long to wait before worrying.
Add one HTTP request to the end of the job. Each check has its own private URL, so a run is always matched to the right job.
If the check-in is late, you see it. If it never comes, you’re alerted on every channel you chose, and again when the job recovers.
Anything that can make an HTTP request can check in: a shell script, a Python or Node worker, a PHP scheduled command, a Kubernetes CronJob.
Want to know how long a run takes, or catch a job that starts and then fails? Wrap it:
The exit status on the end of the URL decides the outcome: 0 is a success, anything else marks the check down immediately. Your check’s own page shows the same snippets with its real URL filled in.
A simple interval or a full cron expression in any timezone, plus a grace period that tells a slow job from a missing one. “Late” is a warning; “down” is an alert.
Signal when a run begins to record its duration, and report failures the moment they happen instead of waiting for a deadline to pass.
Recent runs as a row of coloured bars, a log of every ping with its details (including any output you send in the request body), and an uptime chart you can zoom into.
Using Laravel? Every check page generates the scheduler code for you, on that check’s own schedule, so reporting a command takes three chained methods.
There’s a one-line heartbeat variant too, which tells you the scheduler itself is running, and a note on the single cron entry that keeps it alive on your server.
Your job sends a check-in on its expected schedule. If the check-in doesn’t arrive within the grace period, Pingvella flags the job as down and notifies you. It catches the failures that make no noise: a cron job that never started, a server that was switched off, a backup that quietly stopped.
Request your check’s unique URL when the job finishes, with curl, wget or any HTTP client. Append /start at the beginning of a run to measure its duration, or /fail to report a failure immediately.
A late check has passed its expected time but is still within its grace period. A down check has passed that window, or reported a failure. Alerts are sent when a check goes down, and again when it recovers.
Report it. Request your check’s /fail URL, or end the URL with the job’s exit status (/$? in a shell script), and Pingvella marks the check down straight away instead of waiting for the deadline to pass.
Yes. Each check page shows ready-made Laravel scheduler code on the check’s own schedule, using pingBefore, thenPing and pingOnFailure, plus a heartbeat that tells you the scheduler itself is running.