hans-thomas / laravel-prometheus-exporter
用于导出 Prometheus 指标的服务提供者。
Requires
- php: >=7.4
- hans-thomas/prometheus_client_php: ^1.0
- illuminate/support: ^7.0
Requires (Dev)
- fzaninotto/faker: ~1.4
- laravel/framework: ^7.0
- mockery/mockery: ~1.0
- orchestra/testbench: ^5.0
- phpunit/phpunit: ^8.0
- squizlabs/php_codesniffer: ^3.0
Suggests
- ext-apc: Required if using APCu.
- ext-redis: Required if using Redis.
README
用于导出 Prometheus 指标的 Laravel 和 Lumen 服务提供者。
支持的 Laravel 版本
Laravel 7.x
主要功能
- 与 APC 的指标
- 与 Redis 的指标
- 与 InMemory 的指标
- 与推送网关的指标
- 每个路由的中间件请求(总指标和持续时间指标)
安装
Composer
composer require hans-thomas/laravel-prometheus-exporter
应用
安装完成后,现在您可以发布您的配置文件并设置使用该包的正确配置。
php artisan vendor:publish --provider="Hasn\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 端点
hans/pe/metrics
当然,您也可以注册自己的路由。以下是一个示例
Route::get(
ROUTE,
[ \Hans\PrometheusExporter\Controller\LaravelController::class, 'metrics']
);
中间件
RequestPerRoute
一个中间件,用于为每个路由构建 "request_total" 和 "requests_latency_milliseconds" 的指标。
别名
lpe.requestPerRoute
指标
- requests_total (inc)
- requests_latency_milliseconds (直方图)
示例
$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 的错误跟踪器为此项目报告。
或者,将该项目分支并创建一个 pull request。 :)
测试
- docker-compose up
- docker exec fpm ./vendor/phpunit/phpunit/phpunit
贡献
有关详细信息,请参阅 CONTRIBUTING
其他
许可证
LaravelPrometheusExporter 的代码在 MIT 许可证下分发(请参阅 LICENSE)。