PHPackages                             saimaz/laravel-prometheus - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. saimaz/laravel-prometheus

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

saimaz/laravel-prometheus
=========================

Professional Prometheus metrics integration for Laravel applications

2.0.0(4mo ago)0127↑986.6%MITPHPPHP ^8.2CI passing

Since Nov 10Pushed yesterdayCompare

[ Source](https://github.com/saimaz/laravel-prometheus)[ Packagist](https://packagist.org/packages/saimaz/laravel-prometheus)[ Docs](https://github.com/saimaz/laravel-prometheus)[ RSS](/packages/saimaz-laravel-prometheus/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (11)Versions (3)Used By (0)

Laravel Prometheus
==================

[](#laravel-prometheus)

[![Latest Version on Packagist](https://camo.githubusercontent.com/0d60c9990d17adf12b28f09cfb5004d2e2c53082256e9089f3365f5a0e1c6fe9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f7361696d617a2f6c61726176656c2d70726f6d6574686575732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/saimaz/laravel-prometheus)[![GitHub Tests Action Status](https://camo.githubusercontent.com/ec722a8c8c3a926a8d4ffb3f1e175aaef910637a9a852edfc4c5b3cdb7485deb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f7361696d617a2f6c61726176656c2d70726f6d6574686575732f74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/saimaz/laravel-prometheus/actions?query=workflow%3Atests+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/903f2f6d9f475036cd2ac58185bf53dd72de709bb38798bda386fb4f5411b90d/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f7361696d617a2f6c61726176656c2d70726f6d6574686575732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/saimaz/laravel-prometheus)[![License](https://camo.githubusercontent.com/cdcc84adfe5eb33fb645244358e2b0b9b63175c82a1cd41b9c18a91f13cb767b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f7361696d617a2f6c61726176656c2d70726f6d6574686575732e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/saimaz/laravel-prometheus)

Zero-config Prometheus metrics for Laravel. Install the package, set one env var, and your app starts exporting HTTP metrics, Horizon queue stats, and custom application metrics — ready for Grafana.

Built on [promphp/prometheus\_client\_php](https://github.com/PromPHP/prometheus_client_php).

What you get out of the box
---------------------------

[](#what-you-get-out-of-the-box)

- **HTTP metrics** — request count and duration histogram, auto-registered as global middleware
- **Horizon metrics** — supervisor status, jobs/min, queue workload, wait times (auto-detected)
- **`/metrics` endpoint** — Prometheus text format, protected by IP whitelist
- **Custom metrics** — define your own via PHP backed enums
- **Extensible collectors** — gather point-in-time metrics on each scrape

Requirements
------------

[](#requirements)

- PHP 8.2+
- Laravel 11, 12, or 13
- Redis (recommended) or APCu for metric storage

Installation
------------

[](#installation)

```
composer require saimaz/laravel-prometheus
```

Add to your `.env`:

```
PROMETHEUS_ENABLED=true
```

That's it. Visit `/metrics` to see your metrics.

### Optional configuration

[](#optional-configuration)

Publish the config file only if you need to customize defaults:

```
php artisan vendor:publish --tag=prometheus-config
```

Configuration
-------------

[](#configuration)

All configuration is done via environment variables — no config file needed for most setups.

VariableDefaultDescription`PROMETHEUS_ENABLED``false`Enable/disable metrics collection`PROMETHEUS_NAMESPACE``APP_NAME`Metric name prefix (e.g. `myapp_http_requests_total`)`PROMETHEUS_STORAGE``redis`Storage driver: `redis`, `apc`, `in_memory``PROMETHEUS_REDIS_CONNECTION``default`Laravel Redis connection name`PROMETHEUS_PREFIX``PROMETHEUS_`Redis key prefix`PROMETHEUS_ALLOWED_IPS`*(empty)*Comma-separated IPs allowed to scrape `/metrics``PROMETHEUS_ENDPOINT``metrics`Path for the metrics endpoint### Storage

[](#storage)

Redis is recommended for production (metrics persist across PHP processes). The package automatically falls back to in-memory storage when:

- `PROMETHEUS_ENABLED` is `false`
- Redis connection fails (with error logged)
- Running in `testing` environment

Built-in metrics
----------------

[](#built-in-metrics)

### HTTP metrics (automatic)

[](#http-metrics-automatic)

Registered as global middleware — no setup needed.

MetricTypeLabels`{ns}_http_requests_total`Counter`route`, `method`, `status``{ns}_http_request_duration_seconds`Histogram`route`, `method`, `status`Routes are identified by name (e.g. `api.users.index`) or URI pattern (e.g. `api/users/{user}`) to prevent label cardinality explosion.

**Ignoring routes** — by default, `metrics` and `horizon.*` are ignored. Customize in config:

```
'http' => [
    'ignored_routes' => ['metrics', 'horizon.*', 'health', 'telescope.*'],
],
```

### Horizon metrics (automatic)

[](#horizon-metrics-automatic)

Auto-detected when `laravel/horizon` is installed. No configuration needed.

MetricTypeLabels`{ns}_horizon_status`Gauge—`{ns}_horizon_master_supervisors`Gauge—`{ns}_horizon_jobs_per_minute`Gauge—`{ns}_horizon_recent_jobs`Gauge—`{ns}_horizon_failed_jobs_per_hour`Gauge—`{ns}_horizon_current_workload`Gauge`queue``{ns}_horizon_current_processes`Gauge`queue``{ns}_horizon_queue_wait_time_seconds`Gauge`queue`Custom metrics
--------------

[](#custom-metrics)

### 1. Define a metric enum

[](#1-define-a-metric-enum)

```
