umanit / life-page-bundle
一个检查网站各种服务状态的生存页面。
Requires
- php: >=7.1.3
- symfony/framework-bundle: ^4.4|^5.0|^6.0
Requires (Dev)
- doctrine/orm: ^2.13
- friendsofsymfony/elastica-bundle: ^6.2
- phpstan/phpstan-symfony: ^1.2
- pomm-project/pomm-bundle: ^3.0
- symfony/mailer: ^5.4
- symfony/messenger: ^5.4
- symfony/swiftmailer-bundle: ^3.5
README
此包允许您在您的网站上设置生存页面。有一些预定义的检查器可用,并会根据您实际的工程配置自动配置。
安装
使用包管理器 composer 安装此扩展。
composer require umanit/life-page-bundle
将包加载到您的Symfony项目中。
<?php # config/bundles.php return [ // ... Umanit\LifePageBundle\UmanitLifePageBundle::class => ['all' => true], ];
导入路由文件
umanit_life_page: resource: '@UmanitLifePageBundle/Resources/config/routing.yaml'
或者,如果您想自定义它,则调整默认声明
umanit_life_page: path: /_life/{type} controller: umanit_life_page.controller_life_page methods: [GET] requirements: type: '[a-zAZ0-9]+' defaults: type: all
这就完成了!您的生存页面现在应该可以通过路径 /_life
访问,并且如果您的配置满足要求,一些检查已经完成。
可用的检查器
以下检查器可用。如果可能的话,每个检查器都会自动配置,但您也可以在需要时手动使用它们。
DoctrineChecker
PommChecker
FosElasticaChecker
SmtpMailerChecker
SwiftmailerChecker
MessengerChecker
DoctrineChecker
使用实体管理器,尝试连接到数据库。
自动配置
如果存在服务 doctrine.orm.default_entity_manager
,则使用它添加检查器。
PommChecker
使用Pomm检索默认会话并尝试获取客户端编码。
自动配置
如果存在服务 pomm.default_session
,则使用它添加检查器。
FosElasticaChecker
使用客户端,尝试获取服务器版本。
自动配置
如果存在服务 fos_elastica.client.default
,则使用它添加检查器。
SmtpMailerChecker
使用邮件发送传输,并且只有当它是 SmtpTransport
的实例时,才在SMTP服务器上执行 NOOP
命令。
自动配置
如果存在服务 mailer.default_transport
,则使用它添加检查器。
⚠️ 如果服务不是 SmtpTransport
的实例,则检查器将被忽略。
SwiftmailerChecker
使用SwiftMailer实例,尝试ping传输。
自动配置
如果存在服务 swiftmailer.mailer.default
,则使用它添加检查器。
MessengerChecker
使用消息传递传输,并且只有当它是 MessageCountAwareInterface
的实例时,才尝试计算可用消息的数量。
自动配置
对于每个带有 messenger.receiver
标签的服务,将添加一个检查器。
⚠️ 如果服务不是 MessageCountAwareInterface
的实例,则检查器将被忽略。
添加自定义检查器
创建一个扩展 CheckerInterface
的服务并将其标记为 umanit_life_page.service_checker
。您的检查器现在应该显示在生存页面上。
使用 getName
方法在页面上命名检查器,而使用 check
方法确定要显示的状态。如果是 true
则显示 OK
,如果是 false
则显示 KO
,如果是 null
则忽略检查器。
仅检查特定服务
通过添加您自己的服务检查器服务,如果需要,您可以仅检查特定服务。您需要遵循以下步骤
- 为一些服务检查器添加自定义标签;
- 使用类
Umanit\LifePageBundle\Checker\ServiceChecker
声明一个新服务- 服务 必须 使用
tagged_iterator
作为参数,使用您在上一步中创建的自定义标签。 - 服务 必须 标记为
umanit_life_page.service_checker_collection
并具有唯一的type
值。
- 服务 必须 使用
示例
<service id="umanit_life_page.critical_services_checker" class="Umanit\LifePageBundle\Checker\ServiceChecker"> <argument type="tagged_iterator" tag="umanit_life_page.critical_service_checker" /> <tag name="umanit_life_page.service_checker_collection" type="critical" /> </service>
完成之后,您可以通过路径 /_life/{type}
访问检查,例如在我们的例子中为 /_life/critical
。
该包已经提供了 critical
类型及其所有检查器都使用它。
贡献
欢迎提交拉取请求。对于重大更改,请先打开一个问题来讨论您希望进行哪些更改。