Monitor Laravel Queue Workers
A supervisor-managed queue:work process can stay "running" while silently stuck — a jammed job, an exhausted connection pool, or Horizon paused after a deploy. Process-uptime monitoring won't catch that. The reliable signal is a small probe job that proves the queue is actually being drained.
Setup
Create an incoming monitor
Add a heartbeat monitor in Pingtastic for the queue, e.g. "default-queue-health", with a grace period a bit longer than your probe interval.
Add a tiny probe job
Create a job that does nothing but ping on completion, and dispatch it onto the same queue your workers process.
class QueueHealthProbe implements ShouldQueue
{
use Dispatchable, Queueable;
public function handle(): void
{
Http::get('https://ping.pingtastic.net/ping/default-queue-health');
}
}Schedule the probe to dispatch regularly
Use Laravel's scheduler to dispatch the probe job every few minutes. If it never pings, either the scheduler/cron is down or the queue worker isn't draining the queue.
Schedule::job(new QueueHealthProbe)->everyFiveMinutes();Gotchas
- ⚠A probe job only proves the queue it's dispatched to is being drained — if you run multiple named queues (e.g. `default`, `emails`, `exports`) on separate workers, dispatch a probe per queue, not just one.
- ⚠Horizon pausing after a deploy (a common gotcha when a new deploy fails to restart the Horizon supervisor process) looks identical to "worker is stuck" from the probe's point of view — both show up as a missed check-in, which is the correct behavior.
Questions
Why not just monitor whether the queue:work process is running?
A process can stay alive while stuck on a bad job, waiting on an exhausted DB connection pool, or otherwise wedged. A probe job that must actually be dequeued and executed is a much stronger signal than process uptime.
Does this work with Laravel Horizon?
Yes — the probe job pattern works the same way whether jobs are processed by plain queue:work workers or Horizon-managed supervisors.
Start monitoring your Laravel queue workers
Set up your first monitor in under five minutes.
Get started — $5/month