-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Datadog Receiver spans don't follow OTel specs #36924
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Pinging code owners:
See Adding Labels via Comments if you do not have permissions to add labels yourself. |
This issue has been inactive for 60 days. It will be closed in 60 days if there is no activity. To ping code owners by adding a component label, see Adding Labels via Comments, or if you are unsure of which component this issue relates to, please ping Pinging code owners:
See Adding Labels via Comments if you do not have permissions to add labels yourself. |
@boostchicken @gouthamve @MovieStoreGuy please review as codeowners. @cyrille-leclerc would you like to help provide enhancements to change the behavior of the receiver? |
This addresses part of the concerns raised in open-telemetry#36924.
This addresses part of the concerns raised in open-telemetry#36924. Up until now, datadogreceiver used v1.16 of the semantic conventions, leading to mismatches in field names.
This addresses part of the concerns raised in open-telemetry#36924. Up until now, datadogreceiver used v1.16 of the semantic conventions, leading to mismatches in field names.
This addresses part of the concerns raised in open-telemetry#36924. Up until now, datadogreceiver used v1.16 of the semantic conventions, leading to mismatches in field names.
This addresses part of the concerns raised in open-telemetry#36924. Up until now, datadogreceiver used v1.16 of the semantic conventions, leading to mismatches in field names.
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue. Ex. Adding a feature - Explain what this achieves.--> #### Description **Note: this PR addresses several things, happy to split it in multiple PRs if it helps.** In #36924, a number of noncompliances were identified. This PR addresses most of them: > Misalignments 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 Addressed by bumping semconv to latest in the collector (1.30.0) > Misalignments applying to HTTP server span > > * Adopt new OTel Semantic Conventions http.request.method and http.response.status_code instead of http.method and http.status_code > * The span name should be ${http.request.method} ${http.route}, the attribute dd.span.Resource is right for this span type > * OTTL transformation to fix the pb: set (name, attributes["dd.span.Resource"]) where name == "servlet.request" Added in 89e2bff > Misalignment applying to internal Spring Framework spans(span name spring.handler) > > Span should be kind = SpanKind.SPAN_KIND_INTERNAL > * OTTL transformation to fix the pb: set (kind, SPAN_KIND_INTERNAL) where kind == SPAN_KIND_SERVER and name == "spring.handler" > * Span name should be the Java method nam hat is carried over by the dd.span.Resource attribute > * OTTL transformation to fix the pb: `set (name, attributes["dd.span.Resource"]) where name I didn't add the span kind transformation for now as it seemed too involved for the receiver, happy to get feedback on that. Rest in 89e2bff > Misalignments applying to Database client spans > > * The resource attribute service.name should be set to the value of the span attribute _dd.base_service Done in d067d37. This might be a big change though. > * 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} ${} Done in f78caac <!-- Issue number (e.g. #1234) or full URL to issue, if applicable. --> #### Link to tracking issue #36924 <!--Describe what testing was performed and which tests were added.--> #### Testing Unit tests were updated. <!--Please delete paragraphs that you did not use before submitting.-->
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue. Ex. Adding a feature - Explain what this achieves.--> #### Description **Note: this PR addresses several things, happy to split it in multiple PRs if it helps.** In open-telemetry#36924, a number of noncompliances were identified. This PR addresses most of them: > Misalignments 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 Addressed by bumping semconv to latest in the collector (1.30.0) > Misalignments applying to HTTP server span > > * Adopt new OTel Semantic Conventions http.request.method and http.response.status_code instead of http.method and http.status_code > * The span name should be ${http.request.method} ${http.route}, the attribute dd.span.Resource is right for this span type > * OTTL transformation to fix the pb: set (name, attributes["dd.span.Resource"]) where name == "servlet.request" Added in 89e2bff > Misalignment applying to internal Spring Framework spans(span name spring.handler) > > Span should be kind = SpanKind.SPAN_KIND_INTERNAL > * OTTL transformation to fix the pb: set (kind, SPAN_KIND_INTERNAL) where kind == SPAN_KIND_SERVER and name == "spring.handler" > * Span name should be the Java method nam hat is carried over by the dd.span.Resource attribute > * OTTL transformation to fix the pb: `set (name, attributes["dd.span.Resource"]) where name I didn't add the span kind transformation for now as it seemed too involved for the receiver, happy to get feedback on that. Rest in 89e2bff > Misalignments applying to Database client spans > > * The resource attribute service.name should be set to the value of the span attribute _dd.base_service Done in d067d37. This might be a big change though. > * 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} ${} Done in f78caac <!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. --> #### Link to tracking issue open-telemetry#36924 <!--Describe what testing was performed and which tests were added.--> #### Testing Unit tests were updated. <!--Please delete paragraphs that you did not use before submitting.-->
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue. Ex. Adding a feature - Explain what this achieves.--> #### Description **Note: this PR addresses several things, happy to split it in multiple PRs if it helps.** In open-telemetry#36924, a number of noncompliances were identified. This PR addresses most of them: > Misalignments 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 Addressed by bumping semconv to latest in the collector (1.30.0) > Misalignments applying to HTTP server span > > * Adopt new OTel Semantic Conventions http.request.method and http.response.status_code instead of http.method and http.status_code > * The span name should be ${http.request.method} ${http.route}, the attribute dd.span.Resource is right for this span type > * OTTL transformation to fix the pb: set (name, attributes["dd.span.Resource"]) where name == "servlet.request" Added in 89e2bff > Misalignment applying to internal Spring Framework spans(span name spring.handler) > > Span should be kind = SpanKind.SPAN_KIND_INTERNAL > * OTTL transformation to fix the pb: set (kind, SPAN_KIND_INTERNAL) where kind == SPAN_KIND_SERVER and name == "spring.handler" > * Span name should be the Java method nam hat is carried over by the dd.span.Resource attribute > * OTTL transformation to fix the pb: `set (name, attributes["dd.span.Resource"]) where name I didn't add the span kind transformation for now as it seemed too involved for the receiver, happy to get feedback on that. Rest in 89e2bff > Misalignments applying to Database client spans > > * The resource attribute service.name should be set to the value of the span attribute _dd.base_service Done in d067d37. This might be a big change though. > * 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} ${} Done in f78caac <!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. --> #### Link to tracking issue open-telemetry#36924 <!--Describe what testing was performed and which tests were added.--> #### Testing Unit tests were updated. <!--Please delete paragraphs that you did not use before submitting.-->
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue. Ex. Adding a feature - Explain what this achieves.--> #### Description **Note: this PR addresses several things, happy to split it in multiple PRs if it helps.** In open-telemetry#36924, a number of noncompliances were identified. This PR addresses most of them: > Misalignments 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 Addressed by bumping semconv to latest in the collector (1.30.0) > Misalignments applying to HTTP server span > > * Adopt new OTel Semantic Conventions http.request.method and http.response.status_code instead of http.method and http.status_code > * The span name should be ${http.request.method} ${http.route}, the attribute dd.span.Resource is right for this span type > * OTTL transformation to fix the pb: set (name, attributes["dd.span.Resource"]) where name == "servlet.request" Added in 89e2bff > Misalignment applying to internal Spring Framework spans(span name spring.handler) > > Span should be kind = SpanKind.SPAN_KIND_INTERNAL > * OTTL transformation to fix the pb: set (kind, SPAN_KIND_INTERNAL) where kind == SPAN_KIND_SERVER and name == "spring.handler" > * Span name should be the Java method nam hat is carried over by the dd.span.Resource attribute > * OTTL transformation to fix the pb: `set (name, attributes["dd.span.Resource"]) where name I didn't add the span kind transformation for now as it seemed too involved for the receiver, happy to get feedback on that. Rest in 89e2bff > Misalignments applying to Database client spans > > * The resource attribute service.name should be set to the value of the span attribute _dd.base_service Done in d067d37. This might be a big change though. > * 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} ${} Done in f78caac <!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. --> #### Link to tracking issue open-telemetry#36924 <!--Describe what testing was performed and which tests were added.--> #### Testing Unit tests were updated. <!--Please delete paragraphs that you did not use before submitting.-->
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue. Ex. Adding a feature - Explain what this achieves.--> #### Description **Note: this PR addresses several things, happy to split it in multiple PRs if it helps.** In open-telemetry#36924, a number of noncompliances were identified. This PR addresses most of them: > Misalignments 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 Addressed by bumping semconv to latest in the collector (1.30.0) > Misalignments applying to HTTP server span > > * Adopt new OTel Semantic Conventions http.request.method and http.response.status_code instead of http.method and http.status_code > * The span name should be ${http.request.method} ${http.route}, the attribute dd.span.Resource is right for this span type > * OTTL transformation to fix the pb: set (name, attributes["dd.span.Resource"]) where name == "servlet.request" Added in 89e2bff > Misalignment applying to internal Spring Framework spans(span name spring.handler) > > Span should be kind = SpanKind.SPAN_KIND_INTERNAL > * OTTL transformation to fix the pb: set (kind, SPAN_KIND_INTERNAL) where kind == SPAN_KIND_SERVER and name == "spring.handler" > * Span name should be the Java method nam hat is carried over by the dd.span.Resource attribute > * OTTL transformation to fix the pb: `set (name, attributes["dd.span.Resource"]) where name I didn't add the span kind transformation for now as it seemed too involved for the receiver, happy to get feedback on that. Rest in 89e2bff > Misalignments applying to Database client spans > > * The resource attribute service.name should be set to the value of the span attribute _dd.base_service Done in d067d37. This might be a big change though. > * 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} ${} Done in f78caac <!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. --> #### Link to tracking issue open-telemetry#36924 <!--Describe what testing was performed and which tests were added.--> #### Testing Unit tests were updated. <!--Please delete paragraphs that you did not use before submitting.-->
Uh oh!
There was an error while loading. Please reload this page.
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.
Misalignments 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
Misalignments 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
attributeMisalignments 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: