From 91d7c35f1c11b57c4b3d625c4810dbfa1437191d Mon Sep 17 00:00:00 2001 From: Sahid Orentino Ferdjaoui Date: Thu, 9 Feb 2023 09:56:42 +0100 Subject: jaeger: introduce process tags' option for tracer Closes-bug: 2006611 Signed-off-by: Sahid Orentino Ferdjaoui Change-Id: I938b52d7785d421015b888c9d70a5b0bf032772f --- osprofiler/drivers/jaeger.py | 3 ++- osprofiler/opts.py | 10 +++++++++- osprofiler/tests/unit/drivers/test_jaeger.py | 13 ++++++++++++- .../notes/jaeger-add-process-tags-79d5f5d7a0b049ef.yaml | 5 +++++ 4 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 releasenotes/notes/jaeger-add-process-tags-79d5f5d7a0b049ef.yaml diff --git a/osprofiler/drivers/jaeger.py b/osprofiler/drivers/jaeger.py index 990818c..67e75c3 100644 --- a/osprofiler/drivers/jaeger.py +++ b/osprofiler/drivers/jaeger.py @@ -49,7 +49,8 @@ class Jaeger(base.Driver): "local_agent": { "reporting_host": parsed_url.hostname, "reporting_port": parsed_url.port, - } + }, + "tags": conf.profiler_jaeger.process_tags } # Initialize tracer for each profiler diff --git a/osprofiler/opts.py b/osprofiler/opts.py index 13a8022..58d5806 100644 --- a/osprofiler/opts.py +++ b/osprofiler/opts.py @@ -180,8 +180,16 @@ _service_name_prefix = cfg.StrOpt( Set service name prefix to Jaeger service name. """) +_process_tags = cfg.DictOpt( + "process_tags", + default={}, + help=""" +Set process tracer tags. +""") + _JAEGER_OPTS = [ - _service_name_prefix + _service_name_prefix, + _process_tags ] cfg.CONF.register_opts(_JAEGER_OPTS, group=_jaegerprofiler_opt_group) diff --git a/osprofiler/tests/unit/drivers/test_jaeger.py b/osprofiler/tests/unit/drivers/test_jaeger.py index 69cccd9..128d8aa 100644 --- a/osprofiler/tests/unit/drivers/test_jaeger.py +++ b/osprofiler/tests/unit/drivers/test_jaeger.py @@ -30,6 +30,8 @@ class JaegerTestCase(test.TestCase): super(JaegerTestCase, self).setUp() opts.set_defaults(cfg.CONF) + cfg.CONF.set_default( + "process_tags", "k1:v1,k2:v2", "profiler_jaeger") self.payload_start = { "name": "api-start", @@ -60,7 +62,8 @@ class JaegerTestCase(test.TestCase): # see: jaeger_client/config.py#L374 Config._initialized = False self.driver = jaeger.Jaeger("jaeger://127.0.0.1:6831", - project="nova", service="api") + project="nova", service="api", + conf=cfg.CONF) @mock.patch("osprofiler._utils.shorten_id") def test_notify_start(self, mock_shorten_id): @@ -97,3 +100,11 @@ class JaegerTestCase(test.TestCase): "service_name_prefix", "prx1", "profiler_jaeger") self.assertEqual("prx1-pr1-svc1", self.driver._get_service_name( cfg.CONF, "pr1", "svc1")) + + def test_process_tags(self): + tags = self.driver.tracer.tags + # Let's remove variable tags generated by Jaeger client + del tags['hostname'] + del tags['jaeger.version'] + del tags['ip'] + self.assertEqual({'k1': 'v1', 'k2': 'v2'}, tags) diff --git a/releasenotes/notes/jaeger-add-process-tags-79d5f5d7a0b049ef.yaml b/releasenotes/notes/jaeger-add-process-tags-79d5f5d7a0b049ef.yaml new file mode 100644 index 0000000..383f7b5 --- /dev/null +++ b/releasenotes/notes/jaeger-add-process-tags-79d5f5d7a0b049ef.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Add ability to set tracer process tags to Jaeger via a + configuration option introduced, `profiler_jaeger/process_tags`. -- cgit v1.2.1