This is a Laravel adapter/bridge package for zlodes/prometheus-client.
composer require zlodes/prometheus-client-laravel
Your application is responsible for metrics route registration. There is a controller ready to use. You can configure groups, middleware or prefixes as you want.
Example:
use Illuminate\Support\Facades\Route;
use Zlodes\PrometheusClient\Laravel\Http\MetricsExporterController;
Route::get('/metrics', MetricsExporterController::class);
By default, it uses Redis storage. If you want to use other storage, you can do it easily following these three steps:
- Create a class implements
Storage
interface. - Publish a config:
php artisan vendor:publish --tag=prometheus-client
- Set your
storage
class in the config.
In your ServiceProvider::register
:
$this->callAfterResolving(Registry::class, static function (Registry $registry): void {
$registry
->registerMetric(
new Counter('dummy_controller_hits', 'Dummy controller hits count')
)
->registerMetric(
new Gauge('laravel_queue_size', 'Laravel queue length by Queue')
);
});
You can work with your metrics whenever you want. Just use Collector
:
use Zlodes\PrometheusClient\Collector\CollectorFactory;
class DummyController
{
public function __invoke(CollectorFactory $collector)
{
$collector->counter('dummy_controller_hits')->increment();
}
}
At times, there may be a need to gather metrics on a scheduled basis. The package offers a feature to register a SchedulableCollector that executes every minute using the Laravel Scheduler.
You can define your SchedulableCollectors
using a config or register it in SchedulableCollectorRegistry directly in a ServiceProvider
:
$this->callAfterResolving(
SchedulableCollectorRegistry::class,
static function (SchedulableCollectorRegistry $schedulableCollectorRegistry): void {
$schedulableCollectorRegistry->push(YourSchedulableCollector::class);
}
);
Note For further details, see zlodes/prometheus-client
Command | Description |
---|---|
php artisan metrics:list |
Lists all registered metrics |
php artisan metrics:clear |
Clears metrics storage |
metrics:collect-scheduled |
Runs ScheduledCollectors . Using by Scheduler |
- Run
php artisan vendor:publish --tag=prometheus-client
to publish a brand-new config - Configure the new config based on the previous one (
prometheus-exporter.php
) - Drop legacy config (
prometheus-exporter.php
)
php ./vendor/bin/phpunit