A laravel service provider to export metrics for prometheus.
marvin9002/prometheus-exporter is a Laravel package for a laravel service provider to export metrics for prometheus..
It currently has 0 GitHub stars and 35 downloads on Packagist (latest version v1.9.4).
Install it with composer require marvin9002/prometheus-exporter.
Discover more Laravel packages by marvin9002
or browse all Laravel packages to compare alternatives.
Last updated
A laravel service provider to export metrics for prometheus.
composer require triadev/laravel-prometheus-exporter
The package is registered through the package discovery of laravel and Composer.
https://laravel.com/docs/5.8/packages
Once installed you can now publish your config file and set your correct configuration for using the package.
php artisan vendor:publish --provider="Triadev\PrometheusExporter\Provider\PrometheusExporterServiceProvider" --tag="config"
This will create a file config/prometheus-exporter.php.
| Key | Env | Value | Description | Default | |:-------------:|:-------------:|:-------------:|:-----:|:-----:| | adapter | PROMETHEUS_ADAPTER | STRING | apc, redis, inmemory or push | apc | | namespace | --- | STRING | default: app | app | | namespace_http | --- | STRING | namespace for "RequestPerRoute-Middleware metrics" | http | | redis.host | PROMETHEUS_REDIS_HOST, REDIS_HOST | STRING | redis host | 127.0.0.1 | redis.port | PROMETHEUS_REDIS_PORT, REDIS_PORT | INTEGER | redis port | 6379 | | redis.password | PROMETHEUS_REDIS_PASSWORD, REDIS_PASSWORD | STRING | redis password | null | | redis.timeout | --- | FLOAT | redis timeout | 0.1 | | redis.read_timeout | --- | INTEGER | redis read timeout | 10 | | push_gateway.address | PROMETHEUS_PUSH_GATEWAY_ADDRESS | STRING | push gateway address | localhost:9091 | | buckets_per_route | --- | STRING | histogram buckets for "RequestPerRoute-Middleware" | --- |
'buckets_per_route' => [
ROUTE-NAME => [10,20,50,100,200],
...
]
When you are using laravel you can use the default http endpoint:
triadev/pe/metrics
Of course you can also register your own route. Here is an example:
Route::get(
ROUTE,
\Triadev\PrometheusExporter\Controller\LaravelController::class . '@metrics'
);
A middleware to build metrics for "request_total" and "requests_latency_milliseconds" per route.
lpe.requestPerRoute
$router->get('/test/route', function () {
return 'valid';
})->middleware('lpe.requestPerRoute');
app_requests_latency_milliseconds_bucket{route="/test/route",method="GET",status_code="200",le="0.005"} 0 ... app_requests_latency_milliseconds_count{route="/test/route",method="GET",status_code="200"} 1 app_requests_latency_milliseconds_sum{route="/test/route",method="GET",status_code="200"} 6 app_requests_total{route="/test/route",method="GET",status_code="200"} 1
If you do find an issue, please feel free to report it with GitHub's bug tracker for this project.
Alternatively, fork the project and make a pull request. :)
Please see CONTRIBUTING for details.
The code for LaravelPrometheusExporter is distributed under the terms of the MIT license (see LICENSE).