sandermuller/laravel-queue-insights

Self-hosted, driver-agnostic queue observability for Laravel. Per-class throughput, durations, failures, and live depth/in-flight/delayed metrics with a Livewire dashboard.

Maintainers

Package info

github.com/SanderMuller/laravel-queue-insights

pkg:composer/sandermuller/laravel-queue-insights

Transparency log

Statistics

Installs: 16 199

Dependents: 0

Suggesters: 0

Stars: 5

Open Issues: 0

0.32.0 2026-08-21 14:20 UTC

README

Queue Insights dashboard

Laravel Queue Insights

Latest Version on Packagist GitHub Tests Action Status GitHub PHPStan Action Status Total Downloads License Laravel Compatibility

Self-hosted queue observability for Laravel that doesn't care which driver you run. Queue depth, in-flight and delayed counts, enqueue-to-pickup wait time, per-class metrics, batches, chains, failures with their captured context, alerting, Prometheus metrics, and scheduler runs, all of it the same on SQS, Redis, database, and Laravel Cloud managed queues. No Horizon required, and no job data sent anywhere.

Everything goes into a bounded Redis keyspace that evicts itself. The dashboard is Livewire and Blade with no Filament or Nova coupling, so you can mount it in the admin layout you already have.

Live demo: queue-insights-demo.laravel.cloud — public preview on Laravel Cloud, seeded with realistic fixtures.

Installation

composer require sandermuller/laravel-queue-insights
php artisan vendor:publish --tag=queue-insights-config

Requires PHP 8.3+, Laravel 11/12/13, Redis, and livewire/livewire 3 or 4 if you use the bundled dashboard route. The service provider auto-discovers. See Installation for the full requirements and the environment knobs, and UPGRADING.md when upgrading from an older release.

Usage

Every tile, alert detector, and Prometheus gauge reads from snapshots written by queue-insights:snapshot. The package registers it on Laravel's scheduler with ->everyMinute()->withoutOverlapping(), so a host running php artisan schedule:work (or the equivalent cron) is all it needs.

The dashboard mounts at /queue-insights when dashboard.enabled=true. Authorise it with a Gate:

// app/Providers/AuthServiceProvider.php
Gate::define('viewQueueInsights', fn ($user) => $user->isAdmin());

Payload capture is off by default, and there are good reasons to leave it that way. Read Payload capture and SECURITY.md before turning it on.

Documentation

Read the full documentation at sandermuller.github.io/laravel-queue-insights. The source lives in docs/.

Getting started

  • Why Queue Insights? — what it answers that queue:work and a failed_jobs table do not, and the full feature list
  • Installation — requirements, the snapshot scheduler, environment knobs
  • Payload capture — the three modes, the separate pending budget, custom sanitizers

Dashboard

  • Dashboard — authorisation, multi-connection scoping, retry permissions and workflow, filtering
  • Jobs, batches, and chains — wait time, the pending inspector, batch progress, chain lineage, job initiator
  • Failure context — what is captured on failure, and the Sentry deep-link
  • Theming and embedding — custom row markup, admin-layout embedding, dark mode, the cloud look

Operations

  • Running workers — the queue-insights:work supervisor, its non-goals, shutdown grace tuning
  • Ops runbook — console commands, dashboard signals, driver quirks, key prefixes, Redis Cluster
  • Alerting — nine detectors, cooldown, log / Slack / mail / Sentry channels, typed events, silencing

Integrations

Reference

Upgrading

See UPGRADING.md for migration steps between minor versions. Patch releases never require manual steps.

Changelog

See CHANGELOG.md and the GitHub releases page. The changelog is updated automatically on release publish — do not edit by hand.

Contributing

See CONTRIBUTING.md for local setup, the check commands, and how the Redis Cluster tests are run.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

MIT. See LICENSE.