Jaeger exporter report instrumentation info (#1098)

This commit is contained in:
dengliming 2020-09-15 14:04:09 +08:00 committed by alrex
parent 6dce5c3157
commit 9e9905fa30
3 changed files with 47 additions and 2 deletions

View File

@ -1,9 +1,10 @@
# Changelog # Changelog
## Unreleased ## Unreleased
- Drop support for Python 3.4 - Drop support for Python 3.4
([#1099](https://github.com/open-telemetry/opentelemetry-python/pull/1099)) ([#1099](https://github.com/open-telemetry/opentelemetry-python/pull/1099))
- Report instrumentation info
([#1098](https://github.com/open-telemetry/opentelemetry-python/pull/1098))
## Version 0.12b0 ## Version 0.12b0

View File

@ -214,6 +214,20 @@ def _translate_to_jaeger(spans: Span):
] ]
) )
if span.instrumentation_info is not None:
tags.extend(
[
_get_string_tag(
"otel.instrumentation_library.name",
span.instrumentation_info.name,
),
_get_string_tag(
"otel.instrumentation_library.version",
span.instrumentation_info.version,
),
]
)
# Ensure that if Status.Code is not OK, that we set the "error" tag on the Jaeger span. # Ensure that if Status.Code is not OK, that we set the "error" tag on the Jaeger span.
if status.canonical_code is not StatusCanonicalCode.OK: if status.canonical_code is not StatusCanonicalCode.OK:
tags.append(_get_bool_tag("error", True)) tags.append(_get_bool_tag("error", True))

View File

@ -23,6 +23,7 @@ from opentelemetry import trace as trace_api
from opentelemetry.exporter.jaeger.gen.jaeger import ttypes as jaeger from opentelemetry.exporter.jaeger.gen.jaeger import ttypes as jaeger
from opentelemetry.sdk import trace from opentelemetry.sdk import trace
from opentelemetry.sdk.trace import Resource from opentelemetry.sdk.trace import Resource
from opentelemetry.sdk.util.instrumentation import InstrumentationInfo
from opentelemetry.trace.status import Status, StatusCanonicalCode from opentelemetry.trace.status import Status, StatusCanonicalCode
@ -221,6 +222,9 @@ class TestJaegerSpanExporter(unittest.TestCase):
otel_spans[2].start(start_time=start_times[2]) otel_spans[2].start(start_time=start_times[2])
otel_spans[2].resource = Resource({}) otel_spans[2].resource = Resource({})
otel_spans[2].end(end_time=end_times[2]) otel_spans[2].end(end_time=end_times[2])
otel_spans[2].instrumentation_info = InstrumentationInfo(
name="name", version="version"
)
# pylint: disable=protected-access # pylint: disable=protected-access
spans = jaeger_exporter._translate_to_jaeger(otel_spans) spans = jaeger_exporter._translate_to_jaeger(otel_spans)
@ -334,7 +338,33 @@ class TestJaegerSpanExporter(unittest.TestCase):
startTime=start_times[2] // 10 ** 3, startTime=start_times[2] // 10 ** 3,
duration=durations[2] // 10 ** 3, duration=durations[2] // 10 ** 3,
flags=0, flags=0,
tags=default_tags, tags=[
jaeger.Tag(
key="status.code",
vType=jaeger.TagType.LONG,
vLong=StatusCanonicalCode.OK.value,
),
jaeger.Tag(
key="status.message",
vType=jaeger.TagType.STRING,
vStr=None,
),
jaeger.Tag(
key="span.kind",
vType=jaeger.TagType.STRING,
vStr=trace_api.SpanKind.INTERNAL.name,
),
jaeger.Tag(
key="otel.instrumentation_library.name",
vType=jaeger.TagType.STRING,
vStr="name",
),
jaeger.Tag(
key="otel.instrumentation_library.version",
vType=jaeger.TagType.STRING,
vStr="version",
),
],
), ),
] ]