You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Spans emitted by Datadog APM agents and converted by the OTel Collector Datadog Receiver don't comply with OTel Semantic conventions, creating challenges to visualize them.
Misalignment applying to all span types
A resource attribute deployment.resource.name should be defined instead of the span attribute deployment.environment: Str(production)
A resource attribute process.pid should be defined instead of the attribute process.id
Example Datadog DB client span produced by a Spring Boot app (code and converted by the OTel Col Datadog receiver
ResourceSpans #1
Resource SchemaURL: https://opentelemetry.io/schemas/1.16.0
Resource attributes:
-> service.version: Str(1.1)
-> telemetry.sdk.version: Str(Datadog-1.44.1~13a9a2d011)
-> telemetry.sdk.name: Str(Datadog)
-> telemetry.sdk.language: Str(java)
-> process.runtime.version: Str(17.0.13)
-> service.name: Str(postgresql)
-> host.name: Str(localhost)
-> os.type: Str(darwin)
ScopeSpans #0
ScopeSpans SchemaURL:
InstrumentationScope Datadog 1.44.1~13a9a2d011
Span #0
Trace ID : 0000000000000000edfe0db49d5cf0a0
Parent ID : 6a0035efa46106ae
ID : 2dc4a71b6d1cac05
Name : postgresql.query
Kind : Client
Start time : 2024-12-23 10:28:03.723354292 +0000 UTC
End time : 2024-12-23 10:28:03.775606 +0000 UTC
Status code : Ok
Status message :
Attributes:
-> dd.span.Resource: Str(select pg_sleep(?))
-> datadog.span.id: Str(3297944563378596869)
-> datadog.trace.id: Str(17149159500458815648)
-> db.type: Str(postgresql)
-> db.user: Str(my_shopping_cart)
-> deployment.environment: Str(production)
-> component: Str(java-jdbc-statement)
-> span.kind: Str(client)
-> _dd.base_service: Str(shipping)
-> db.operation: Str(select)
-> peer.hostname: Str(postgresql.local)
-> _dd.p.tid: Str(2b129ecc5fb2e048)
-> thread.name: Str(http-nio-8088-exec-2)
-> db.instance: Str(my_shopping_cart)
-> db.pool.name: Str(HikariPool-1)
-> _dd.measured: Double(1)
-> _dd.top_level: Double(1)
-> thread.id: Double(38)
Span #1
Trace ID : 0000000000000000edfe0db49d5cf0a0
Parent ID : 6a0035efa46106ae
ID : 504c8390c5d6dc9b
Name : postgresql.query
Kind : Client
Start time : 2024-12-23 10:28:03.72148425 +0000 UTC
End time : 2024-12-23 10:28:03.723227917 +0000 UTC
Status code : Ok
Status message :
Attributes:
-> dd.span.Resource: Str(postgresql.query)
-> sampling.priority: Str(1.000000)
-> datadog.span.id: Str(5786144279081966747)
-> datadog.trace.id: Str(17149159500458815648)
-> span.kind: Str(client)
-> _dd.base_service: Str(shipping)
-> deployment.environment: Str(production)
-> component: Str(java-jdbc-statement)
-> db.type: Str(postgresql)
-> db.instance: Str(my_shopping_cart)
-> db.user: Str(my_shopping_cart)
-> peer.hostname: Str(postgresql.local)
-> db.pool.name: Str(HikariPool-1)
-> _dd.p.tid: Str(2b129ecc5fb2e048)
-> thread.name: Str(http-nio-8088-exec-2)
-> _sampling_priority_v1: Double(1)
-> _dd.measured: Double(1)
-> _dd.top_level: Double(1)
-> thread.id: Double(38)
The resource attribute service.name should be set to the value of the span attribute _dd.base_service
Rename the following span attributes
db.type -> db.system
db.operation -> db.operation.name
db.instance -> db.name
The span name should be set to ${db.operation.name} ${}
Steps to Reproduce
Instrument a Spring Boot App similar to this example with the Datadog Java Agent v1.44.1, send the traces to and OTel Col Datadog Receiver using the DD_TRACE_AGENT_URL="http://localhost:8126", note that setting DD_REMOTE_CONFIGURATION_ENABLED=false seems to prevent some problems of traces not being exported:
Component(s)
receiver/datadog
What happened?
Description
Spans emitted by Datadog APM agents and converted by the OTel Collector Datadog Receiver don't comply with OTel Semantic conventions, creating challenges to visualize them.
Misalignment applying to all span types
deployment.resource.name
should be defined instead of the span attributedeployment.environment: Str(production)
process.pid
should be defined instead of the attributeprocess.id
Misalignment applying to HTTP server span
Specs: https://opentelemetry.io/docs/specs/semconv/http/http-spans/
Example Datadog HTTP Server span produced by a Spring Boot app (code) and converted by the OTel Col Datadog receiver
http.request.method
andhttp.response.status_code
instead ofhttp.method
andhttp.status_code
${http.request.method} ${http.route}
, the attributedd.span.Resource
is right for this span typeset (name, attributes["dd.span.Resource"]) where name == "servlet.request"
Misalignment applying to internal Spring Framework spans(span name
spring.handler
)This probably applies to other internal spans.
Example Datadog internal span produced by a Spring Boot app (code) and converted by the OTel Col Datadog receiver
kind = SpanKind.SPAN_KIND_INTERNAL
set (kind, SPAN_KIND_INTERNAL) where kind == SPAN_KIND_SERVER and name == "spring.handler"
dd.span.Resource
attributeMisalignment applying to Database client spans
Specs: https://opentelemetry.io/docs/specs/semconv/database/database-spans/
Example Datadog DB client span produced by a Spring Boot app (code and converted by the OTel Col Datadog receiver
service.name
should be set to the value of the span attribute_dd.base_service
db.type
->db.system
db.operation
->db.operation.name
db.instance
->db.name
${db.operation.name} ${}
Steps to Reproduce
Instrument a Spring Boot App similar to this example with the Datadog Java Agent v1.44.1, send the traces to and OTel Col Datadog Receiver using the
DD_TRACE_AGENT_URL="http://localhost:8126"
, note that settingDD_REMOTE_CONFIGURATION_ENABLED=false
seems to prevent some problems of traces not being exported:Setup an OTel Collector v0.116.0 with a Datadog Receiver and exporting traces to the console for debug
Expected Result
OTel-compliant spans reported in the Otel Col stdout
Actual Result
The non OTel-compliant spans described above
Collector version
v0.116.0
Environment information
Environment
OS: (e.g., "Ubuntu 20.04")
Compiler(if manually compiled): (e.g., "go 14.2")
OpenTelemetry Collector configuration
Log output
Additional context
No response
The text was updated successfully, but these errors were encountered: