Laravel package voor het exporteren van Prometheus metrics met configureerbare exporters.
Installeer het package via Composer:
composer require learnkit/laravel-prometheusPubliceer de configuratie:
php artisan vendor:publish --tag=prometheus-configVoeg de volgende variabelen toe aan je .env bestand:
# Enable About Exporter
PROMETHEUS_EXPORT_ABOUT=true
# Automatically register routes (optional, default: true)
PROMETHEUS_AUTO_REGISTER_ROUTES=true
# Customize endpoint (optional)
PROMETHEUS_ENDPOINT=/metrics
# Customize middleware (optional)
PROMETHEUS_MIDDLEWARE=webHet config/prometheus.php bestand bevat alle configuratie opties:
return [
'endpoint' => env('PROMETHEUS_ENDPOINT', '/metrics'),
'middleware' => env('PROMETHEUS_MIDDLEWARE', 'web'),
'auto_register_routes' => env('PROMETHEUS_AUTO_REGISTER_ROUTES', true),
'exporters' => [
'about' => [
'enabled' => env('PROMETHEUS_EXPORT_ABOUT', false),
'class' => \LearnKit\Prometheus\Exporters\AboutExporter::class,
],
],
];Standaard registreert het package automatisch de /metrics route. Dit is de makkelijkste manier om te beginnen.
PROMETHEUS_AUTO_REGISTER_ROUTES=trueAls je meer controle wilt over waar en hoe de routes geregistreerd worden, kun je automatische registratie uitschakelen:
PROMETHEUS_AUTO_REGISTER_ROUTES=falseEn vervolgens in je routes/web.php of een andere routes file:
use LearnKit\Prometheus\Facades\PrometheusRoutes;
// Gebruik standaard configuratie
PrometheusRoutes::routes();
// Of met custom opties
PrometheusRoutes::routes([
'middleware' => ['web', 'auth'],
'endpoint' => '/custom-metrics',
]);Na installatie is er automatisch een /metrics endpoint beschikbaar dat alle metrics in Prometheus formaat teruggeeft.
Bezoek: http://your-app.test/metrics
De About Exporter verzamelt alle informatie van het php artisan about commando en exporteert dit als Prometheus info metrics.
Activeer via:
PROMETHEUS_EXPORT_ABOUT=trueDit exporteert metrics zoals:
laravel_about_environment_info(Laravel versie, PHP versie, etc.)laravel_about_drivers_info(Database, cache, session drivers)- En meer...
Je kunt je eigen exporters toevoegen door de Exporter interface te implementeren:
<?php
namespace App\Exporters;
use LearnKit\Prometheus\Exporters\Contracts\Exporter;
use Spatie\Prometheus\Facades\Prometheus;
class MyCustomExporter implements Exporter
{
public function export(): void
{
Prometheus::addGauge('my_metric')
->value(100)
->labels(['label' => 'value']);
}
public function isEnabled(): bool
{
return config('prometheus.exporters.my_custom.enabled', false);
}
}Voeg deze toe aan config/prometheus.php:
'exporters' => [
'about' => [
'enabled' => env('PROMETHEUS_EXPORT_ABOUT', false),
'class' => \LearnKit\Prometheus\Exporters\AboutExporter::class,
],
'my_custom' => [
'enabled' => env('PROMETHEUS_EXPORT_MY_CUSTOM', false),
'class' => \App\Exporters\MyCustomExporter::class,
],
],Het wordt aangeraden om de metrics endpoint te beveiligen via middleware:
// config/prometheus.php
'middleware' => ['web', 'auth', 'admin'],Of gebruik IP whitelisting in je nginx/apache configuratie.
- PHP 8.2+
- Laravel 11.x of 12.x
- Spatie Laravel Prometheus package
Sebastiaan Kloos Email: [email protected]
MIT