585378840a
* Pick GMR implementation codes from oslo-incubator * Add SIGUSR1 signal handlers in each Designate service * Add GMR docs Change-Id: I76c82f5e128ddcd294be43407ef5c254747a874e Implements: blueprint guru-meditation-reports
467 lines
16 KiB
ReStructuredText
467 lines
16 KiB
ReStructuredText
.. _gmr:
|
||
|
||
=========================
|
||
Guru Meditation Reports
|
||
=========================
|
||
|
||
A Guru Meditation Reports(GMR) is gerenated by the Designate services when
|
||
service processes receiving SIGUSR1 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 USR1 signal to any Designate processes.
|
||
|
||
For example, suppose ``designate-central`` has pid ``15097``, ``kill -USR1
|
||
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.
|
||
|
||
Reference
|
||
=========
|
||
|
||
For more information about GMR, see `GMR wiki`_.
|
||
|
||
.. _GMR wiki: https://wiki.openstack.org/wiki/GuruMeditationReport
|
||
|
||
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 = 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
|