avto-dev / app-metrics-laravel
Laravel应用程序的指标端点
Requires
- php: ^8.1
- ext-json: *
- illuminate/config: ~10.0 || ~11.0
- illuminate/container: ~10.0 || ~11.0
- illuminate/contracts: ~10.0 || ~11.0
- illuminate/routing: ~10.0 || ~11.0
- illuminate/support: ~10.0 || ~11.0
Requires (Dev)
- laravel/laravel: ~10.0 || ~11.0
- mockery/mockery: ^1.6.5
- phpstan/phpstan: ^1.10.66
- phpunit/phpunit: ^10.5
README
Laravel应用程序的指标端点
使用此包可以轻松地将指标端点集成到您的基于Illuminate的应用程序中。
安装
使用以下命令通过composer安装此包
$ composer require avto-dev/app-metrics-laravel "^2.0"
需要安装
composer
(如何安装composer)。
您需要修复包的主要版本。
之后,您应该使用以下命令“发布”包配置文件
$ php ./artisan vendor:publish --provider="AvtoDev\\AppMetrics\\ServiceProvider"
并在文件./config/metrics.php
中进行配置。
用法
请随意编写自己的指标类,并将其添加到metrics.metric_classes
配置数组中。
指标类必须实现
MetricInterface
,可选实现HasDescriptionInterface
/HasLabelsInterface
/HasTypeInterface
。在指标构造函数中,您可以请求任何依赖项 - DI将自动注入它。
此外,指标类可以实现
MetricsGroupInterface
(用于指标分组)。
当您的指标类准备就绪并成功注册到配置文件后,您可以请求特殊的路由(默认为/metrics
)
$ curl http://127.0.0.1:8080/metrics?format=json [{"name": "some_metric", "value": 1, "labels": {"foo":"bar"}}] $ curl http://127.0.0.1:8080/metrics?format=prometheus some_metric{foo="bar"} 1
配置允许您更改端点URI、设置密码保护等。
可以使用发送get参数?secret=XXX
或HTTP头X-SECRET
来完成秘密验证。
格式化程序
开箱即用,此包提供json
和prometheus
指标格式。请随意编写自己的格式化程序。
Prometheus格式化程序
Prometheus格式化程序使用一些用于指标值的常量(Nan
、+Inf
、-Inf
)和类型(counter
、summary
、gauge
、histogram
、untyped
)。您可以在PrometheusValuesDictionary
和HasTypeInterface
中找到它。
请注意,Prometheus
只接受数值型指标值。此格式化程序将尝试将指标值转换为数值格式(integer
或float
)。如果无法转换为数值,则设置Nan
。格式化值的示例
跳过指标
如果在构建或格式化指标时抛出实现AvtoDev\AppMetrics\Exceptions\ShouldBeSkippedMetricExceptionInterface
的异常,则此指标将跳过格式化程序的输出,并由Illuminate\Contracts\Debug\ExceptionHandler
报告异常。
测试
对于包测试,我们使用phpunit
框架和docker-ce
+ docker-compose
作为开发环境。因此,在克隆存储库后在终端中编写
$ make build $ make latest # or 'make lowest' $ make test
变更日志
变更日志可以在此处找到。
支持
如果您发现任何包错误,请在此存储库中创建问题。
许可证
这是开源软件,许可协议为MIT许可证。