Skip to content

Commit 3229f4b

Browse files
authored
fix(opentelemetry): preserve span labels in traces (#3609)
A previous change enabling OpenTelmetry forgot to include attributes from the span itself, in addition to the request level spans as we do in the old OpenCensus exporter. This adds those attributes back in. Signed-off-by: Scott Fleener <[email protected]>
1 parent d3cf6f3 commit 3229f4b

File tree

1 file changed

+15
-8
lines changed
  • linkerd/opentelemetry/src

1 file changed

+15
-8
lines changed

linkerd/opentelemetry/src/lib.rs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,20 @@ use linkerd_error::Error;
99
use linkerd_trace_context as trace_context;
1010
use metrics::Registry;
1111
pub use opentelemetry as otel;
12-
use opentelemetry::trace::{
13-
SpanContext, SpanId, SpanKind, Status, TraceFlags, TraceId, TraceState,
12+
use opentelemetry::{
13+
trace::{SpanContext, SpanId, SpanKind, Status, TraceFlags, TraceId, TraceState},
14+
KeyValue,
1415
};
15-
use opentelemetry::KeyValue;
1616
pub use opentelemetry_proto as proto;
17-
use opentelemetry_proto::proto::collector::trace::v1::trace_service_client::TraceServiceClient;
18-
use opentelemetry_proto::proto::collector::trace::v1::ExportTraceServiceRequest;
19-
use opentelemetry_proto::proto::trace::v1::ResourceSpans;
20-
use opentelemetry_proto::transform::common::ResourceAttributesWithSchema;
21-
use opentelemetry_proto::transform::trace::group_spans_by_resource_and_scope;
17+
use opentelemetry_proto::{
18+
proto::{
19+
collector::trace::v1::{
20+
trace_service_client::TraceServiceClient, ExportTraceServiceRequest,
21+
},
22+
trace::v1::ResourceSpans,
23+
},
24+
transform::{common::ResourceAttributesWithSchema, trace::group_spans_by_resource_and_scope},
25+
};
2226
pub use opentelemetry_sdk as sdk;
2327
pub use opentelemetry_sdk::export::trace::SpanData;
2428
use opentelemetry_sdk::trace::SpanLinks;
@@ -235,6 +239,9 @@ fn convert_span(span: ExportSpan) -> Result<SpanData, Error> {
235239
for (k, v) in labels.iter() {
236240
attributes.push(KeyValue::new(k.clone(), v.clone()));
237241
}
242+
for (k, v) in span.labels.iter() {
243+
attributes.push(KeyValue::new(*k, v.clone()));
244+
}
238245
let is_remote = kind != trace_context::export::SpanKind::Client;
239246
Ok(SpanData {
240247
parent_span_id: SpanId::from_bytes(span.parent_id.into_bytes()?),

0 commit comments

Comments
 (0)