liveintent/laravel-prometheus-exporter

用于 Laravel 度量数据的 Prometheus 导出器。

v1.4.1 2021-08-24 17:04 UTC

This package is auto-updated.

Last update: 2024-09-13 21:26:41 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

这是一个 Laravel 扩展包,它可以自动收集数据并在您的应用程序中暴露 /metrics 端点,然后可以被 Prometheus 抓取。

要查看导出度量的完整列表,请参阅导出器

安装

您可以通过 composer 安装此包。

composer require liveintent/laravel-prometheus-exporter

安装后,运行以下命令生成 metrics 配置文件。

php artisan metrics:install

该包将自动注册自身。

使用方法

metrics 配置文件包含启用导出器的列表。每个导出器将收集数据并将其存储在您配置的数据存储中。

存储

当前支持的存储驱动程序是 redis、apc 和内存。您可以通过设置环境变量 METRICS_STORAGE_DRIVER 来调整此值。

该包默认使用内存驱动程序以帮助您入门,但您应该尽快更改此设置,因为它在测试之外几乎没有用处。

您需要安装适当的 pecl 扩展(apcphp-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
        ],
    ],
],
标签

编写新的导出器

您也可以编写自己的导出器。您只需实现两个方法,即 registerexport

以下示例展示了每次访问 / 路由时如何增加计数器。

<?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 配置文件中找到的导出器列表中,注册您的导出器类。