nordsec/status-checker

实现状态检查的库

2.1.1 2024-06-27 07:31 UTC

This package is auto-updated.

Last update: 2024-09-27 08:00:26 UTC


README

描述

一个库,可以告诉您任何您应用程序所依赖的外部服务是否出现故障。

特别适用于

  • 创建一个命令,显示部署后应用程序是否正常
  • 为您的系统管理员或监控软件创建状态页面

需求

  • PHP >=7.4 或 >=8.0

使用方法

命令行界面

  1. 安装库
composer require nordsec/status-checker
  1. 为 StatusCheckerService 声明一个实例(最好使用容器),传递对您的项目有意义的各种状态检查器
$container[StatusCheckerService::class] = function (Container $container) {
    $configuration = $container['config'];

    return new StatusCheckerService([
        new DatabaseChecker('database.default_connection', $configuration['database']['default']),
        new RabbitMqChecker('rabbitmq.amqp_server', $configuration['queue']['connection_nordvpn_core']),
    ]);
};
  1. 如有必要,将命令注册到您的应用程序中
$container[StatusCheckCommand::class] = function (Container $container) {
    return new StatusCheckCommand([
        $container[StatusCheckerService::class],
    ]);
};

$container[ConsoleApplication::class] = $container->extend(
    ConsoleApplication::class,
    function (ConsoleApplication $consoleApplication, Container $container) {
        $consoleApplication->add($container[StatusCheckCommand::class]);

        return $consoleApplication;
    }
);
  1. 运行命令
bin/console status:check

WEB

  1. 安装库
composer require nordsec/status-checker
  1. 为 StatusCheckerService 声明一个实例(最好使用容器),传递对您的项目有意义的各种状态检查器
$container[StatusCheckerService::class] = function (Container $container) {
    $configuration = $container['config'];

    return new StatusCheckerService([
        new DatabaseChecker('database.default_connection', $configuration['database']['default']),
        new RabbitMqChecker('rabbitmq.nordvpn_core', $configuration['queue']['connection_nordvpn_core']),
    ]);
};
  1. 创建控制器的实例(最好使用容器)
class StatusControllerProvider implements ServiceProviderInterface
{
    public function register(Container $container)
    {
        $container[StatusController::class] = function (Container $container) {
            $configuration = $container['config'];
            return new StatusController(
                $container[StatusCheckerService::class],
            );
        };
    }
}
  1. 添加所需的路由
$app->get('/status', StatusController::class . ':index');
$app->get('/status/details', StatusController::class . ':details');
  1. 通过浏览器访问上述路由
  • /status 生成整体(全局)状态
    • 如果所有服务都产生 OK 状态,它将输出 {"status":"OK"}
    • 如果任何服务失败,它将输出 {"status":"FAIL"}
    • 如果任何服务处于维护状态,它将输出 {"status":"MAINTENANCE"}
  • /status/details 生成关于每个单独服务状态的更详细输出
{"database.default":"OK","database.other":"OK"}
{"database.default":"OK","database.other":"FAIL"}