Datadog Go Library including APM tracing, profiling, and security monitoring.
:warning: Starting with this release, dd-trace-go
requires libdl.so.2
[^2] and libm.so.6
to be present in the deployment environment (except Windows, where Application Security Management is not supported). This should be the case for the vast majority of environments (e.g: Redhat, Debian, Alpine, Amazon Linux, Ubuntu) but might not be the case in some minimal-footprint environments (e.g: BusyBox, docker images from scratch
). In situations when these requirements aren't met, you might see errors similar to (the exact error may be slightly different depending on the platform):
ld.so
is missing (the environment is unable to load dynamic executables) or is not the expected flavor (the binary was built on one platform, and runs on another which uses a different interpreter):
exec /path/to/binary: no such file or directory
libdl.so.2
in this example):
/path/to/binary: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
If this happens, please create a GitHub issue so we can reconsider this new default requirement. In the meantime, you can work around the problem by adding the datadog.no_waf
build tag (go build -tags='datadog.no_waf' ...
), which completely disables all Application Security Management features and removes these new requirements.
[^2]: In some build environments, libdl
functionality is provided by libc
; the ldd <binary>
command can be used to determine the exact runtime requirements
Application Security Management (ASM) can now be remotely activated by APM Tracing users via Datadog Remote Configuration, granted that the application was built either:
CGO_ENABLED=0
and with the appsec
build tag (this setup already required libdl.so.2
[^2] and libm.so.6
to be present in the deployment environment on previous releases — this remains true).Remote activation can be performed from different places in Datadog UI, such as ASM's Service Setup or APM's Service Catalog (hovering the ASM Status column).
ASM features can still be enabled locally using the DD_APPSEC_ENABLED=1
environment variable.
Setting the datadog.no_waf
build tag completely disables all ASM features, removing the ability for local as well as remote activation.
This release includes a fix to several library integrations which could have previously caused data races related to start options. This was fixed in database/sql
, gin-gonic/gin
, go-chi/chi.v5
, go-chi/chi
, google.golang.org/grpc.v12
, google.golang.org/grpc
, gorilla/mux
, julienschmidt/httprouter
, k8s.io/client-go/kubernetes
, labstack/echo.v4
, labstack/echo
, net/http
, and urfave/negroni
. We recommend you update to this version if you are using any of these integrations.
Beta: In-app APM library configuration of trace sampling rate, HTTP header tags and custom tags. This feature has a known bug: deleting the configuration entry in-app won't reset the configuration locally, this will be fixed in the next version of dd-trace-go (v1.60.0).
Full Changelog: https://github.com/DataDog/dd-trace-go/compare/v1.58.0...v.1.59.0
This release includes a fix to several library integrations which could have previously caused data races related to start options. This was fixed in database/sql
, gin-gonic/gin
, go-chi/chi.v5
, go-chi/chi
, google.golang.org/grpc.v12
, google.golang.org/grpc
, gorilla/mux
, julienschmidt/httprouter
, k8s.io/client-go/kubernetes
, labstack/echo.v4
, labstack/echo
, net/http
, and urfave/negroni
. We recommend you update to this version if you are using any of these integrations.
Application Security Management (ASM) now can be remotely activated by APM Tracing users with Datadog Remote Configuration, without requiring the appsec
build tag or DD_APPSEC_ENABLED
environment variable. This can be achieved from different places in our UI such as ASM's Service Setup or APM's Service Catalog (hovering the ASM Status column). Non-remote-configuration users still need to deploy their services with the DD_APPSEC_ENABLED
opt-in environment variable to enable ASM. Users of CGO_ENABLED=0
will still have to rely on the appsec
build tag for now, as it results into a dependency to libdl.so.2
to have on your deployment environment in this precise case, but not when CGO_ENABLED=1
.
This release also includes the latest ASM private beta feature, API Security (public documentation still in progress).
Beta: In-app APM library configuration of trace sampling rate, HTTP header tags and custom tags. This feature has a known bug: deleting the configuration entry in-app won't reset the configuration locally, this will be fixed in the next version of dd-trace-go (v1.60.0).
Full Changelog: https://github.com/DataDog/dd-trace-go/compare/v1.58.0...v.1.59.0
In this release, Application Performance Monitoring (APM) makes several changes that will improve the OpenTelemetry experience:
DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED
to false
.ddtrace/opentelemetry
:
operation.name
attribute on the span.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).
Full Changelog: https://github.com/DataDog/dd-trace-go/compare/v1.57.0...v1.58.0
In this release, Application Performance Monitoring (APM) will now correctly honor the trace context propagation style precedence, where previously W3C tracecontext
style would always take precedence even when a user specifies it later in the chain. This is a bug fix to align with expected behavior, but could potentially be a breaking change for customers relying on W3C trace context propagation.
Other APM changes include deprecation of the old Gorm libraries (gopkg.in/jinzhu/gorm.v1
and jinzhu/gorm
), and fixes for net/http
contrib to now honor WithHeaderTags
in WrapHandler
, the http.route
tag to be correctly collected in all relevant libraries.
dd-trace-go
macrobenchmark to CI pipeline by @igoragoli in https://github.com/DataDog/dd-trace-go/pull/2285
Full Changelog: https://github.com/DataDog/dd-trace-go/compare/v1.56.1...v1.57.0
A few minor bug fixes in this release: support for gofiber/fiber
up to v2.50.0, and a fix for the OpenTelemetry API.
Full Changelog: https://github.com/DataDog/dd-trace-go/compare/v1.56.0...v1.56.1
In this release, Continuous Profiler enables execution tracing by default for Go 1.21+. The execution tracer is the data source powering our new timeline view for analyzing latency and identifying bottlenecks. The profiler additionally adds a new metric for number of active goroutines, and disables profiling in AWS Lambda.
Additionally, Data Stream Monitoring (DSM) has a new version tag to track deployments.
Finally, some contrib library improvements include support for translating custom errors in labstack/echo.v4
, and trace context propagation for libraries built on fasthttp
.
This release also includes several bug fixes and documentation improvements:
Full Changelog: https://github.com/DataDog/dd-trace-go/compare/v1.55.0...v1.56.0
With the release of Go 1.21, this dd-trace-go release drops support for Go version 1.18 and older, following our Go support policy. This minimum supported Go version for this library is now Go 1.19.
This release adds the contrib/IBM/sarama
package to support for tracing the IBM/sarama Kafka library.
The Data Streams Monitoring Go library has been incorporated into this library. The feature can be enabled by setting the DD_DATA_STREAMS_ENABLED
environment variable to true
.
This release introduces a debug mode for the tracer to help identify long-lived or abandoned spans, which can lead to increased memory usage. It can be enabled with the WithDebugSpansMode
tracer option or by setting environment variable DD_TRACE_DEBUG_ABANDONED_SPANS =true
.
This release also includes several bug fixes and performance improvements:
contrib/database/sql
which incorrectly cached contexts.contrib/net/http
.contrib/google.golang.org/api
package.Full Changelog: https://github.com/DataDog/dd-trace-go/compare/v1.54.1...v1.55.0
A few minor bug fixes in this release, namely resolving #2172 which could cause traced tasks in statements to be erroneously cancelled and resolving a data race in our net/http contribution.
Full Changelog: https://github.com/DataDog/dd-trace-go/compare/v1.54.0...v1.54.1
In this release, Application Performance Monitoring (APM) adds partial flushing beta support, it enables flushing of partially finished traces. Partial flushing is disabled by default, it can be enabled via WithPartialFlushing
or by setting DD_TRACE_PARTIAL_FLUSH_ENABLED
to true
. See the docs for more details.
The release also includes multiple bug fixes and improvements.
Full Changelog: https://github.com/DataDog/dd-trace-go/compare/v1.53.0...v1.54.0