The package adds general-purpose metrics for a laravel web application. It is an addition toensi/laravel-prometheus
You can install the package via composer:
composer require ensi/laravel-metrics
Publish the config with:
php artisan vendor:publish --provider="Ensi\LaravelMetrics\MetricsServiceProvider"
Add Http Middleware
# app/Http/Kernel.php
protected $middleware = [
// ... other middlewares
\Ensi\LaravelMetrics\HttpMiddleware\HttpMetricsMiddleware::class,
];
Add Guzzle Middleware to your http clients
$handlerStack = HandlerStack::create();
$handlerStack->push(GuzzleMiddleware::middleware());
$client = new Client(['handler' => $handlerStack]);
$response1 = $client->get('http://httpbin.org/get');
The structure of the configuration file
return [
'ignore_commands' => [
'kafka:consume',
],
'ignore_routes' => [
'prometheus.*'
],
'http_requests_stats_groups' => [
'<stats-group-name>' => [
// If your app runs in multiple containers and each of them is responsible for its own metrics,
// then you don't need to use the "summary"
'type' => 'summary',
'route_names' => ['*'], // or use prefix, like ['catalog.*', 'profile.favorites'],
'time_window' => 30,
'quantiles' => [0.5, 0.75, ,0.95],
],
'<stats-group-name>' => [
'type' => 'histogram',
'route_names' => ['*'], // or use prefix, like ['catalog.*', 'profile.favorites'],
'buckets' => [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10],
],
]
];
ignore_routes - a list of names of routes for which you do not need to track the processing time of http requests.
ignore_commands - a list of team names for which you do not need to track metrics.
http_requests_stats_groups - a list of histograms and percentiles. Each stats group has a list of the names of the routes that it tracks.
Thus, you can count statistics not for the entire application, but for individual groups of endpoints.
The names of the metrics are presented without the namespace.
Name | Type | Labels | Description |
---|---|---|---|
http_requests_total | Counter | code, endpoint | Counter of incoming http requests |
http_request_duration_seconds | Counter | code, type, endpoint | Time counter for processing incoming http requests |
http_stats_<name> | Histogram or Summary | Statistics on request processing time for the endpoint group specified in the config | |
log_messages_count | Counter | level, endpoint | Number of messages in the log |
queue_job_dispatched_total | Counter | connection, queue, job | The number of jobs sent to the queue |
queue_job_runs_total | Counter | connection, queue, job | The number of processed jobs in the queue |
queue_job_run_seconds_total | Counter | connection, queue, job | Time counter for completing tasks in the queue |
command_runs_total | Counter | command, status | Number of completed commands |
command_run_seconds_total | Counter | command, status | Command execution time counter |
workers_total | Gauge | worker | Number of swoole workers |
workers_idle | Gauge | worker | Number of free swoole workers |
Please see CONTRIBUTING for details.
- composer install
- composer test
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.