lkaemmerling/laravel-horizon-prometheus-exporter
Expose Laravel Horizon queue metrics to Prometheus for monitoring and alerting. Track jobs, queues, wait times, throughput, and worker health via a scrapeable endpoint, making it easy to visualize Horizon performance in Grafana and catch backlog or failure issues early.
maxProcesses.Adopt when:
Look elsewhere when:
Note on this release (v1.8.3): This is a narrow Laravel 13.x compatibility release — no breaking changes, no configuration or API changes, no deprecations. For a PM the signal is maintenance health and forward compatibility: adopting now does not create a blocker for a Laravel 13 upgrade, and the maintainer is keeping pace with framework majors. One caveat worth flagging to engineering: the compatibility work arrived via a community contribution, so verify it against your exact Laravel/Horizon versions in staging before relying on it in production. It does not change the adoption calculus above, but it does lower the "will this be abandoned?" risk that would otherwise argue for waiting.
For executives (one paragraph): Background job failures are invisible to customers until they surface as missing emails, delayed payouts, or stale data. This is a small, low-risk open-source dependency that makes our queue health measurable using tooling we already run, so we can set reliability targets for background processing and catch degradation before it becomes an incident — without buying additional monitoring. The v1.8.3 release confirms it stays compatible with our planned Laravel upgrade, so it is not a blocker to the platform roadmap.
For engineering (the practical case): A single Composer dependency that exposes Horizon's existing metrics in Prometheus format; you add a scrape target and a Grafana dashboard, and write alerts against metrics you already collect internally. No application code changes, no new infrastructure. It gives you queue wait time, depth, throughput, and failure counts per queue — the signals you currently reconstruct from logs during an incident. Be clear on the boundary: it is aggregate metrics only, so keep your tracer for per-job debugging. Risk is low and reversible; validate the Laravel 13 path in staging since the compatibility patch came in from a community PR.
Ask: Timeboxed spike — one engineer, roughly a day — to stand up the exporter in staging, wire a dashboard, and define two or three candidate SLIs. Decision gate: if the metrics match what we can already see in Horizon, promote; if they duplicate an existing APM signal, drop it and avoid the second pipeline.
How can I help you explore Laravel packages today?