worlddirect / healthcheck
检查您的TYPO3安装状态。
Requires
- php: ^8.3
- typo3/cms-core: ^13
- typo3/cms-fluid: ^13
Requires (Dev)
- captainhook/captainhook: ^5.16
- ergebnis/composer-normalize: ^2.30
- friendsofphp/php-cs-fixer: *
- helmich/typo3-typoscript-lint: ^3.1
- michielroos/typo3scan: ^1.7
- phpmd/phpmd: ^2.13
- phpstan/phpstan: ^1.10
- saschaegerer/phpstan-typo3: ^1.8
- seld/jsonlint: ^1.9
- worlddirect/buildinfo: ^1.1
Replaces
- typo3-ter/healthcheck: 2.0
This package is auto-updated.
Last update: 2024-09-26 08:18:07 UTC
README
TYPO3扩展:"healthcheck"
内容
它做什么?
TYPO3扩展"healthcheck"提供输出,每个输出都显示当前TYPO3安装的健康检查信息。扩展运行各种探测,根据成功或错误返回状态。这导致一个整体的健康检查结果。健康检查输出可以由各种监控软件,如PRTG使用。
安装
可以使用Composer安装此扩展
composer req worlddirect/healthcheck
注意:为了让健康检查工作,您需要配置“secret”。有关详细信息,请参阅扩展配置。
版本和分支
master
分支包含与TYPO3 V11和TYPO3 V12兼容的最新版本。存在一个feature-v10
分支,它将扩展回迁以兼容TYPO3 V10。它缺少一些配置选项和PHP的新功能(如枚举)。它被快速且粗略地制作出来,只是为了在较老的TYPO3 V10安装中也有健康检查。在将所有项目升级到v11或v12或...之后,将不会更新此分支。
TYPO3 V10版本将是“0.xx.xx”。TYPO3 V11和V12的当前版本版本号为“1.xx.xx”。
访问健康检查
健康检查使用中间件来渲染输出。为了使中间件知道可能需要渲染健康检查,我们使用扩展配置设置pathSegment和secret(以及输出类型)。
可以通过“路径”使用3部分来访问健康检查。以下是一个示例URL:https://www.mustermann.de/healthcheck/lkjl23wsdkjjlskdj/html/。
- 1. 部分:“路径”中的第一个是"pathSegment"。在示例中这是"healthcheck"。
- 2. 部分:“路径”的第二部分是“secret”。示例中包含密钥"lkjl23wsdkjjlskdj"。
- 3. 部分:“路径”的第三和最后一部分包含所需输出的名称。在这种情况下,它使用“html”,代表"HtmlOutput"。如果省略此部分,则默认使用“html”。
返回的HTTP状态码
返回的响应状态码取决于HealthcheckResult对象的状态。如果状态等于“ERROR”,则返回HTTP状态码503
。如果状态是“SUCCESS”,则返回代码200
。这使得可以通过检查HTTP状态码来确定是否健康检查存在问题。无需解释输出。正如之前提到的,有一些工具可以执行针对特定HTTP状态码的检查。或者你可以构建自己的小脚本来做这个。😃
配置
存在扩展配置以及TypoScript设置配置。
扩展配置
扩展配置包含各种设置,这些设置需要设置以使健康检查正常工作。还可以启用显示调试信息。
pathSegment: 此设置设置用于访问健康检查的 "path" 的第1部分。默认设置为 "healthcheck",用户可以对其进行修改。
secret: 由于健康检查的输出被认为是值得保护的信息,因此设置密钥值是强制性的。没有它将无法工作,并且不会显示输出。在默认设置中没有密钥,这迫使网站管理员创建一个。
allowedIps: 可以限制允许查看健康检查的IP地址。默认值为 "*"(所有IP地址)。
enableDebug: 此设置允许输出更多调试信息。例如:如果您没有设置 secret,则健康检查在前端不会显示任何内容。如果您启用 "enableDebug" 设置,您至少会看到一个关于当前错误的简短消息。默认值为 "off"(0)。
TypoScript配置
TypoScript配置用于其他任何设置。目前只有一个设置用于HTML输出。
backgroundImage: 此设置与HTML输出相关,并包含用于HtmlOutput类实例的背景图片。
探测
为了检查某些功能、数据或状态,我们使用 Probes 来实现。这些探测具有一个 "run" 方法,用于检查特定部分,并将探测结果填充为 success 或 error 消息。如果至少有1条 error 消息,则 HealthcheckResult 的整体状态为 ERROR。
所有探测都需要状态为 "SUCCESS",才能使整体健康检查结果状态为 "SUCCESS"!
该扩展已经提供了三个内置探测。
- CacheProbe: 检查所有缓存配置是否可写。
- DatabaseProbe: 检查数据库访问是否正常。
- ExternalImportProbe: 检查外部导入扩展的日志最后一条记录是否为失败。
- SchedulerProbe: 检查是否有任何预定任务失败。
CacheProbe
TODO:CacheProbe是什么?
DatabaseProbe
TODO:DatabaseProbe是什么?
ExternalImportProbe
TODO:ExternalImportProbe是什么?
SchedulerProbe
TODO:SchedulerProbe做什么?
输出
TODO:输出是什么?
该扩展提供了以下内置输出格式。
- HtmlOutput: 使用Bootstrap 5渲染HTML页面,显示HealthcheckResult。显示整体成功或错误。
- JsonOutput: 简单的JSON输出,显示HealthcheckResult作为JSON。
HtmlOutput
TODO:HtmlOutput如何工作?
定制
此扩展可定制,允许开发者添加新的 probes 和 outputs。
添加自定义探测
TODO:解释接口 TODO:解释BaseClass
添加自定义输出
TODO:解释接口 TODO:解释BaseClass
暂停探测
失败的探测会导致健康检查返回非200 HTTP状态码,以表示错误。您的监控软件可能会大量检查这些值。因此,将生成事件或升级(以及大量电子邮件)。
这时 "Pause" 和 Play 就派上用场了。
TODO:解释暂停探测的概念。
灵感
此扩展受到了GitHub Gist的启发,由Axel Seemann(aseemann)创建(aseemann)。有关Gist的详细信息,请参阅此处:[healthcheck.php](https://gist.github.com/aseemann/42041fccb784cf472349a7af9748fe9b)。我还从Georg Ringer的扩展 t3monitoring_client 中汲取了一些灵感。有关此扩展的详细信息,请参阅此处:[t3monitoring_client](https://github.com/georgringer/t3monitoring_client)。
致谢
图片的版权归
- success.png: 由kliwir art创建的勾选图标 - Flaticon
- danger.png: 错误图标由Ilham Fitrotul Hayat - Flaticon创建
- health-report.png: 医疗记录图标由Freepik - Flaticon创建
- tx_healthcheck_domain_model_probe_pause.png 和 pause.png: 暂停图标由Kiranshastry - Flaticon创建
- play.png: 播放图标由Freepik - Flaticon创建