alahaxe/healthcheck-bundle

适用于 SF 的可扩展健康检查包

v2.0.2 2024-01-13 16:20 UTC

This package is auto-updated.

Last update: 2024-09-13 17:40:43 UTC


README

DeepSource Packagist PHP Version Support Packagist Version GitHub Workflow Status (branch)

此包允许您轻松地在 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