Support Guru Meditation Report(GMR) in agents

Guru Meditation Report (a.k.a. GMR) is useful for debugging especially
when troubleshooting slow steps or something being stuck. Allow
generating GMR not only for server processes but also for agent
processes so that operators can use the same trick to observe detailed
behavior of agents, with agents kept running.

Change-Id: I519b543b65a96e9d4444d74ad0abceebe924851e
This commit is contained in:
Takashi Kajinami
2024-10-13 12:37:47 +09:00
committed by Brian Haley
parent 498b0258c5
commit 95a8101de2
12 changed files with 21 additions and 7 deletions
+1
View File
@@ -45,6 +45,7 @@ def main():
register_options(cfg.CONF)
common_config.init(sys.argv[1:])
config.setup_logging()
common_config.setup_gmr()
config.setup_privsep()
server = neutron_service.Service.create(
binary=constants.AGENT_PROCESS_DHCP,
+1
View File
@@ -52,6 +52,7 @@ def main(manager='neutron.agent.l3.agent.L3NATAgentWithStateReport'):
register_opts(cfg.CONF)
common_config.init(sys.argv[1:])
config.setup_logging()
common_config.setup_gmr()
config.setup_privsep()
server = neutron_service.Service.create(
binary=constants.AGENT_PROCESS_L3,
+1
View File
@@ -39,6 +39,7 @@ def main():
config.init(sys.argv[1:])
config.setup_logging()
config.setup_gmr()
utils.log_opt_values(LOG)
proxy = agent.UnixDomainMetadataProxy(cfg.CONF)
proxy.run()
+1
View File
@@ -37,6 +37,7 @@ def main():
ovn_meta.register_meta_conf_opts(ovn_meta.OVS_OPTS, group='ovs')
config.init(sys.argv[1:])
config.setup_logging()
config.setup_gmr()
ovn_meta.setup_privsep()
utils.log_opt_values(LOG)
+1
View File
@@ -37,6 +37,7 @@ def main():
config_ovn_agent.register_opts()
config.init(sys.argv[1:])
config.setup_logging()
config.setup_gmr()
utils.log_opt_values(LOG)
config_ovn_agent.setup_privsep()
+10
View File
@@ -26,6 +26,8 @@ from oslo_config import cfg
from oslo_log import log as logging
import oslo_messaging
from oslo_middleware import cors
from oslo_reports import guru_meditation_report as gmr
from oslo_reports import opts as gmr_opts
from oslo_service import wsgi
from neutron._i18n import _
@@ -122,6 +124,14 @@ def setup_logging():
LOG.debug("command line: %s", " ".join(sys.argv))
def setup_gmr():
"""Sets up Guru Meditation Report(GMR) generation."""
gmr_opts.set_defaults(cfg.CONF)
_version_string = version.version_info.release_string()
gmr.TextGuruMeditation.setup_autorun(version=_version_string,
conf=cfg.CONF)
def reset_service():
# Reset worker in case SIGHUP is called.
# Note that this is called only in case a service is running in
@@ -1009,6 +1009,7 @@ def main():
common_config.init(sys.argv[1:])
common_config.setup_logging()
common_config.setup_gmr()
agent_config.setup_privsep()
service_conf.register_service_opts(service_conf.RPC_EXTRA_OPTS, cfg.CONF)
@@ -210,6 +210,7 @@ def main():
common_config.init(sys.argv[1:])
common_config.setup_logging()
common_config.setup_gmr()
agent_config.setup_privsep()
validate_firewall_driver()
@@ -563,6 +563,7 @@ def main():
common_config.init(sys.argv[1:])
common_config.setup_logging()
common_config.setup_gmr()
agent_config.setup_privsep()
service_conf.register_service_opts(service_conf.RPC_EXTRA_OPTS, cfg.CONF)
@@ -34,5 +34,6 @@ def main():
common_config.init(sys.argv[1:])
of_main.init_config()
common_config.setup_logging()
common_config.setup_gmr()
profiler.setup("neutron-ovs-agent", cfg.CONF.host)
of_main.main()
+1 -7
View File
@@ -21,12 +21,9 @@ import os
import sys
from oslo_config import cfg
from oslo_reports import guru_meditation_report as gmr
from oslo_reports import opts as gmr_opts
from neutron._i18n import _
from neutron.common import config
from neutron import version
# NOTE(annp): These environment variables are required for deploying
# neutron-api under mod_wsgi. Currently, these variables are set as DevStack's
@@ -77,11 +74,8 @@ def boot_server(server_func):
if not logger.handlers:
logger.addHandler(sys_logging.StreamHandler())
_version_string = version.version_info.release_string()
_init_configuration()
gmr_opts.set_defaults(cfg.CONF)
gmr.TextGuruMeditation.setup_autorun(version=_version_string,
conf=cfg.CONF)
config.setup_gmr()
try:
return server_func()
except KeyboardInterrupt:
@@ -400,6 +400,7 @@ def main():
config.register_agent_state_opts_helper(conf)
common_config.init(sys.argv[1:])
config.setup_logging()
common_config.setup_gmr()
config.setup_privsep()
server = neutron_service.Service.create(
binary=constants.AGENT_PROCESS_METERING,