diff --git a/exporter/opentelemetry-exporter-zipkin/CHANGELOG.md b/exporter/opentelemetry-exporter-zipkin/CHANGELOG.md index b1066d081a..b285e4403c 100644 --- a/exporter/opentelemetry-exporter-zipkin/CHANGELOG.md +++ b/exporter/opentelemetry-exporter-zipkin/CHANGELOG.md @@ -7,6 +7,8 @@ `port`, `protocol`, `endpoint`. This brings this implementation inline with other implementations. ([#1064](https://github.com/open-telemetry/opentelemetry-python/pull/1064)) +- Zipkin exporter report instrumentation info. + ([#1097](https://github.com/open-telemetry/opentelemetry-python/pull/1097)) ## Version 0.12b0 diff --git a/exporter/opentelemetry-exporter-zipkin/src/opentelemetry/exporter/zipkin/__init__.py b/exporter/opentelemetry-exporter-zipkin/src/opentelemetry/exporter/zipkin/__init__.py index 6b3ce2df9e..8c3c91a6d3 100644 --- a/exporter/opentelemetry-exporter-zipkin/src/opentelemetry/exporter/zipkin/__init__.py +++ b/exporter/opentelemetry-exporter-zipkin/src/opentelemetry/exporter/zipkin/__init__.py @@ -175,6 +175,14 @@ def _translate_to_zipkin(self, spans: Sequence[Span]): "annotations": _extract_annotations_from_events(span.events), } + if span.instrumentation_info is not None: + zipkin_span["tags"][ + "otel.instrumentation_library.name" + ] = span.instrumentation_info.name + zipkin_span["tags"][ + "otel.instrumentation_library.version" + ] = span.instrumentation_info.version + if context.trace_flags.sampled: zipkin_span["debug"] = True diff --git a/exporter/opentelemetry-exporter-zipkin/tests/test_zipkin_exporter.py b/exporter/opentelemetry-exporter-zipkin/tests/test_zipkin_exporter.py index 96586d91e0..309d966805 100644 --- a/exporter/opentelemetry-exporter-zipkin/tests/test_zipkin_exporter.py +++ b/exporter/opentelemetry-exporter-zipkin/tests/test_zipkin_exporter.py @@ -22,6 +22,7 @@ from opentelemetry.sdk import trace from opentelemetry.sdk.trace import Resource from opentelemetry.sdk.trace.export import SpanExportResult +from opentelemetry.sdk.util.instrumentation import InstrumentationInfo from opentelemetry.trace import TraceFlags @@ -191,6 +192,9 @@ def test_export(self): otel_spans[3].start(start_time=start_times[3]) otel_spans[3].resource = Resource({}) otel_spans[3].end(end_time=end_times[3]) + otel_spans[3].instrumentation_info = InstrumentationInfo( + name="name", version="version" + ) service_name = "test-service" local_endpoint = {"serviceName": service_name, "port": 9411} @@ -252,7 +256,10 @@ def test_export(self): "duration": durations[3] // 10 ** 3, "localEndpoint": local_endpoint, "kind": None, - "tags": {}, + "tags": { + "otel.instrumentation_library.name": "name", + "otel.instrumentation_library.version": "version", + }, "annotations": None, }, ]