Guru Meditation Reports¶
Zaqar 包含一种机制,允许开发人员和系统管理员生成有关正在运行的 Zaqar 可执行文件的状态报告。该报告称为Guru Meditation Report(简称GMR)。
生成 GMR¶
对于 wsgi 和 websocket 模式,可以通过向任何支持此功能的 Zaqar 进程发送 USR2 信号来生成GMR(参见下文)。然后,GMR 将输出到该特定进程的标准错误。
例如,假设 zaqar-server 的进程 ID 为 8675,并且使用 2>/var/log/zaqar/zaqar-server-err.log 运行。那么,kill -USR2 8675 将触发 Guru Meditation 报告打印到 /var/log/zaqar/zaqar-server-err.log。
对于 uwsgi 模式,用户应在 Zaqar 的配置文件中添加配置
[oslo_reports]
file_event_handler=['The path to a file to watch for changes to trigger '
'the reports, instead of signals. Setting this option '
'disables the signal trigger for the reports.']
file_event_handler_interval=['How many seconds to wait between polls when '
'file_event_handler is set, default value '
'is 1']
例如,可以在 Zaqar 的配置文件中指定 “file_event_handler=/tmp/guru_report” 和 “file_event_handler_interval=1”。
可以通过“touch”指定在 file_event_handler 中指定的文件来生成GMR。然后,GMR 将输出到该特定进程的标准错误。
例如,假设 zaqar-server 使用 2>/var/log/zaqar/zaqar-server-err.log 运行,并且文件路径为 /tmp/guru_report。那么,touch /tmp/guru_report 将触发 Guru Meditation 报告打印到 /var/log/zaqar/zaqar-server-err.log。
GMR 的结构¶
GMR 旨在可扩展;任何特定的可执行文件都可以添加自己的部分。但是,基本的 GMR 由几个部分组成
- 软件包
显示有关此进程所属的软件包的信息,包括版本信息
- 线程
显示此进程中每个线程的堆栈跟踪和线程 ID
- 绿色线程
显示此进程中每个绿色线程的堆栈跟踪(绿色线程没有线程 ID)
- 配置
列出当前进程可以通过 CONF 对象访问的所有配置选项
扩展 GMR¶
如上所述,可以为特定的可执行文件向 GMR 添加额外的部分。有关更多信息,请参阅有关 oslo.reports 的内联文档:oslo.reports