alahaxe / healthcheck-bundle
适用于 SF 的可扩展健康检查包
v2.0.2
2024-01-13 16:20 UTC
Requires
- php: ^8.0
- ext-json: *
- alahaxe/healthcheck-contracts: ^1.1
- psr/log: ^1||^2||^3
- symfony/config: ^6.0 || ^7.0
- symfony/console: ^6.0 || ^7.0
- symfony/dependency-injection: ^6.0 || ^7.0
- symfony/event-dispatcher-contracts: ^2 || ^3
- symfony/framework-bundle: ^6.0 || ^7.0
- symfony/http-foundation: ^6.0 || ^7.0
- symfony/http-kernel: ^6.0 || ^7.0
Requires (Dev)
- brianium/paratest: ^6.4
- php-parallel-lint/php-parallel-lint: ^1.3
- phpstan/phpstan: ^1.3
- phpunit/phpunit: ^9.5
- symfony/browser-kit: ^6.0 || ^7.0
- symfony/css-selector: ^6.0 || ^7.0
- symfony/event-dispatcher: ^6.0 || ^7.0
- symfony/phpunit-bridge: ^6.0 || ^7.0
- symfony/yaml: ^6.0 || ^7.0
README
此包允许您轻松地在 Symfony 应用程序中公开健康检查。您可以添加任意多的检查并创建自己的检查。
安装
composer require alahaxe/healthcheck-bundle
快速入门
1- 路由器
在您的应用程序中注册包路由
lahaxearnaud_healthcheck: resource: "@HealthCheckBundle/Resources/config/router.yaml"
健康检查的默认路由为 /_healthcheck
2- 防火墙
允许任何请求调用健康检查端点。
security: firewalls: healthcheck: pattern: ^/_healthcheck security: false
使用自定义路由
不要在路由器中加载资源 @HealthCheckBundle/Resources/config/router.yaml 文件,而是在其中添加
lahaxearnaud_healthcheck: path: /my-healthcheck controller: Alahaxe\HealthCheckBundle\Controller\HealthCheckController
适配防火墙模式
security: firewalls: healthcheck: pattern: ^/my-healthcheck security: false
使用可用的检查
添加自定义检查
创建一个实现 CheckInterface 的自定义类
<?php namespace App\Service\HealthCheck; use Alahaxe\HealthCheckBundle\CheckStatus; use Alahaxe\HealthCheckBundle\Contract\CheckInterface; class AppCheck implements CheckInterface { public function check(): CheckStatus { return new CheckStatus( 'app', // the name in the final json __CLASS__, // only for debug CheckStatus::STATUS_OK, // or CheckStatus::STATUS_WARNING or CheckStatus::STATUS_INCIDENT 'An optional message, publicly exposed', 200 // an HTTP status ); } }
/_healthcheck 的输出将
{
"checks": {
"app": {
"payload": "An optional message, publicly exposed",
"status": "ok"
}
}
}
使用标签 lahaxearnaud.healthcheck.check 注册服务
App\Service\HealthCheck\AppCheck: tags: ['lahaxearnaud.healthcheck.check']
或者如果您有很多检查,您可以在文件夹上添加标签
App\Service\HealthCheck\: resource: '../src/Service/HealthCheck' tags: ['lahaxearnaud.healthcheck.check']
HTTP 详细信息
详细信息配置允许减少公开的信息。如果您的健康检查受保护(防火墙、网络规则...),您应使用完整配置。默认详细程度为 minimal
完整配置
在您的 symfony 配置中
health_check: http: format: full
HTTP 响应示例
{
"context": {
"environment": "dev",
"datetime": "2022-01-05T17:00:53+00:00"
},
"health": false,
"checks": {
"databaseConnectivity": {
"payload": null,
"status": "ok"
},
"freeSpace": {
"payload": null,
"status": "warning"
},
"cpuLoad": {
"payload": null,
"status": "incident"
},
"redis": {
"payload": null,
"status": "ok"
},
"app": {
"payload": null,
"status": "ok"
}
}
}
最小配置
在您的 symfony 配置中
health_check: http: format: minimal
HTTP 响应示例
{
"health": false
}
事件 / 监听器
默认情况下,每次 Alahaxe\HealthCheckBundle\Event\HealthCheckAllEvent::class 发生时都会记录一条日志,有关示例,请参阅 Alahaxe\HealthCheckBundle\Event\Subscriber\LoggerSubscriber。
许可证
此包采用 MIT 许可证。有关完整的许可证信息,请参阅包中的 LICENSE。