PHPackages                             bortoman/laravel-prometheus-exporter - 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. bortoman/laravel-prometheus-exporter

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

bortoman/laravel-prometheus-exporter
====================================

A prometheus exporter for Laravel &amp; Lumen

v1.0.5(4y ago)0206↓50%MITPHPPHP ^7.4

Since Nov 19Pushed 4y agoCompare

[ Source](https://github.com/Bortoman/laravel-prometheus-exporter)[ Packagist](https://packagist.org/packages/bortoman/laravel-prometheus-exporter)[ RSS](/packages/bortoman-laravel-prometheus-exporter/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (3)Dependencies (4)Versions (21)Used By (0)

laravel-prometheus-exporter
===========================

[](#laravel-prometheus-exporter)

This is a fork of [traum-ferienwohnungen/laravel-prometheus-exporter](https://github.com/traum-ferienwohnungen/laravel-prometheus-exporter)with updated dependencies. Main goal of this work is to make the lib compatible with Laravel 8 and Lumen 8 running on PHP 7.4.

Description
-----------

[](#description)

A prometheus exporter for the Laravel and the Lumen web framework.

It tracks latency and request counts by request method, route path and response code.

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

[](#installation)

`composer require bortoman/laravel-prometheus-exporter`

### Adapters

[](#adapters)

Then choose from three storage adapters: Memory (default), APCu and Redis can also be used.

#### APCu

[](#apcu)

Ensure apcu-bc is installed and enabled. If you're using the official PHP docker hub non-alpine image, have a look in the Dockerfile on how to install.

#### Redis

[](#redis)

Ensure php redis is installed and enabled. If you're using the official PHP docker hub non-alpine image, have a look in the Dockerfile on how to install.

By default, it looks for a redis server at localhost:6379. The server can be configured in `config/prometheus_exporter.php`.

### Laravel

[](#laravel)

If you're requiring this package in Laravel, middleware and route will be configured for you automatically.

#### Enable the Service Provider

[](#enable-the-service-provider)

In `config/app.php` (if not already there):

```
'providers' => [
    ...
    /*
     * Package Service Providers...
     */
    Bortoman\PrometheusExporter\Providers\LaravelServiceProvider::class,
    ...
]

```

### Lumen

[](#lumen)

#### Register the ServiceProvider

[](#register-the-serviceprovider)

In `bootstrap/app.php`

```
$app->register(Bortoman\PrometheusExporter\Providers\LumenServiceProvider::class);

```

#### Add an endpoint for the metrics

[](#add-an-endpoint-for-the-metrics)

In `bootstrap/app.php`

```
$app->router->get('/metrics', [
    'as' => 'metrics',
    'uses' => 'Bortoman\PrometheusExporter\Controllers\LumenMetricsController@metrics',
]);

```

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

[](#configuration)

Metrics are exposed on `/metrics` endpoint, e.g. `http://my-service.com/metrics`

The configuration can be found in `config/prometheus_exporter.php`.

All values can be configured via .env or environment variables.

namedescriptionenvadapterStorage adapter to use: 'memory', 'apc' or 'redis' default: 'memory'PROMETHEUS\_EXPORTER\_ADAPTERactive\_collectiblesAdditional metric collectiblesn.a.bucketsHTTP requests latency histogram bucketsn.a.namespaceName (prefix) to use in prometheus metrics. default: value in APP\_NAME env varPROMETHEUS\_EXPORTER\_NAMESPACEredisArray of redis parameterssee prometheus\_exporter.php for detailsopcache\_metrics\_namespaceName (prefix) to use for OPCache metrics. default: opcachePROMETHEUS\_EXPORTER\_OPCACHE\_METRICS\_NAMESPACEfpm\_metrics\_namespaceName (prefix) to use for PHP-FPM metrics. default: fpmPROMETHEUS\_EXPORTER\_FPM\_METRICS\_NAMESPACE### Collectibles

[](#collectibles)

If you want to disable any collectibles, you'll need to remove entries from the `prometheus_exporter.php` config.

#### Laravel

[](#laravel-1)

Run

```
php artisan vendor:publish

```

Finally, remove collectibles in `app/config/prometheus_exporter.php`

#### Lumen

[](#lumen-1)

Copy `src/config/prometheus_exporter.php` in this repo and add to your Lumen project in the config directory.

Finally, remove collectibles in `app/config/prometheus_exporter.php`

Example `/metrics`
------------------

[](#example-metrics)

```
# HELP fpm_accepted_conn accepted_conn
# TYPE fpm_accepted_conn gauge
fpm_accepted_conn 71
# HELP fpm_active_processes active_processes
# TYPE fpm_active_processes gauge
fpm_active_processes 1
# HELP fpm_idle_processes idle_processes
# TYPE fpm_idle_processes gauge
fpm_idle_processes 2
# HELP fpm_listen_queue listen_queue
# TYPE fpm_listen_queue gauge
fpm_listen_queue 0
# HELP fpm_listen_queue_len listen_queue_len
# TYPE fpm_listen_queue_len gauge
fpm_listen_queue_len 128
# HELP fpm_max_active_processes max_active_processes
# TYPE fpm_max_active_processes gauge
fpm_max_active_processes 3
# HELP fpm_max_children_reached max_children_reached
# TYPE fpm_max_children_reached gauge
fpm_max_children_reached 0
# HELP fpm_max_listen_queue max_listen_queue
# TYPE fpm_max_listen_queue gauge
fpm_max_listen_queue 0
# HELP fpm_proc_requests proc requests
# TYPE fpm_proc_requests gauge
fpm_proc_requests{pid="6"} 24
fpm_proc_requests{pid="7"} 24
fpm_proc_requests{pid="732"} 23
# HELP fpm_proc_start_time proc start time
# TYPE fpm_proc_start_time gauge
fpm_proc_start_time{pid="6"} 1596095160
fpm_proc_start_time{pid="7"} 1596095160
fpm_proc_start_time{pid="732"} 1596097386
# HELP fpm_slow_requests slow_requests
# TYPE fpm_slow_requests gauge
fpm_slow_requests 0
# HELP fpm_start_time start_time
# TYPE fpm_start_time gauge
fpm_start_time 1596095160
# HELP opcache_cache_full
# TYPE opcache_cache_full gauge
opcache_cache_full 0
# HELP opcache_interned_strings_usage_buffer_size
# TYPE opcache_interned_strings_usage_buffer_size gauge
opcache_interned_strings_usage_buffer_size 12582464
# HELP opcache_interned_strings_usage_free_memory
# TYPE opcache_interned_strings_usage_free_memory gauge
opcache_interned_strings_usage_free_memory 11203240
# HELP opcache_interned_strings_usage_number_of_strings
# TYPE opcache_interned_strings_usage_number_of_strings gauge
opcache_interned_strings_usage_number_of_strings 20693
# HELP opcache_interned_strings_usage_used_memory
# TYPE opcache_interned_strings_usage_used_memory gauge
opcache_interned_strings_usage_used_memory 1379224
# HELP opcache_memory_usage_free_memory
# TYPE opcache_memory_usage_free_memory gauge
opcache_memory_usage_free_memory 180941720
# HELP opcache_memory_usage_used_memory
# TYPE opcache_memory_usage_used_memory gauge
opcache_memory_usage_used_memory 20181624
# HELP opcache_memory_usage_wasted_memory
# TYPE opcache_memory_usage_wasted_memory gauge
opcache_memory_usage_wasted_memory 203248
# HELP opcache_opcache_enabled
# TYPE opcache_opcache_enabled gauge
opcache_opcache_enabled 1
# HELP opcache_opcache_statistics_blacklist_misses
# TYPE opcache_opcache_statistics_blacklist_misses gauge
opcache_opcache_statistics_blacklist_misses 0
# HELP opcache_opcache_statistics_hits
# TYPE opcache_opcache_statistics_hits gauge
opcache_opcache_statistics_hits 10595
# HELP opcache_opcache_statistics_last_restart_time
# TYPE opcache_opcache_statistics_last_restart_time gauge
opcache_opcache_statistics_last_restart_time 0
# HELP opcache_opcache_statistics_manual_restarts
# TYPE opcache_opcache_statistics_manual_restarts gauge
opcache_opcache_statistics_manual_restarts 0
# HELP opcache_opcache_statistics_max_cached_keys
# TYPE opcache_opcache_statistics_max_cached_keys gauge
opcache_opcache_statistics_max_cached_keys 16229
# HELP opcache_opcache_statistics_misses
# TYPE opcache_opcache_statistics_misses gauge
opcache_opcache_statistics_misses 215
# HELP opcache_opcache_statistics_num_cached_keys
# TYPE opcache_opcache_statistics_num_cached_keys gauge
opcache_opcache_statistics_num_cached_keys 394
# HELP opcache_opcache_statistics_num_cached_scripts
# TYPE opcache_opcache_statistics_num_cached_scripts gauge
opcache_opcache_statistics_num_cached_scripts 202
# HELP opcache_opcache_statistics_oom_restarts
# TYPE opcache_opcache_statistics_oom_restarts gauge
opcache_opcache_statistics_oom_restarts 0
# HELP opcache_opcache_statistics_start_time
# TYPE opcache_opcache_statistics_start_time gauge
opcache_opcache_statistics_start_time 1596095160
# HELP opcache_restart_in_progress
# TYPE opcache_restart_in_progress gauge
opcache_restart_in_progress 0
# HELP opcache_restart_pending
# TYPE opcache_restart_pending gauge
opcache_restart_pending 0
# HELP search_api_request_duration_milliseconds duration of http requests
# TYPE search_api_request_duration_milliseconds histogram
search_api_request_duration_milliseconds_bucket{route="GET /",statusCode="200",le="50"} 0
search_api_request_duration_milliseconds_bucket{route="GET /",statusCode="200",le="100"} 0
search_api_request_duration_milliseconds_bucket{route="GET /",statusCode="200",le="300"} 3
search_api_request_duration_milliseconds_bucket{route="GET /",statusCode="200",le="500"} 3
search_api_request_duration_milliseconds_bucket{route="GET /",statusCode="200",le="700"} 3
search_api_request_duration_milliseconds_bucket{route="GET /",statusCode="200",le="900"} 3
search_api_request_duration_milliseconds_bucket{route="GET /",statusCode="200",le="1000"} 3
search_api_request_duration_milliseconds_bucket{route="GET /",statusCode="200",le="1200"} 3
search_api_request_duration_milliseconds_bucket{route="GET /",statusCode="200",le="1500"} 3
search_api_request_duration_milliseconds_bucket{route="GET /",statusCode="200",le="2000"} 3
search_api_request_duration_milliseconds_bucket{route="GET /",statusCode="200",le="3000"} 3
search_api_request_duration_milliseconds_bucket{route="GET /",statusCode="200",le="5000"} 3
search_api_request_duration_milliseconds_bucket{route="GET /",statusCode="200",le="7500"} 3
search_api_request_duration_milliseconds_bucket{route="GET /",statusCode="200",le="+Inf"} 3
search_api_request_duration_milliseconds_count{route="GET /",statusCode="200"} 3
search_api_request_duration_milliseconds_sum{route="GET /",statusCode="200"} 657.34791755676
search_api_request_duration_milliseconds_bucket{route="GET /asdasd",statusCode="404",le="50"} 0
search_api_request_duration_milliseconds_bucket{route="GET /asdasd",statusCode="404",le="100"} 0
search_api_request_duration_milliseconds_bucket{route="GET /asdasd",statusCode="404",le="300"} 0
search_api_request_duration_milliseconds_bucket{route="GET /asdasd",statusCode="404",le="500"} 0
search_api_request_duration_milliseconds_bucket{route="GET /asdasd",statusCode="404",le="700"} 1
search_api_request_duration_milliseconds_bucket{route="GET /asdasd",statusCode="404",le="900"} 1
search_api_request_duration_milliseconds_bucket{route="GET /asdasd",statusCode="404",le="1000"} 1
search_api_request_duration_milliseconds_bucket{route="GET /asdasd",statusCode="404",le="1200"} 1
search_api_request_duration_milliseconds_bucket{route="GET /asdasd",statusCode="404",le="1500"} 1
search_api_request_duration_milliseconds_bucket{route="GET /asdasd",statusCode="404",le="2000"} 1
search_api_request_duration_milliseconds_bucket{route="GET /asdasd",statusCode="404",le="3000"} 1
search_api_request_duration_milliseconds_bucket{route="GET /asdasd",statusCode="404",le="5000"} 1
search_api_request_duration_milliseconds_bucket{route="GET /asdasd",statusCode="404",le="7500"} 1
search_api_request_duration_milliseconds_bucket{route="GET /asdasd",statusCode="404",le="+Inf"} 1
search_api_request_duration_milliseconds_count{route="GET /asdasd",statusCode="404"} 1
search_api_request_duration_milliseconds_sum{route="GET /asdasd",statusCode="404"} 561.01489067078
search_api_request_duration_milliseconds_bucket{route="GET /metrics",statusCode="200",le="50"} 0
search_api_request_duration_milliseconds_bucket{route="GET /metrics",statusCode="200",le="100"} 0
search_api_request_duration_milliseconds_bucket{route="GET /metrics",statusCode="200",le="300"} 40
search_api_request_duration_milliseconds_bucket{route="GET /metrics",statusCode="200",le="500"} 49
search_api_request_duration_milliseconds_bucket{route="GET /metrics",statusCode="200",le="700"} 50
search_api_request_duration_milliseconds_bucket{route="GET /metrics",statusCode="200",le="900"} 50
search_api_request_duration_milliseconds_bucket{route="GET /metrics",statusCode="200",le="1000"} 50
search_api_request_duration_milliseconds_bucket{route="GET /metrics",statusCode="200",le="1200"} 50
search_api_request_duration_milliseconds_bucket{route="GET /metrics",statusCode="200",le="1500"} 50
search_api_request_duration_milliseconds_bucket{route="GET /metrics",statusCode="200",le="2000"} 50
search_api_request_duration_milliseconds_bucket{route="GET /metrics",statusCode="200",le="3000"} 50
search_api_request_duration_milliseconds_bucket{route="GET /metrics",statusCode="200",le="5000"} 50
search_api_request_duration_milliseconds_bucket{route="GET /metrics",statusCode="200",le="7500"} 50
search_api_request_duration_milliseconds_bucket{route="GET /metrics",statusCode="200",le="+Inf"} 50
search_api_request_duration_milliseconds_count{route="GET /metrics",statusCode="200"} 50
search_api_request_duration_milliseconds_sum{route="GET /metrics",statusCode="200"} 13587.605237961

```

`Note` that all HTTP requests are instrumented including the `/metrics` endpoint itself.

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity72

Established project with proven stability

 Bus Factor1

Top contributor holds 71.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~116 days

Recently: every ~156 days

Total

18

Last Release

1483d ago

Major Versions

0.1.2 → v1.0.02020-07-30

PHP version history (2 changes)0.1.0PHP ^7.1

v1.0.0PHP ^7.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/4a373158d76296d2960f8f79e716f0a76e7e127efb3154cf0b85350501f665e9?d=identicon)[Bortoman](/maintainers/Bortoman)

---

Top Contributors

[![tback](https://avatars.githubusercontent.com/u/83432?v=4)](https://github.com/tback "tback (23 commits)")[![gorerider](https://avatars.githubusercontent.com/u/4513592?v=4)](https://github.com/gorerider "gorerider (3 commits)")[![bagaskarawg](https://avatars.githubusercontent.com/u/25116290?v=4)](https://github.com/bagaskarawg "bagaskarawg (2 commits)")[![Bortoman](https://avatars.githubusercontent.com/u/16632740?v=4)](https://github.com/Bortoman "Bortoman (2 commits)")[![anon6789](https://avatars.githubusercontent.com/u/9916570?v=4)](https://github.com/anon6789 "anon6789 (1 commits)")[![triadev](https://avatars.githubusercontent.com/u/10552858?v=4)](https://github.com/triadev "triadev (1 commits)")

---

Tags

laravellumeninstrumentationprometheus

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/bortoman-laravel-prometheus-exporter/health.svg)

```
[![Health](https://phpackages.com/badges/bortoman-laravel-prometheus-exporter/health.svg)](https://phpackages.com/packages/bortoman-laravel-prometheus-exporter)
```

###  Alternatives

[lkaemmerling/laravel-horizon-prometheus-exporter

A small package to gain and export long time information from Laravel &amp; Horizon for Prometheus.

1602.0M](/packages/lkaemmerling-laravel-horizon-prometheus-exporter)[ytake/laravel-fluent-logger

fluent logger for laravel and lumen

63541.6k1](/packages/ytake-laravel-fluent-logger)[triadev/laravel-prometheus-exporter

A laravel and lumen service provider to export metrics for prometheus.

2728.2k1](/packages/triadev-laravel-prometheus-exporter)[melihovv/laravel-log-viewer

A Laravel log viewer

1231.5k1](/packages/melihovv-laravel-log-viewer)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
