marvin9002/prometheus-exporter

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

v1.9.4 2020-05-06 12:15 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服务提供者。

支持的Laravel版本

Laravel 5.6 Laravel 5.7 Laravel 5.8 Laravel 6.0 Laravel 7.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'
);

中间件

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的bug tracker为此项目报告。

或者,将该项目分叉并提交pull request。 :)

测试

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

贡献

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

致谢

其他

项目相关链接

作者

许可证

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