Guru Meditation Reports¶
A Guru Meditation Report (GMR) is generated by the Designate services when service processes receiving SIGUSR2 signal. The report is a general-purpose debug report for developers and system admins which contains the current state of a running Designate service process.
Structure of a GMR¶
- Package
- Shows information about the package to which this process belongs, including version information
- Threads
- Shows stack traces and thread ids for each of the threads within this process
- Green Threads
- Shows stack traces for each of the green threads within this process (green threads don’t have thread ids)
- Processes
- Shows information about this process, including pid, ppid, uid and process state
- Configuration
- Lists all the configuration options currently accessible via the CONF object for the current process
Generate a GMR¶
A GMR can be generated by sending the USR2 signal to any Designate processes.
For example, suppose designate-central
has pid 15097
, kill -USR2
15097
will trigger a GMR.
If option logdir
has been set in designate.conf
, the GMR will be saved
in the folder which logdir
specified. Otherwise, the GMR will be printed to
the stderr.
GMR Example¶
========================================================================
==== Guru Meditation ====
========================================================================
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
========================================================================
==== Package ====
========================================================================
product = OpenStack Designate
vendor = OpenStack Foundation
version = 2015.1
========================================================================
==== Threads ====
========================================================================
------ Thread #140098874533632 ------
/usr/local/lib/python2.7/dist-packages/eventlet/hubs/hub.py:346 in run
`self.wait(sleep_time)`
/usr/local/lib/python2.7/dist-packages/eventlet/hubs/poll.py:85 in wait
`presult = self.do_poll(seconds)`
/usr/local/lib/python2.7/dist-packages/eventlet/hubs/epolls.py:62 in do_poll
`return self.poll.poll(seconds)`
========================================================================
==== Green Threads ====
========================================================================
------ Green Thread ------
/usr/local/lib/python2.7/dist-packages/eventlet/greenthread.py:214 in main
`result = function(*args, **kwargs)`
/opt/stack/designate/designate/openstack/common/service.py:492 in run_service
`done.wait()`
/usr/local/lib/python2.7/dist-packages/eventlet/event.py:121 in wait
`return hubs.get_hub().switch()`
/usr/local/lib/python2.7/dist-packages/eventlet/hubs/hub.py:294 in switch
`return self.greenlet.switch()`
------ Green Thread ------
/usr/local/lib/python2.7/dist-packages/eventlet/greenthread.py:214 in main
`result = function(*args, **kwargs)`
/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py:95 in inner_func
`return infunc(*args, **kwargs)`
/usr/local/lib/python2.7/dist-packages/oslo_messaging/_executors/impl_eventlet.py:96 in _executor_thread
`incoming = self.listener.poll()`
/usr/local/lib/python2.7/dist-packages/oslo_messaging/_drivers/amqpdriver.py:121 in poll
`self.conn.consume(limit=1, timeout=timeout)`
/usr/local/lib/python2.7/dist-packages/oslo_messaging/_drivers/impl_rabbit.py:867 in consume
`six.next(it)`
/usr/local/lib/python2.7/dist-packages/oslo_messaging/_drivers/impl_rabbit.py:782 in iterconsume
`yield self.ensure(_error_callback, _consume)`
/usr/local/lib/python2.7/dist-packages/oslo_messaging/_drivers/impl_rabbit.py:688 in ensure
`ret, channel = autoretry_method()`
/usr/local/lib/python2.7/dist-packages/kombu/connection.py:436 in _ensured
`return fun(*args, **kwargs)`
/usr/local/lib/python2.7/dist-packages/kombu/connection.py:508 in __call__
`return fun(*args, channel=channels[0], **kwargs), channels[0]`
/usr/local/lib/python2.7/dist-packages/oslo_messaging/_drivers/impl_rabbit.py:675 in execute_method
`method()`
/usr/local/lib/python2.7/dist-packages/oslo_messaging/_drivers/impl_rabbit.py:774 in _consume
`return self.connection.drain_events(timeout=poll_timeout)`
/usr/local/lib/python2.7/dist-packages/kombu/connection.py:275 in drain_events
`return self.transport.drain_events(self.connection, **kwargs)`
/usr/local/lib/python2.7/dist-packages/kombu/transport/pyamqp.py:91 in drain_events
`return connection.drain_events(**kwargs)`
/usr/local/lib/python2.7/dist-packages/amqp/connection.py:302 in drain_events
`chanmap, None, timeout=timeout,`
/usr/local/lib/python2.7/dist-packages/amqp/connection.py:365 in _wait_multiple
`channel, method_sig, args, content = read_timeout(timeout)`
/usr/local/lib/python2.7/dist-packages/amqp/connection.py:336 in read_timeout
`return self.method_reader.read_method()`
/usr/local/lib/python2.7/dist-packages/amqp/method_framing.py:186 in read_method
`self._next_method()`
/usr/local/lib/python2.7/dist-packages/amqp/method_framing.py:107 in _next_method
`frame_type, channel, payload = read_frame()`
/usr/local/lib/python2.7/dist-packages/amqp/transport.py:154 in read_frame
`frame_header = read(7, True)`
/usr/local/lib/python2.7/dist-packages/amqp/transport.py:277 in _read
`s = recv(n - len(rbuf))`
/usr/local/lib/python2.7/dist-packages/eventlet/greenio/base.py:326 in recv
`timeout_exc=socket.timeout("timed out"))`
/usr/local/lib/python2.7/dist-packages/eventlet/greenio/base.py:201 in _trampoline
`mark_as_closed=self._mark_as_closed)`
/usr/local/lib/python2.7/dist-packages/eventlet/hubs/__init__.py:162 in trampoline
`return hub.switch()`
/usr/local/lib/python2.7/dist-packages/eventlet/hubs/hub.py:294 in switch
`return self.greenlet.switch()`
------ Green Thread ------
/usr/local/bin/designate-central:10 in <module>
`sys.exit(main())`
/opt/stack/designate/designate/cmd/central.py:37 in main
`service.wait()`
/opt/stack/designate/designate/service.py:356 in wait
`_launcher.wait()`
/opt/stack/designate/designate/openstack/common/service.py:187 in wait
`status, signo = self._wait_for_exit_or_signal(ready_callback)`
/opt/stack/designate/designate/openstack/common/service.py:170 in _wait_for_exit_or_signal
`super(ServiceLauncher, self).wait()`
/opt/stack/designate/designate/openstack/common/service.py:133 in wait
`self.services.wait()`
/opt/stack/designate/designate/openstack/common/service.py:473 in wait
`self.tg.wait()`
/opt/stack/designate/designate/openstack/common/threadgroup.py:145 in wait
`x.wait()`
/opt/stack/designate/designate/openstack/common/threadgroup.py:47 in wait
`return self.thread.wait()`
/usr/local/lib/python2.7/dist-packages/eventlet/greenthread.py:175 in wait
`return self._exit_event.wait()`
/usr/local/lib/python2.7/dist-packages/eventlet/event.py:121 in wait
`return hubs.get_hub().switch()`
/usr/local/lib/python2.7/dist-packages/eventlet/hubs/hub.py:294 in switch
`return self.greenlet.switch()`
------ Green Thread ------
No Traceback!
========================================================================
==== Processes ====
========================================================================
Process 15097 (under 7312) [ run by: stanzgy (1000), state: running ]
========================================================================
==== Configuration ====
========================================================================
backend:agent:bind9:
query-destination = 127.0.0.1
rndc-config-file = None
rndc-host = 127.0.0.1
rndc-key-file = None
rndc-port = 953
zone-file-path = /opt/stack/data/designate/zones
backend:bind9:
masters =
127.0.0.1:5354
rndc-config-file = None
rndc-host = 127.0.0.1
rndc-key-file = None
rndc-port = 953
server_ids =
backend:fake:
masters =
127.0.0.1:5354
server_ids =
backend:powerdns:
backend = sqlalchemy
connection = ***
connection_debug = 0
connection_trace = False
db_inc_retry_interval = True
db_max_retries = 20
db_max_retry_interval = 10
db_retry_interval = 1
idle_timeout = 3600
masters =
10.180.64.117:5354
max_overflow = None
max_pool_size = None
max_retries = 10
min_pool_size = 1
mysql_sql_mode = TRADITIONAL
pool_timeout = None
retry_interval = 10
server_ids =
f26e0b32-736f-4f0a-831b-039a415c481e
slave_connection = ***
sqlite_db = oslo.sqlite
sqlite_synchronous = True
use_db_reconnect = False
backend:powerdns:f26e0b32-736f-4f0a-831b-039a415c481e:
backend = None
connection = ***
connection_debug = None
connection_trace = None
db_inc_retry_interval = None
db_max_retries = None
db_max_retry_interval = None
db_retry_interval = None
host = 10.180.64.117
idle_timeout = None
masters = None
max_overflow = None
max_pool_size = None
max_retries = None
min_pool_size = None
mysql_sql_mode = None
pool_timeout = None
port = 53
retry_interval = None
slave_connection = ***
sqlite_db = None
sqlite_synchronous = None
tsig-key = None
use_db_reconnect = None
default:
allowed_remote_exmods =
backdoor_port = None
backlog = 4096
central-topic = central
config-dir = None
config-file =
/etc/designate/designate.conf
control_exchange = designate
debug = True
default-soa-expire = 86400
default-soa-minimum = 3600
default-soa-refresh-min = 3500
default-soa-refresh-max = 3600
default-soa-retry = 600
default-ttl = 3600
default_log_levels =
amqp=WARN
amqplib=WARN
boto=WARN
eventlet.wsgi.server=WARN
keystone=INFO
keystonemiddleware.auth_token=INFO
oslo.messaging=WARN
sqlalchemy=WARN
stevedore=WARN
suds=INFO
fatal_deprecations = False
host = cns-dev2
instance_format = [instance: %(uuid)s]
instance_uuid_format = [instance: %(uuid)s]
log-config-append = None
log-date-format = %Y-%m-%d %H:%M:%S
log-dir = /opt/stack/logs/designate
log-file = None
log-format = None
logging_context_format_string = %(asctime)s.%(msecs)03d %(color)s%(levelname)s %(name)s [[01;36m%(request_id)s [00;36m%(user)s %(tenant)s%(color)s] [01;35m%(instance)s%(color)s%(message)s[00m
logging_debug_format_suffix = [00;33mfrom (pid=%(process)d) %(funcName)s %(pathname)s:%(lineno)d[00m
logging_default_format_string = %(asctime)s.%(msecs)03d %(color)s%(levelname)s %(name)s [[00;36m-%(color)s] [01;35m%(instance)s%(color)s%(message)s[00m
logging_exception_prefix = %(color)s%(asctime)s.%(msecs)03d TRACE %(name)s [01;35m%(instance)s[00m
mdns-topic = mdns
network_api = neutron
notification_driver =
notification_topics =
notifications
policy_default_rule = default
policy_dirs =
policy.d
policy_file = /etc/designate/policy.json
pool-manager-topic = pool_manager
publish_errors = False
pybasedir = /opt/stack/designate
quota-domain-records = 500
quota-domain-recordsets = 500
quota-domains = 10
quota-driver = storage
quota-recordset-records = 20
root-helper = sudo designate-rootwrap /etc/designate/rootwrap.conf
rpc_backend = rabbit
rpc_thread_pool_size = 64
state-path = /opt/stack/data/designate
syslog-log-facility = LOG_USER
tcp_keepidle = 600
transport_url = None
use-syslog = False
use-syslog-rfc-format = False
use_stderr = True
verbose = True
network_api:neutron:
admin_password = ***
admin_tenant_name = None
admin_username = None
auth_strategy = keystone
auth_url = None
ca_certificates_file = None
endpoint_type = publicURL
endpoints = None
insecure = False
timeout = 30
oslo_concurrency:
disable_process_locking = False
lock_path = None
oslo_messaging_rabbit:
amqp_auto_delete = False
amqp_durable_queues = False
fake_rabbit = False
kombu_reconnect_delay = 1.0
kombu_ssl_ca_certs =
kombu_ssl_certfile =
kombu_ssl_keyfile =
kombu_ssl_version =
rabbit_ha_queues = False
rabbit_host = localhost
rabbit_hosts =
127.0.0.1
rabbit_login_method = AMQPLAIN
rabbit_max_retries = 0
rabbit_password = ***
rabbit_port = 5672
rabbit_retry_backoff = 2
rabbit_retry_interval = 1
rabbit_use_ssl = False
rabbit_userid = stackrabbit
rabbit_virtual_host = /
rpc_conn_pool_size = 30
proxy:
http_proxy = None
https_proxy = None
no_proxy =
service:central:
default_pool_id = 794ccc2c-d751-44fe-b57f-8894c9f5c842
enabled-notification-handlers =
managed_resource_email = hostmaster@example.com
managed_resource_tenant_id = None
max_domain_name_len = 255
max_recordset_name_len = 255
min_ttl = None
storage-driver = sqlalchemy
workers = None
service:pool_manager:
backends =
powerdns
cache-driver = sqlalchemy
enable-recovery-timer = True
enable-sync-timer = True
periodic-recovery-interval = 120
periodic-sync-interval = 300
periodic-sync-seconds = None
poll-delay = 1
poll-max-retries = 3
poll-retry-interval = 2
poll-timeout = 30
pool-id = 794ccc2c-d751-44fe-b57f-8894c9f5c842
threshold-percentage = 100
workers = None
ssl:
ca_file = None
cert_file = None
key_file = None
storage:sqlalchemy:
backend = sqlalchemy
connection = ***
connection_debug = 0
connection_trace = False
db_inc_retry_interval = True
db_max_retries = 20
db_max_retry_interval = 10
db_retry_interval = 1
idle_timeout = 3600
max_overflow = None
max_pool_size = None
max_retries = 10
min_pool_size = 1
mysql_sql_mode = TRADITIONAL
pool_timeout = None
retry_interval = 10
slave_connection = ***
sqlite_db = oslo.sqlite
sqlite_synchronous = True
use_db_reconnect = False