Summary
In this release, Application Performance Monitoring (APM) makes several changes that will improve the OpenTelemetry experience:
- The tracer will now generate 128-bit long trace IDs by default. To disable this, set
DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED
tofalse
. - For a distributed trace, the entire tracestate header will be propagated to avoid losing context data from other vendors. This should improve interoperability and migrations when using multiple trace context propagation styles across systems.
- There are a number of improvements to the OpenTelemetry API provided under
ddtrace/opentelemetry
:- BREAKING CHANGE: The operation name of the span will no longer be derived from the OTel span's name, and will now be crafted using OTel semantics. The OTel span's name will only be used as the resource name. This should provide a more appropriate span name and improve the UX. To explicitly set the span name when using the OTel API, you can set the
operation.name
attribute on the span. - The OTel API will now recognize reserved attributes, and map those to the corresponding properties of a Datadog span. The full list of attributes are here. This is to better match the OTLP behavior.
- We have embedded a no-op struct in the OTel API implementation so that the OTel API now supports v1.20+, v0.43.0+ of the upstream Go OpenTelemetry API library.
- BREAKING CHANGE: The operation name of the span will no longer be derived from the OTel span's name, and will now be crafted using OTel semantics. The OTel span's name will only be used as the resource name. This should provide a more appropriate span name and improve the UX. To explicitly set the span name when using the OTel API, you can set the
Changes
Application Performance Monitoring (APM)
- contrib/globalsign/mgo: err always nil. by @tttoad in #2269
- contrib/google.golang.org/grpc: isolate tests using an independent rig instance instead of a shared one by @darccio in #2278
- tracer: pre-size payload buffer to optimize memory allocations by @ahmed-mez in #2319
- ddtrace/opentelemetry: added support for special attributes mapping by @dianashevchenko in #2333
- ddtrace/opentelemetry: Introduced OTel name remapping by @dianashevchenko in #2337
- tracer: enable 128-bit TraceID generation by default by @katiehockman in #2335
- tracer: always propagate the tracestate header by @katiehockman in #2339
- ddtrace/opentelemetry: Fixed setting a wrong span field (span.kind) by @dianashevchenko in #2334
- Export SamplingPriority method on spanContext [SVLS-3934] by @purple4reina in #2291
- contrib/labstack/echo: Custom tags by @rafaeljusto in #2340
Application Security Management (ASM)
This release includes important optimizations of ASM Threats Detection by avoiding Go string copies, leading to major savings of memory allocations (note that this internal change is hidden inside the gRPC improvements below but apply to HTTP too which also relies on the same internals).
- contrib/google.golang.org/grpc: improve the memory efficiency of threats detection for gRPC by @RomainMuller in #2338
- appsec: upgrade security event rules to v1.8.0 by @eliottness in #2312
Datastreams Monitoring
- internal/datastreams: fix memory leak by @piochelepiotr in #2266
Profiler
New Contributors
Full Changelog: v1.57.0...v1.58.0