Guru Meditation Reports

Magnum 包含一种机制,允许开发者和系统管理员生成有关正在运行的 Magnum 可执行文件的状态报告。该报告称为Guru Meditation Report(简称GMR)。

生成 GMR

可以通过向任何支持此功能的 Magnum 进程发送 USR2 信号来生成 GMR(参见下文)。然后,GMR 将作为该特定进程的标准错误输出。

例如,假设 magnum-api 的进程 ID 为 8675,并且使用 2>/var/log/magnum/magnum-api-err.log 运行。那么,kill -USR2 8675 将触发 Guru Meditation 报告打印到 /var/log/magnum/magnum-api-err.log

GMR 的结构

GMR 旨在可扩展;任何特定的可执行文件都可以添加自己的部分。但是,基本的 GMR 由几个部分组成

软件包

显示有关此进程所属的软件包的信息,包括版本信息。

线程

显示该进程中每个线程的堆栈跟踪和线程 ID。

绿色线程

显示该进程中每个绿色线程的堆栈跟踪(绿色线程没有线程 ID)。

配置

列出当前进程可通过 CONF 对象访问的所有配置选项。

为新的可执行文件添加 GMR 支持

为给定的可执行文件添加 GMR 支持非常容易。

首先导入模块

from oslo_reports import guru_meditation_report as gmr
from magnum import version

然后,注册任何附加部分(可选)

TextGuruMeditation.register_section('Some Special Section',
                                    some_section_generator)

最后(在 main 下),在运行可执行文件的“主循环”之前(通常是 service.server(server) 或类似内容),注册 GMR 钩子

TextGuruMeditation.setup_autorun(version)

扩展 GMR

如上所述,可以为特定的可执行文件向 GMR 添加附加部分。有关更多信息,请参阅 oslo.reports 下的内联文档