The oslo_reports.guru_meditation_report
Module¶
Provides Guru Meditation Report
This module defines the actual OpenStack Guru Meditation Report class.
This can be used in the OpenStack command definition files. For example, in a nova command module (under nova/cmd):
from oslo_config import cfg
from oslo_log import log as oslo_logging
from oslo_reports import opts as gmr_opts
from oslo_reports import guru_meditation_report as gmr
CONF = cfg.CONF
# maybe import some options here...
def main():
oslo_logging.register_options(CONF)
gmr_opts.set_defaults(CONF)
CONF(sys.argv[1:], default_config_files=['myapp.conf'])
oslo_logging.setup(CONF, 'myapp')
gmr.TextGuruMeditation.register_section('Some Special Section',
special_section_generator)
gmr.TextGuruMeditation.setup_autorun(version_object, conf=CONF)
server = service.Service.create(binary='some-service',
topic=CONF.some_service_topic)
service.serve(server)
service.wait()
Then, you can do
$ kill -USR2 $SERVICE_PID
and get a Guru Meditation Report in the file or terminal where stderr is logged for that given service.
-
class
oslo_reports.guru_meditation_report.
GuruMeditation
(version_obj, sig_handler_tb=None, *args, **kwargs)¶ Bases:
object
A Guru Meditation Report Mixin/Base Class
This class is a base class for Guru Meditation Reports. It provides facilities for registering sections and setting up functionality to auto-run the report on a certain signal or use file modification events.
This class should always be used in conjunction with a Report class via multiple inheritance. It should always come first in the class list to ensure the MRO is correct.
-
classmethod
handle_signal
(version, service_name, log_dir, frame)¶ The Signal Handler
This method (indirectly) handles receiving a registered signal and dumping the Guru Meditation Report to stderr or a file in a given dir. If service name and log dir are not None, the report will be dumped to a file named $service_name_gurumeditation_$current_time in the log_dir directory. This method is designed to be curried into a proper signal handler by currying out the version parameter.
Parameters: - version – the version object for the current product
- service_name – this program name used to construct logfile name
- logdir – path to a log directory where to create a file
- frame – the frame object provided to the signal handler
-
classmethod
register_section
(section_title, generator)¶ Register a New Section
This method registers a persistent section for the current class.
Parameters: - section_title (str) – the title of the section
- generator – the generator for the section
-
run
()¶
-
classmethod
setup_autorun
(version, service_name=None, log_dir=None, signum=None, conf=None)¶ Set Up Auto-Run
This method sets up the Guru Meditation Report to automatically get dumped to stderr or a file in a given dir when the given signal is received. It can also use file modification events instead of signals.
Parameters: - version – the version object for the current product
- service_name – this program name used to construct logfile name
- logdir – path to a log directory where to create a file
- signum – the signal to associate with running the report
- conf – Configuration object, managed by the caller.
-
timestamp_fmt
= ‘%Y%m%d%H%M%S’¶
-
classmethod
-
class
oslo_reports.guru_meditation_report.
TextGuruMeditation
(version_obj, traceback=None)¶ Bases:
oslo_reports.guru_meditation_report.GuruMeditation
,oslo_reports.report.TextReport
A Text Guru Meditation Report
This report is the basic human-readable Guru Meditation Report
It contains the following sections by default (in addition to any registered persistent sections):
- Package Information
- Threads List
- Green Threads List
- Process List
- Configuration Options
Parameters: - version_obj – the version object for the current product
- traceback – an (optional) frame object providing the actual traceback for the current thread