arrilot/bitrix-systemcheck

此包已弃用且不再维护。未建议替代包。

安装次数: 3,021

依赖: 0

建议者: 0

安全: 0

星标: 11

关注者: 1

分支: 3

开放问题: 0

类型:bitrix-d7-module

0.1.8 2020-04-19 16:16 UTC

This package is auto-updated.

Last update: 2023-01-29 03:02:51 UTC


README

Latest Stable Version

该包不再积极维护

原因是我们不再在项目中使用Bitrix。如果您对这个项目感兴趣并想进行维护,请将其分叉并在此存储库中创建Issue,以便我们将分叉的链接放在这里。

Bitrix系统检查

此包是一个Bitrix模块,它是比标准Bitrix功能“系统检查”更灵活、功能更强大的替代品。

安装

  1. 如果还没有,请在 composer.json 中添加以下行
  "extra": {
    "installer-paths": {
      "app/local/modules/{$name}/": [
        "type:bitrix-d7-module",
        "type:bitrix-module"
      ]
    }
  },

composer require arrilot/bitrix-systemcheck

  1. 在页面 /bitrix/admin/partner_modules.php?lang=ru 上安装模块

  2. 将 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;
    }
}

使用

  1. 实现监控/监控(如上示例)
  2. 将它们添加到 ``.setting_extra.php`
'bitrix-systemcheck' => [
    'value' => [
        'monitorings' => [
            \System\SystemCheck\Monitorings\FullMonitoring::class,
            \System\SystemCheck\Monitorings\BriefMonitoring::class,
        ]
    ],
    'readonly' => true,
],
  1. 现在可以在管理界面中启动选定的监控 /bitrix/admin/arrilot_systemcheck_monitoring.php?code=full
  2. 如果有的话,在基于symfony/console的命令行应用程序中注册命令 Arrilot\BitrixSystemCheck\Console\SystemCheckCommand
  3. 注册后,我们可以通过以下方式通过控制台应用程序运行监控: 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'
  4. 如果愿意,可以将启动监控的命令添加到cron中,并根据我们的日志记录器Monitoring::logger()获取日志/警报。

包中的检查可以在src/Checks中查看。

将检查添加到包中,即贡献

任何愿意的人都可以通过Pull Request (PR)提交自己的检查,以便考虑将其添加到模块的核心。在此过程中,需要遵循以下简单的规则。

  1. 在开始工作之前,需要确保包中以及公开的PR中没有相同的检查。
  2. 一个PR = 一个检查
  3. 检查应该足够通用,以便适用于大量应用程序。如果您的检查与您的应用程序紧密相关,则最好保留在您的应用程序中。
  4. 需要考虑确保检查在运行在其他应用程序时不会因为致命异常/错误而结束。例如,如果其中使用了某些额外的PHP模块,则需要执行检查extension_loaded()$this->skip()return false,如果extension_loaded()返回false。
  5. 检查应该能在"php": ">=5.6.0"上运行。
  6. 从前一点可以推断出,检查应尽量减少使用外部依赖(PHP模块、composer包等)。
  7. 如果检查是比特里克斯“系统检查”中未实现的检查的类似物,则它应该在Arrilot\BitrixSystemCheck\Checks\Bitrix命名空间中,否则在Arrilot\BitrixSystemCheck\Checks\Custom
  8. 代码应符合PSR-2规范。