diff --git a/jaeger_client/tracer.py b/jaeger_client/tracer.py index 0a42d223..845d4407 100644 --- a/jaeger_client/tracer.py +++ b/jaeger_client/tracer.py @@ -53,7 +53,6 @@ def __init__( self.service_name = service_name self.reporter = reporter self.sampler = sampler - self.ip_address = ipv4_to_int(local_ip()) self.metrics_factory = metrics_factory or LegacyMetricsFactory(metrics or Metrics()) self.metrics = TracerMetrics(self.metrics_factory) self.random = random.Random(time.time() * (os.getpid() or 1)) @@ -80,11 +79,13 @@ def __init__( self.codecs.update(extra_codecs) self.tags = { constants.JAEGER_VERSION_TAG_KEY: constants.JAEGER_CLIENT_VERSION, - constants.JAEGER_IP_TAG_KEY: self.ip_address, } if tags: self.tags.update(tags) + if self.tags.get(constants.JAEGER_IP_TAG_KEY) is None: + self.tags[constants.JAEGER_IP_TAG_KEY] = ipv4_to_int(local_ip()) + if self.tags.get(constants.JAEGER_HOSTNAME_TAG_KEY) is None: try: hostname = socket.gethostname() diff --git a/tests/test_tracer.py b/tests/test_tracer.py index 33da6eba..f9bd29ed 100644 --- a/tests/test_tracer.py +++ b/tests/test_tracer.py @@ -262,6 +262,7 @@ def test_tracer_override_codecs(): assert tracer.codecs[Format.BINARY] == "overridden_binary_codec",\ "Binary format codec not overridden" + def test_tracer_hostname_tag(): reporter = mock.MagicMock() sampler = ConstSampler(True) @@ -274,3 +275,17 @@ def test_tracer_hostname_tag(): assert tracer.tags[c.JAEGER_HOSTNAME_TAG_KEY] == \ 'jaeger-client-app.local' + + +def test_tracer_ip_tag(): + reporter = mock.MagicMock() + sampler = ConstSampler(True) + tracer = Tracer( + service_name='x', + tags={c.JAEGER_IP_TAG_KEY: '192.0.2.3'}, + reporter=reporter, + sampler=sampler, + ) + + assert tracer.tags[c.JAEGER_IP_TAG_KEY] == \ + '192.0.2.3'