liveintent / laravel-prometheus-exporter
用于 Laravel 度量数据的 Prometheus 导出器。
v1.4.1
2021-08-24 17:04 UTC
Requires
- php: ^7.4|^8.0
- illuminate/contracts: ^8.0
- nesbot/carbon: ^2.46
- promphp/prometheus_client_php: ^2.2
Requires (Dev)
- brianium/paratest: ^6.2
- friendsofphp/php-cs-fixer: ^3.0
- liveintent/php-cs-rules: ^1.0
- nunomaduro/collision: ^5.3
- orchestra/testbench: ^6.15
- phpunit/phpunit: ^9.3
- vimeo/psalm: ^4.4
README
这是一个 Laravel 扩展包,它可以自动收集数据并在您的应用程序中暴露 /metrics 端点,然后可以被 Prometheus 抓取。
要查看导出度量的完整列表,请参阅导出器。
安装
您可以通过 composer 安装此包。
composer require liveintent/laravel-prometheus-exporter
安装后,运行以下命令生成 metrics 配置文件。
php artisan metrics:install
该包将自动注册自身。
使用方法
metrics 配置文件包含启用导出器的列表。每个导出器将收集数据并将其存储在您配置的数据存储中。
存储
当前支持的存储驱动程序是 redis、apc 和内存。您可以通过设置环境变量 METRICS_STORAGE_DRIVER 来调整此值。
该包默认使用内存驱动程序以帮助您入门,但您应该尽快更改此设置,因为它在测试之外几乎没有用处。
您需要安装适当的 pecl 扩展(apc 或 php-redis)。
如果您需要清除存储,可以使用以下命令:
php artisan metrics:clear
导出器
请求持续时间直方图导出器 - http_request_duration_seconds_bucket
这将导出请求持续时间的直方图数据。
示例
Exporters\RequestDurationHistogramExporter::class => [ 'enabled' => env('EXPORT_REQUEST_DURATION_HISTOGRAM', true), 'options' 'buckets' => [ 5, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200 ], ], ],
标签
请求内存使用直方图导出器 - http_request_memory_usage_bytes
这将导出请求内存使用的直方图数据。
示例
Exporters\RequestMemoryUsageHistogramExporter::class => [ 'enabled' => env('EXPORT_MEMORY_USAGE_HISTOGRAM', true), 'options' 'buckets' => [ 5, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200 ], ], ],
标签
作业处理时间直方图导出器 - job_process_time_seconds_bucket
这将导出作业执行持续时间的直方图数据。
示例
Exporters\JobProcessTimeHistogramExporter::class => [ 'enabled' => env('EXPORT_JOB_PROCESS_TIME_HISTOGRAM', true), 'options' 'buckets' => [ 0.1, .3, .5, .7, 1, 2, 3, 4, 5, 10, 30, 40, 60, ], ], ],
标签
作业等待时间直方图导出器 - job_wait_time_seconds_bucket
这将导出作业在队列中等待的时间的直方图数据。
注意:此导出器依赖于 Laravel Horizon。
示例
Exporters\JobWaitTimeHistogramExporter::class => [ 'enabled' => env('EXPORT_JOB_WAIT_TIME_HISTOGRAM', true), 'options' 'buckets' => [ 0.1, .3, .5, .7, 1, 2, 3, 4, 5, 10, 30, 40, 60, ], ], ],
标签
查询持续时间直方图导出器 - db_query_time_seconds_bucket
这将导出查询执行时间的直方图数据。
示例
Exporters\QueryDurationHistogramExporter::class => [ 'enabled' => env('EXPORT_QUERY_DURATION_HISTOGRAM', true), 'options' 'buckets' => [ 5, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200 ], ], ],
标签
编写新的导出器
您也可以编写自己的导出器。您只需实现两个方法,即 register 和 export。
以下示例展示了每次访问 / 路由时如何增加计数器。
<?php namespace LiveIntent\LaravelPrometheusExporter\Exporters; use Illuminate\Foundation\Http\Events\RequestHandled; class HomePageVisitsCountExporter extends Exporter { /** * Register the watcher. * * @return void */ public function register() { $this->app['events']->listen(RequestHandled::class, [$this, 'export']); } /** * Export metrics. * * @param \Illuminate\Foundation\Http\Events\RequestHandled $event * @return void */ public function export($event) { $uri = str_replace($event->request->root(), '', $event->request->fullUrl()) ?: '/'; if ($uri === '/') { $counter = $this->registry->getOrRegisterCounter( '', 'home_page_visits_counter', 'it is a silly example' ); $counter->inc(); } } }
通过将您的导出器类放置在 metrics 配置文件中找到的导出器列表中,注册您的导出器类。