otmww / laravel-prometheus-exporter
这是一个用于导出 Prometheus 度量的 Laravel 和 Lumen 服务提供程序。
Requires
- php: >=7.2
- endclothing/prometheus_client_php: ^1.0
- illuminate/support: ^5.6|^6.0|^7.0|^8.0
Requires (Dev)
- fzaninotto/faker: ~1.4
- laravel/framework: ^5.6|^6.0|^7.0|^8.0
- laravel/lumen-framework: ^5.6|^6.0|^7.0|^8.0
- mockery/mockery: ~1.0
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~7.0
- squizlabs/php_codesniffer: ^3.0
Suggests
- ext-apc: Required if using APCu.
- ext-redis: Required if using Redis.
README
这是一个用于导出 Prometheus 度量的 Laravel 和 Lumen 服务提供程序。
支持的 Laravel 版本
支持的 Lumen 版本
主要功能
- APC 度量
- Redis 度量
- InMemory 度量
- Push Gateway 度量
- 每个路由中间件请求(总请求和持续时间度量)
安装
Composer
composer require triadev/laravel-prometheus-exporter
应用
该包通过 Laravel 和 Composer 的包发现进行注册。
安装后,您现在可以发布配置文件并设置用于使用此包的正确配置。
php artisan vendor:publish --provider="Triadev\PrometheusExporter\Provider\PrometheusExporterServiceProvider" --tag="config"
这将创建一个文件 config/prometheus-exporter.php
。
配置
键 | 环境 | 值 | 描述 | 默认 |
---|---|---|---|---|
adapter | PROMETHEUS_ADAPTER | 字符串 | apc, redis, inmemory 或 push | apc |
namespace | --- | 字符串 | 默认: app | app |
namespace_http | --- | 字符串 | "RequestPerRoute-Middleware" 度量的命名空间 | http |
redis.host | PROMETHEUS_REDIS_HOST, REDIS_HOST | 字符串 | redis 服务器地址 | 127.0.0.1 |
redis.port | PROMETHEUS_REDIS_PORT, REDIS_PORT | 整数 | redis 端口 | 6379 |
redis.password | PROMETHEUS_REDIS_PASSWORD, REDIS_PASSWORD | 字符串 | redis 密码 | null |
redis.timeout | --- | 浮点数 | redis 超时时间 | 0.1 |
redis.read_timeout | --- | 整数 | redis 读取超时 | 10 |
push_gateway.address | PROMETHEUS_PUSH_GATEWAY_ADDRESS | 字符串 | Push Gateway 地址 | localhost:9091 |
buckets_per_route | --- | 字符串 | "RequestPerRoute-Middleware" 的直方图桶 | --- |
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
指标
- requests_total (包含)
- 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错误跟踪器报告。
或者,克隆项目并提交拉取请求。 :)
测试
- docker-compose up
- docker exec fpm ./vendor/phpunit/phpunit/phpunit
贡献
请参阅CONTRIBUTING以获取详细信息。
致谢
其他
项目相关链接
作者
许可
LaravelPrometheusExporter的代码在MIT许可的条款下分发(见LICENSE)。