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。