Guru Meditation Reports¶
Heat 包含一种机制,允许开发人员和系统管理员生成有关正在运行的 Heat 可执行文件的状态报告。此报告称为Guru Meditation Report(简称GMR)。
生成 GMR¶
可以通过向任何支持此功能的 Heat 进程发送 USR2 信号来生成GMR(参见下文)。然后,GMR 将输出到该特定进程的标准错误。
例如,假设 heat-api 的进程 ID 为 10172,并且使用 2>/var/log/heat/heat-api-err.log 运行。那么,kill -USR2 10172 将触发 Guru Meditation 报告打印到 /var/log/heat/heat-api-err.log。
GMR 的结构¶
GMR 旨在可扩展;任何特定的可执行文件都可以添加自己的部分。但是,基本的 GMR 由几个部分组成
- 软件包
显示有关此进程所属的软件包的信息,包括版本信息
- 线程
显示此进程中每个线程的堆栈跟踪和线程 ID
- 绿色线程
显示此进程中每个绿色线程的堆栈跟踪(绿色线程没有线程 ID)
- 配置
列出当前进程可以通过 CONF 对象访问的所有配置选项
为新的可执行文件添加 GMR 支持¶
为给定的可执行文件添加 GMR 支持非常容易。
首先导入模块,以及 Heat 版本模块
from oslo_reports import guru_meditation_report as gmr
from heat import version
然后,注册任何附加部分(可选)
TextGuruMeditation.register_section('Some Special Section',
some_section_generator)
最后(在主函数中),在运行可执行文件的“主循环”(通常是 server.start() 或类似内容)之前,注册GMR 钩子
TextGuruMeditation.setup_autorun(version)
扩展 GMR¶
如上所述,可以为特定的可执行文件向 GMR 添加额外的部分。有关更多信息,请参阅关于 oslo.reports 的文档。