jaeger: introduce service name prefix

Closes-bug: #2003092
Signed-off-by: Sahid Orentino Ferdjaoui <sahid.ferdjaoui@industrialdiscipline.com>
Change-Id: I743fdc1203af6735d5772728e1b5c2ca16d41d9e
This commit is contained in:
Sahid Orentino Ferdjaoui 2023-01-30 11:53:18 +01:00
parent 9f50374dde
commit b7468756bc
4 changed files with 46 additions and 2 deletions

View File

@ -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"

View File

@ -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)]

View File

@ -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"))

View File

@ -0,0 +1,5 @@
---
features:
- |
Introduces service name prefix for Jaeger driver. Please consider
using option `profiler_jaeger/service_name_prefix` to set it.