From b7468756bcfdf3fe74e7cacb0562a7f969472250 Mon Sep 17 00:00:00 2001 From: Sahid Orentino Ferdjaoui Date: Mon, 30 Jan 2023 11:53:18 +0100 Subject: jaeger: introduce service name prefix Closes-bug: #2003092 Signed-off-by: Sahid Orentino Ferdjaoui Change-Id: I743fdc1203af6735d5772728e1b5c2ca16d41d9e --- osprofiler/drivers/jaeger.py | 8 +++++++- osprofiler/opts.py | 19 ++++++++++++++++++- osprofiler/tests/unit/drivers/test_jaeger.py | 16 ++++++++++++++++ .../jaeger-service-name-prefix-72878a930f700878.yaml | 5 +++++ 4 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 releasenotes/notes/jaeger-service-name-prefix-72878a930f700878.yaml diff --git a/osprofiler/drivers/jaeger.py b/osprofiler/drivers/jaeger.py index 3f263b2..990818c 100644 --- a/osprofiler/drivers/jaeger.py +++ b/osprofiler/drivers/jaeger.py @@ -53,12 +53,18 @@ class Jaeger(base.Driver): } # Initialize tracer for each profiler - service_name = "{}-{}".format(project, service) + service_name = self._get_service_name(conf, project, service) config = jaeger_client.Config(cfg, service_name=service_name) self.tracer = config.initialize_tracer() self.spans = collections.deque() + def _get_service_name(self, conf, project, service): + prefix = conf.profiler_jaeger.service_name_prefix + if prefix: + return "{}-{}-{}".format(prefix, project, service) + return "{}-{}".format(project, service) + @classmethod def get_name(cls): return "jaeger" diff --git a/osprofiler/opts.py b/osprofiler/opts.py index 612a6c8..13a8022 100644 --- a/osprofiler/opts.py +++ b/osprofiler/opts.py @@ -170,6 +170,22 @@ _PROFILER_OPTS = [ cfg.CONF.register_opts(_PROFILER_OPTS, group=_profiler_opt_group) +_jaegerprofiler_opt_group = cfg.OptGroup( + "profiler_jaeger", + title="Jaeger's profiler driver related options") + +_service_name_prefix = cfg.StrOpt( + "service_name_prefix", + help=""" +Set service name prefix to Jaeger service name. +""") + +_JAEGER_OPTS = [ + _service_name_prefix +] + +cfg.CONF.register_opts(_JAEGER_OPTS, group=_jaegerprofiler_opt_group) + def set_defaults(conf, enabled=None, trace_sqlalchemy=None, hmac_keys=None, connection_string=None, es_doc_type=None, @@ -239,4 +255,5 @@ def disable_web_trace(conf=None): def list_opts(): - return [(_profiler_opt_group.name, _PROFILER_OPTS)] + return [(_profiler_opt_group.name, _PROFILER_OPTS), + (_jaegerprofiler_opt_group, _JAEGER_OPTS)] diff --git a/osprofiler/tests/unit/drivers/test_jaeger.py b/osprofiler/tests/unit/drivers/test_jaeger.py index 63790b1..69cccd9 100644 --- a/osprofiler/tests/unit/drivers/test_jaeger.py +++ b/osprofiler/tests/unit/drivers/test_jaeger.py @@ -15,7 +15,10 @@ from unittest import mock +from oslo_config import cfg + from osprofiler.drivers import jaeger +from osprofiler import opts from osprofiler.tests import test from jaeger_client import Config @@ -25,6 +28,9 @@ class JaegerTestCase(test.TestCase): def setUp(self): super(JaegerTestCase, self).setUp() + + opts.set_defaults(cfg.CONF) + self.payload_start = { "name": "api-start", "base_id": "4e3e0ec6-2938-40b1-8504-09eb1d4b0dee", @@ -81,3 +87,13 @@ class JaegerTestCase(test.TestCase): mock_time.reset_mock() span.finish.assert_called_once_with(finish_time=fake_time) + + def test_service_name_default(self): + self.assertEqual("pr1-svc1", self.driver._get_service_name( + cfg.CONF, "pr1", "svc1")) + + def test_service_name_prefix(self): + cfg.CONF.set_default( + "service_name_prefix", "prx1", "profiler_jaeger") + self.assertEqual("prx1-pr1-svc1", self.driver._get_service_name( + cfg.CONF, "pr1", "svc1")) diff --git a/releasenotes/notes/jaeger-service-name-prefix-72878a930f700878.yaml b/releasenotes/notes/jaeger-service-name-prefix-72878a930f700878.yaml new file mode 100644 index 0000000..d71abee --- /dev/null +++ b/releasenotes/notes/jaeger-service-name-prefix-72878a930f700878.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Introduces service name prefix for Jaeger driver. Please consider + using option `profiler_jaeger/service_name_prefix` to set it. -- cgit v1.2.1