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许可证。