ensi/laravel-metrics

laravel metrics

1.0.16 2024-10-17 12:19 UTC

README

Latest Version on Packagist Tests Total Downloads

The package adds general-purpose metrics for a laravel web application. It is an addition toensi/laravel-prometheus

Installation

You can install the package via composer:

composer require ensi/laravel-metrics

Publish the config with:

php artisan vendor:publish --provider="Ensi\LaravelMetrics\MetricsServiceProvider"

Basic Usage

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');

Configuration

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.

Metrics

The names of the metrics are presented without the namespace.

Contributing

Please see CONTRIBUTING for details.

Testing

  1. composer install
  2. composer test

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

License

The MIT License (MIT). Please see License File for more information.