Laravel · Queue Workers

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

1

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.

2

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.

app/Jobs/QueueHealthProbe.php
class QueueHealthProbe implements ShouldQueue
{
    use Dispatchable, Queueable;

    public function handle(): void
    {
        Http::get('https://ping.pingtastic.net/ping/default-queue-health');
    }
}
3

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.

routes/console.php
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