承接 zlodes/prometheus-client-laravel 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

zlodes/prometheus-client-laravel

最新稳定版本:2.3.0

Composer 安装命令:

composer require zlodes/prometheus-client-laravel

包简介

The Prometheus Metrics client adapter for Laravel Framework

README 文档

README

codecov

This is a Laravel adapter/bridge package for zlodes/prometheus-client.

First steps

Installation

composer require zlodes/prometheus-client-laravel

Register a route for the metrics controller

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

Configure Storage for metrics [optional]

By default, it uses Redis storage. If you want to use other storage, you can do it easily following these three steps:

  1. Create a class implements Storage interface.
  2. Publish a config:
    php artisan vendor:publish --tag=prometheus-client
  3. Set your storage class in the config.

Metrics registration

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

Metrics Collector usage

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();
    }
}

Schedulable collectors

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

Available console commands

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

Upgrade guide

From 1.x to 2.x

  1. Run php artisan vendor:publish --tag=prometheus-client to publish a brand-new config
  2. Configure the new config based on the previous one (prometheus-exporter.php)
  3. Drop legacy config (prometheus-exporter.php)

Testing

Run tests

php ./vendor/bin/phpunit

统计信息

  • 总下载量: 32.08k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 4
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 3
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-06-11