maxfrerichs / typo3-prometheus
从TYPO3系统状态报告中生成Prometheus可读的指标
1.0.0-rc2
2024-06-07 12:11 UTC
Requires
- php: >=8.1
- promphp/prometheus_client_php: ^2.10
- typo3/cms-reports: ^11.5 || ^12.4 || ^13.1
README
关于此扩展
此扩展从系统状态信息生成Prometheus可读的指标(更多关于“如何工作”)并在端点公开。
需求
- TYPO3 11.5或更高版本
- PHP 8.0或更高版本
如何工作
- TYPO3有一个名为"cms-reports"的系统扩展,提供有关您的TYPO3系统和环境的详细信息。虽然系统报告在后台模块中显示,但报告没有以任何方式导出。
- "cms-reports"提供了一个API,可用于在您的安装中注册状态提供者。每个状态提供者可以提供一个或多个状态报告。
- 每个状态报告由标题、严重性、消息和值组成。
- 严重性是一个范围从-1(信息)到2(错误)的数字值,可用于生成仪表指标。"仪表"是Prometheus客户端库提供的核心指标类型之一。
如何使用
- 使用
composer req maxfrerichs/typo3-prometheus在您的首选TYPO3发行版中安装扩展 - 配置您的Web服务器在非HTTP端口上提供服务TYPO3,默认为9090。请注意:不要将此端口暴露给Web,此扩展没有内置的认证机制来限制来自公共的访问。如果您想将端点公开给Web,应实现自己的安全手段。
- 在同一个Web服务器上安装和配置Prometheus。有关此主题的更多信息,请参阅Prometheus文档
已知问题
- 直接通过依赖注入使用StatusRegistry类会导致Extbase前端插件中断,因为ConfigurationManager在某些点被调用时,没有设置$GLOBALS['TYPO3_REQUEST'],导致它回退到BackendConfigurationManager,而我们在前端。这阻止了我们自动聚合所有注册的状态报告作为Prometheus指标,并且一些依赖Extbase功能的报告无法使用。
API
通过创建监听RegisterStatusProviderEvent的事件监听器并调用事件监听器中的$event->injectStatusProvider(),可以注册自定义StatusProvider类。注意:当使用TYPO3 11.5时,您可能需要在Configuration/Service.yaml文件中将实现StatusProviderInterface的类设置为public。
待办事项
- 添加对其他指标类型的支持(可选)。
- 添加对旧版TYPO3版本的支持。
- 添加更多指标
贡献
只需这样做。打开问题,告诉我你的想法,请求特定功能,报告错误等等。您还可以给"typo3@maxfrerichs.dev"发邮件:-)