macpaw/symfony-health-check-bundle

Symfony健康检查包

v1.4.1 2023-12-01 08:46 UTC

README

安装

步骤1:下载包

打开命令控制台,进入您的项目目录并执行

composer require macpaw/symfony-health-check-bundle

不使用Symfony Flex的应用程序

通过将其添加到config/bundles.php中注册的包列表中启用该包

// config/bundles.php
<?php

return [
            SymfonyHealthCheckBundle\SymfonyHealthCheckBundle::class => ['all' => true],

        // ...
    ];

创建Symfony Health Check Bundle配置

配置健康检查 - 所有可用的选项,您可以在这里查看。

# config/packages/symfony_health_check.yaml`
symfony_health_check:
    health_checks:
        - id: symfony_health_check.doctrine_check
    ping_checks:
        - id: symfony_health_check.status_up_check

更改响应代码

  • 默认响应代码是200。
  • 确定在某个检查失败时自定义的响应代码(响应代码必须是一个有效的HTTP状态代码)
symfony_health_check:
    health_checks:
        - id: symfony_health_check.doctrine_check
    ping_checks:
        - id: symfony_health_check.status_up_check
    ping_error_response_code: 500
    health_error_response_code: 404

创建Symfony Health Check Bundle路由配置

config/routes/symfony_health_check.yaml

health_check:
    resource: '@SymfonyHealthCheckBundle/Resources/config/routes.xml'

步骤3:配置

安全性可选

如果您使用symfony/security并且您的健康检查需要匿名使用,请在配置中添加新的防火墙

# config/packages/security.yaml
    firewalls:
        healthcheck:
            pattern: ^/health
            security: false
        ping:
            pattern: ^/ping
            security: false

步骤4:其他设置

添加自定义检查

您可以添加自己的自定义健康检查

<?php

declare(strict_types=1);

namespace YourProject\Check;

use SymfonyHealthCheckBundle\Dto\Response;

class CustomCheck implements CheckInterface
{
    public function check(): Response
    {
        return new Response('status', true, 'up');
    }
}

然后我们将我们的自定义健康检查添加到集合中

symfony_health_check:
    health_checks:
        - id: symfony_health_check.doctrine_check
        - id: custom_health_check // custom service check id

如何更改路由

您可以通过简单的配置更改默认行为,请记住修改路由。

# config/routes/symfony_health_check.yaml
health:
    path: /your/custom/url
    methods: GET
    controller: SymfonyHealthCheckBundle\Controller\HealthController::check
    
ping:
    path: /your/custom/url
    methods: GET
    controller: SymfonyHealthCheckBundle\Controller\PingController::check

如何在Docker中使用Healthcheck

HEALTHCHECK --start-period=15s --interval=5s --timeout=3s --retries=3 CMD curl -sS {{your host}}/health || exit 1