nordsec / status-checker
实现状态检查的库
2.1.1
2024-06-27 07:31 UTC
Requires
- php: ^7.4 || ^8.0
- ext-json: *
- psr/http-message: ^1.0
- symfony/console: >=2.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^2.7
Suggests
- ext-pdo: Needed for DatabaseChecker
- influxdb/influxdb-php: Needed for InfluxDbChecker
- php-amqplib/php-amqplib: Needed for RabbitMqChecker
- predis/predis: Needed for RedisChecker
README
描述
一个库,可以告诉您任何您应用程序所依赖的外部服务是否出现故障。
特别适用于
- 创建一个命令,显示部署后应用程序是否正常
- 为您的系统管理员或监控软件创建状态页面
需求
- PHP >=7.4 或 >=8.0
使用方法
命令行界面
- 安装库
composer require nordsec/status-checker
- 为 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']), ]); };
- 如有必要,将命令注册到您的应用程序中
$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; } );
- 运行命令
bin/console status:check
WEB
- 安装库
composer require nordsec/status-checker
- 为 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']), ]); };
- 创建控制器的实例(最好使用容器)
class StatusControllerProvider implements ServiceProviderInterface
{
public function register(Container $container)
{
$container[StatusController::class] = function (Container $container) {
$configuration = $container['config'];
return new StatusController(
$container[StatusCheckerService::class],
);
};
}
}
- 添加所需的路由
$app->get('/status', StatusController::class . ':index');
$app->get('/status/details', StatusController::class . ':details');
- 通过浏览器访问上述路由
/status
生成整体(全局)状态- 如果所有服务都产生
OK
状态,它将输出{"status":"OK"}
- 如果任何服务失败,它将输出
{"status":"FAIL"}
- 如果任何服务处于维护状态,它将输出
{"status":"MAINTENANCE"}
- 如果所有服务都产生
/status/details
生成关于每个单独服务状态的更详细输出
{"database.default":"OK","database.other":"OK"}
{"database.default":"OK","database.other":"FAIL"}