altelma/ laravel-prometheus-exporter
Laravel 和 Lumen 的 Prometheus 导出器
Requires
- php: >=7.4
- illuminate/routing: *
- promphp/prometheus_client_php: ^2.6
README
Laravel 和 Lumen 的 Prometheus 导出器包。
此包是一个包装器,将 promphp/prometheus_client_php 集成到 Laravel 和 Lumen 中。
然而,此包受到了以下包的启发
- Superbalist/laravel-prometheus-exporter
- arquivei/laravel-prometheus-exporter
- triadev/LaravelPrometheusExporter
请随意使用上述包,因为这个包只是尝试覆盖 Laravel 和 Lumen 的旧版本(如 6.x 到 8.x 等)的兼容性。
安装
通过 composer 安装此包
composer require altelma/laravel-prometheus-exporter
如果您使用 Lumen,需要在 bootstrap/app.php
中注册服务提供者
$app->register(Altelma\LaravelPrometheusExporter\PrometheusServiceProvider::class);
配置
此包有一个默认配置,它使用以下环境变量。
PROMETHEUS_NAMESPACE=app PROMETHEUS_METRICS_ROUTE_ENABLED=true PROMETHEUS_METRICS_ROUTE_PATH=metrics PROMETHEUS_METRICS_ROUTE_MIDDLEWARE=null PROMETHEUS_COLLECT_FULL_SQL_QUERY=true PROMETHEUS_STORAGE_ADAPTER=memory PROMETHEUS_REDIS_HOST=localhost PROMETHEUS_REDIS_PORT=6379 PROMETHEUS_REDIS_TIMEOUT=0.1 PROMETHEUS_REDIS_READ_TIMEOUT=10 PROMETHEUS_REDIS_PERSISTENT_CONNECTIONS=0 PROMETHEUS_REDIS_PREFIX=PROMETHEUS_
K8s 中具有多个 pod 的指标
如果您想将指标端点暴露给运行在 k8s 中的应用程序,它需要存储与单个端点相同的信息。因此,您需要添加以下配置
PROMETHEUS_REDIS_NAME="<your_custom_name>"
您需要确保配置设置如下,并且仅支持 Redis
适配器
PROMETHEUS_REDIS_PREFIX_DYNAMIC=true PROMETHEUS_REDIS_PREFIX=<your_prefix_name> PROMETHEUS_REDIS_NAME="<your_custom_name>"
指标
此包允许您观察应用程序路由上的指标。包括请求方法、请求路径和状态码。
Laravel
为了在 Laravel 应用程序路由(请求和响应之间的时间)上观察指标,您应该在应用程序的 app/Http/Kernel.php
中注册以下中间件
protected $middleware = [ \Altelma\LaravelPrometheusExporter\Middleware\PrometheusLaravelMiddleware::class, ];
Lumen 9.x
为了在 Lumen 应用程序路由(请求和响应之间的时间)上观察指标,您应该在应用程序的 bootstrap/app.php
中注册以下中间件
$app->middleware([ \Altelma\LaravelPrometheusExporter\Middleware\PrometheusLumenMiddleware::class, ]);
Lumen 8.x 及以下
在 Lumen 8.x 及以下版本中,无法在全局中间件中获取路由,只需在路由中间件中执行即可
$app->routeMiddleware([ 'http.prometheus' => \Altelma\LaravelPrometheusExporter\Middleware\PrometheusLumenRouteMiddleware::class, ]);
保护指标端点
如果您需要防止某人看到您的 /metrics
路由,您可以为您的端点添加中间件进行保护。现在我们开始支持仅使用 basic_auth 来保护您的指标端点
PROMETHEUS_METRICS_ROUTE_AUTH_ENABLED=true PROMETHEUS_METRICS_ROUTE_AUTH_USERNAME=<basic_auth_username> PROMETHEUS_METRICS_ROUTE_AUTH_PASSWORD=<basic_auth_password>
请支持我 ☕
大家好,如果您有任何建议,请告诉我。此外,您还可以阅读我的更多文章 在这里
错误报告
这个包并不完美,但我们可以一起改进。如果您发现错误或有任何建议,请将其发送给我或创建新问题。感谢您使用它。