triadev/laravel-prometheus-exporter

一个用于导出 Prometheus 指标的 Laravel 和 Lumen 服务提供者。

v1.9.0 2019-12-15 11:17 UTC

README

Software license Travis Coveralls CodeCov Scrutinizer Code Quality Latest stable Monthly installs Total Downloads Average time to resolve an issue Percentage of issues still open

一个用于导出 Prometheus 指标的 Laravel 和 Lumen 服务提供者。

支持的 Laravel 版本

Laravel 5.6 Laravel 5.7 Laravel 5.8 Laravel 6.0

支持的 Lumen 版本

Lumen 5.6 Lumen 5.7 Lumen 5.8 Lumen 6.0

主要功能

  • 带有 APC 的指标
  • 带有 Redis 的指标
  • 带有 InMemory 的指标
  • 带有推送网关的指标
  • 每个路由的请求中间件(总请求和持续时间指标)

安装

Composer

composer require triadev/laravel-prometheus-exporter

应用程序

该包通过 Laravel 和 Composer 的包发现进行注册。

https://laravel.net.cn/docs/5.8/packages

一旦安装,您现在可以发布您的配置文件并设置正确的配置以使用此包。

php artisan vendor:publish --provider="Triadev\PrometheusExporter\Provider\PrometheusExporterServiceProvider" --tag="config"

这将创建一个文件 config/prometheus-exporter.php

配置

buckets_per_route

'buckets_per_route' => [
    ROUTE-NAME => [10,20,50,100,200],
    ...
]

用法

获取指标

Laravel

当您使用 Laravel 时,可以使用默认的 HTTP 端点

triadev/pe/metrics

当然,您也可以注册自己的路由。以下是一个示例

Route::get(
    ROUTE,
    \Triadev\PrometheusExporter\Controller\LaravelController::class . '@metrics'
);

Lumen

当您使用 Lumen 时,您必须自行注册路由。以下是一个示例

Route::get(
    ROUTE,
    \Triadev\PrometheusExporter\Controller\LumenController::class . '@metrics'
);

中间件

RequestPerRoute

一个中间件,用于为每个路由构建 "request_total" 和 "requests_latency_milliseconds" 指标。

别名

lpe.requestPerRoute

指标
  1. requests_total (inc)
  2. requests_latency_milliseconds (histogram)
示例
$router->get('/test/route', function () {
    return 'valid';
})->middleware('lpe.requestPerRoute');

app_requests_latency_milliseconds_bucket{route="/test/route",method="GET",status_code="200",le="0.005"} 0 ... app_requests_latency_milliseconds_count{route="/test/route",method="GET",status_code="200"} 1 app_requests_latency_milliseconds_sum{route="/test/route",method="GET",status_code="200"} 6 app_requests_total{route="/test/route",method="GET",status_code="200"} 1

路线图

  • 每个路由的直方图桶(RequestPerRoute)

报告问题

如果您发现任何问题,请随时使用此项目的 GitHub 错误跟踪器报告。

或者,克隆项目并提交一个拉取请求。 :)

测试

  1. docker-compose up
  2. docker exec fpm ./vendor/phpunit/phpunit/phpunit

贡献

请参阅CONTRIBUTING 以获取详细信息。

致谢

其他

项目相关链接

作者

许可

LaravelPrometheusExporter 的代码在 MIT 许可证的条款下分发(见 LICENSE)。