From fd874652e3558cc2f9a3512f0c7b4e2f4170ec22 Mon Sep 17 00:00:00 2001 From: Josh Gachnang Date: Mon, 8 Sep 2014 20:26:51 -0700 Subject: Add metrics support to IPA This utilizes the new metrics support in ironic-lib to allow the agent to report timing metrics for agent API methods as configured in ironic-lib. Additionally, this adds developer docs on how to use metrics in IPA, including some caveats specific to ironic-lib.metrics use in IPA. Co-Authored-By: Jay Faulkner Co-Authored-By: Alex Weeks Change-Id: Ic08d4ff78b6fb614b474b956a32eac352a14262a Partial-bug: #1526219 --- ironic_python_agent/agent.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'ironic_python_agent/agent.py') diff --git a/ironic_python_agent/agent.py b/ironic_python_agent/agent.py index 0a1799aa..8c7d3347 100644 --- a/ironic_python_agent/agent.py +++ b/ironic_python_agent/agent.py @@ -20,6 +20,7 @@ import threading import time from oslo_concurrency import processutils +from oslo_config import cfg from oslo_log import log import pkg_resources from six.moves.urllib import parse as urlparse @@ -35,7 +36,6 @@ from ironic_python_agent import inspector from ironic_python_agent import ironic_api_client from ironic_python_agent import utils - LOG = log.getLogger(__name__) # Time(in seconds) to wait for any of the interfaces to be up @@ -45,6 +45,9 @@ NETWORK_WAIT_TIMEOUT = 60 # Time(in seconds) to wait before reattempt NETWORK_WAIT_RETRY = 5 +cfg.CONF.import_group('metrics', 'ironic_lib.metrics_utils') +cfg.CONF.import_group('metrics_statsd', 'ironic_lib.metrics_statsd') + def _time(): """Wraps time.time() for simpler testing.""" @@ -340,6 +343,15 @@ class IronicPythonAgent(base.ExecuteCommandMixin): hardware.cache_node(self.node) self.heartbeat_timeout = content['heartbeat_timeout'] + # Update config with values from Ironic + config = content.get('config', {}) + if config.get('metrics'): + for opt, val in config.items(): + setattr(cfg.CONF.metrics, opt, val) + if config.get('metrics_statsd'): + for opt, val in config.items(): + setattr(cfg.CONF.metrics_statsd, opt, val) + wsgi = simple_server.make_server( self.listen_address[0], self.listen_address[1], -- cgit v1.2.1