Skip to content

Commit d067d37

Browse files
committed
[receiver/datadog] Use _dd.base_service when available
Without this, internal spans such as postgresql queries have a service.name set to postgresql.
1 parent f78caac commit d067d37

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

receiver/datadogreceiver/internal/translator/traces_translator.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,11 @@ func ToTraces(payload *pb.TracerPayload, req *http.Request) ptrace.Traces {
103103

104104
for _, trace := range traces {
105105
for _, span := range trace {
106+
// Restore base service name as the service name.
107+
// Without this, internal spans such as postgresql queries have a service.name set to postgresql
108+
if val, ok := span.Meta["_dd.base_service"]; ok {
109+
span.Service = val
110+
}
106111
slice, exist := groupByService[span.Service]
107112
if !exist {
108113
slice = ptrace.NewSpanSlice()

receiver/datadogreceiver/internal/translator/traces_translator_test.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,3 +221,39 @@ func TestUpsertHeadersAttributes(t *testing.T) {
221221
assert.True(t, ok)
222222
assert.Equal(t, "dotnet", val.Str())
223223
}
224+
225+
func TestToTracesServiceName(t *testing.T) {
226+
expectedServiceName := "my-service"
227+
spans := []pb.Span{
228+
{
229+
TraceID: 2133000431340558749,
230+
SpanID: 2133000431340558749,
231+
ParentID: 2133000431340558749,
232+
Name: "postgresql",
233+
Meta: map[string]string{
234+
"_dd.base_service": expectedServiceName,
235+
},
236+
},
237+
{
238+
TraceID: 2133000431340558749,
239+
SpanID: 2133000431340558750,
240+
ParentID: 2133000431340558750,
241+
Name: "postgresql",
242+
Meta: map[string]string{
243+
"_dd.base_service": expectedServiceName,
244+
},
245+
},
246+
}
247+
payload := &pb.TracerPayload{
248+
Chunks: traceChunksFromSpans(spans),
249+
}
250+
req := &http.Request{
251+
Header: http.Header{},
252+
}
253+
254+
traces := ToTraces(payload, req)
255+
for _, rs := range traces.ResourceSpans().All() {
256+
actualServiceName, _ := rs.Resource().Attributes().Get(semconv.AttributeServiceName)
257+
assert.Equal(t, expectedServiceName, actualServiceName.AsString())
258+
}
259+
}

0 commit comments

Comments
 (0)