altelma/laravel-prometheus-exporter

Laravel 和 Lumen 的 Prometheus 导出器

v0.0.5 2023-01-11 09:11 UTC

This package is auto-updated.

Last update: 2024-09-11 12:39:53 UTC


README

Software License Latest Version on Packagist Total Downloads

Laravel 和 Lumen 的 Prometheus 导出器包。

此包是一个包装器,将 promphp/prometheus_client_php 集成到 Laravel 和 Lumen 中。

然而,此包受到了以下包的启发

请随意使用上述包,因为这个包只是尝试覆盖 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>

请支持我 ☕

大家好,如果您有任何建议,请告诉我。此外,您还可以阅读我的更多文章 在这里

错误报告

这个包并不完美,但我们可以一起改进。如果您发现错误或有任何建议,请将其发送给我或创建新问题。感谢您使用它。