arrilot / bitrix-systemcheck
此包已弃用且不再维护。未建议替代包。
0.1.8
2020-04-19 16:16 UTC
Requires
- php: >=5.6.0
- composer/installers: ~1
- psr/log: ^1.1
- symfony/console: ~3 || ~4
Suggests
- sensiolabs/security-checker: Required to use the composer class (>=5.0).
README
该包不再积极维护
原因是我们不再在项目中使用Bitrix。如果您对这个项目感兴趣并想进行维护,请将其分叉并在此存储库中创建Issue,以便我们将分叉的链接放在这里。
Bitrix系统检查
此包是一个Bitrix模块,它是比标准Bitrix功能“系统检查”更灵活、功能更强大的替代品。
安装
- 如果还没有,请在
composer.json
中添加以下行
"extra": {
"installer-paths": {
"app/local/modules/{$name}/": [
"type:bitrix-d7-module",
"type:bitrix-module"
]
}
},
composer require arrilot/bitrix-systemcheck
-
在页面 /bitrix/admin/partner_modules.php?lang=ru 上安装模块
-
将 local/modules/arrilot.systemcheck 添加到 .gitignore
理论
bitrix-systemcheck的功能
- 提供了一系列现成的检查,包括Bitrix内置解决方案的检查以及额外的检查
- 允许创建针对应用程序的特定检查
- 允许创建具有任何检查集合的无限数量的监控
- 允许通过管理界面(web线程)或控制台(cli)运行这些监控
- 能够通过PSR-日志记录器记录结果,从而有助于自动化应用程序控制。
- 需要与基本身份验证兼容,而不是内置检查
基本实体
包的基本实体是检查和监控。
检查 - 继承自 Arrilot\BitrixSystemCheck\Checks\Check
的类。检查的目标是在 run()
方法中返回 true/false
。如果检查返回 false,则在 return false;
前应调用方法 $this->logError("错误文本在这里");
一次或多次,以便了解检查失败的原因。示例
class BitrixDebugIsTurnedOn extends Check { /** * @return string */ public function name() { return "Проверка на exception_handling.debug = true ..."; } /** * @return boolean */ public function run() { $config = Configuration::getInstance()->get('exception_handling'); if (empty($config['debug'])) { $this->logError('Значение конфигурации exception_handling.debug должно быть true в данном окружении'); return false; } return true; } }
监控 - 继承自 Arrilot\BitrixSystemCheck\Checks\Monitoring
的类。逻辑上,它代表一个命名的检查集,该集合可以依赖于环境和其它参数。
示例
class FullMonitoring extends Monitoring { /** * Russian monitoring name * * @return string */ public function name() { return 'Полный мониторинг'; } /** * Monitoring code (id) * * @return string */ public function code() { return 'full'; } /** * @return array */ public function checks() { if (in_production()) { return [ new BitrixChecks\RequiredPhpModules(), new BitrixChecks\PhpSettings(), ... } return [ new BitrixChecks\RequiredPhpModules(), new BitrixChecks\PhpSettings(), ... ]; } /** * @return Logger|null|\Psr\Log\LoggerInterface */ public function logger() { $logger = new Logger('monitoring-full'); $logger->pushHandler(new StreamHandler(logs_path('systemcheck/monitoring-full.log'))); return $logger; } }
使用
- 实现监控/监控(如上示例)
- 将它们添加到 ``.setting_extra.php`
'bitrix-systemcheck' => [ 'value' => [ 'monitorings' => [ \System\SystemCheck\Monitorings\FullMonitoring::class, \System\SystemCheck\Monitorings\BriefMonitoring::class, ] ], 'readonly' => true, ],
- 现在可以在管理界面中启动选定的监控
/bitrix/admin/arrilot_systemcheck_monitoring.php?code=full
- 如果有的话,在基于symfony/console的命令行应用程序中注册命令
Arrilot\BitrixSystemCheck\Console\SystemCheckCommand
- 注册后,我们可以通过以下方式通过控制台应用程序运行监控:
php our_console_app.php system:check full
,其中full
是通过Monitoring::code()
方法返回的监控代码。最好从运行cron和web服务器的用户启动,例如这样sudo -H -u www-data bash -c 'php our_console_app.php system:check full'
- 如果愿意,可以将启动监控的命令添加到cron中,并根据我们的日志记录器
Monitoring::logger()
获取日志/警报。
包中的检查可以在src/Checks
中查看。
将检查添加到包中,即贡献
任何愿意的人都可以通过Pull Request (PR)提交自己的检查,以便考虑将其添加到模块的核心。在此过程中,需要遵循以下简单的规则。
- 在开始工作之前,需要确保包中以及公开的PR中没有相同的检查。
- 一个PR = 一个检查
- 检查应该足够通用,以便适用于大量应用程序。如果您的检查与您的应用程序紧密相关,则最好保留在您的应用程序中。
- 需要考虑确保检查在运行在其他应用程序时不会因为致命异常/错误而结束。例如,如果其中使用了某些额外的PHP模块,则需要执行检查
extension_loaded()
和$this->skip()
或return false
,如果extension_loaded()
返回false。 - 检查应该能在
"php": ">=5.6.0"
上运行。 - 从前一点可以推断出,检查应尽量减少使用外部依赖(PHP模块、composer包等)。
- 如果检查是比特里克斯“系统检查”中未实现的检查的类似物,则它应该在
Arrilot\BitrixSystemCheck\Checks\Bitrix
命名空间中,否则在Arrilot\BitrixSystemCheck\Checks\Custom
。 - 代码应符合PSR-2规范。