otmww/laravel-prometheus-exporter

此包已被放弃,不再维护。没有建议的替代包。

这是一个用于导出 Prometheus 度量的 Laravel 和 Lumen 服务提供程序。

v1.9.2 2020-12-01 15:21 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 度量
  • Push Gateway 度量
  • 每个路由中间件请求(总请求和持续时间度量)

安装

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

配置

环境 描述 默认
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

指标
  1. requests_total (包含)
  2. 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错误跟踪器报告。

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

测试

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

贡献

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

致谢

其他

项目相关链接

作者

许可

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