spatie/laravel-prometheus
Export Laravel app metrics to Prometheus via a /prometheus endpoint. Register custom gauges and counters in code, with built-in metrics for queues and Horizon. Includes optional security so your metrics aren’t publicly exposed; pair with Grafana for dashboards.
/prometheus endpoint is idiomatic and integrates with Laravel’s routing system.jobs.failed) for queue metrics, ensuring consistency.when()) or batch updates./prometheus endpoint must be secured (e.g., IP whitelisting, auth middleware). The package supports middleware but requires explicit configuration.active_users) instead of raw data./prometheus endpoint? (e.g., VPC peering, API keys)fix for Vapor in changelog), but may need custom middleware for auth.active_users, api_requests_per_minute)./prometheus endpoint (e.g., add throttle middleware).User::count()).queue_jobs_pending > 1000).| Component | Compatibility Notes |
|---|---|
| Laravel | 12+ (LTS). Drop-in for 13.x. Not compatible with Laravel <11. |
| PHP | 8.4+. May require PHP extensions (e.g., redis for Horizon collectors). |
| Prometheus | Any version supporting the /metrics endpoint format. |
| Grafana | Any version with Prometheus data source support. |
| Queues | Horizon/vanilla Laravel queues. No support for third-party queue systems. |
| Middleware | Uses Laravel’s middleware stack. Custom middleware (e.g., auth) can be added. |
composer require spatie/laravel-prometheus
php artisan vendor:publish --provider="Spatie\Prometheus\PrometheusServiceProvider"
config/prometheus.php:
'collectors' => [
Spatie\Prometheus\Collectors\QueueCollector::class,
Spatie\Prometheus\Collectors\FailedRecentJobsCollector::class,
],
/prometheus route (e.g., add auth:api middleware).http://laravel-app/prometheus (e.g., every 15s).User::count() query).FailedRecentJobsCollector is configurable (default: 1 hour).queue_jobs_pending > 1000).| Failure Scenario | Impact | Mitigation Strategy |
|---|---|---|
| Prometheus scrape failures | Metrics loss | Configure retries in Prometheus; |
How can I help you explore Laravel packages today?