Releases: DataDog/dd-trace-go
v1.55.0
Summary
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:
- Fix a bug in
contrib/database/sql
which incorrectly cached contexts. - Resolve a data race in
contrib/net/http
. - Reduce the memory allocated during initialization of the
contrib/google.golang.org/api
package. - Improve the latency of W3C traceparent header validation.
Changes
General
- all: move to 1.19 for lowest supported version by @darccio in #2192
- datastreams: Port data-streams-go to dd-trace-go by @piochelepiotr in #2006
Application Performance Monitoring (APM)
- contrib/IBM/sarama: adds trace for IBM/sarama by @rodrigoff in #2142
- tracer: ease configuring client-side stats computation by @ahmed-mez in #2168
- contrib/database/sql: use correct context for trace tasks in statements by @nsrip-dd in #2173
- ddtrace/tracer: fix inaccurate telemetry 'stats_computation_enabled' by @ahmed-mez in #2170
- tracer: add test for logging 128-bit trace ids when upper bits are empty by @katiehockman in #2101
- tracer: only set drop priority on whole trace by @ajgajg1134 in #2176
- ddtrace/tracer: create debug mode for old, open spans by @hannahkm in #2149
- [textmap] Replace validID regex with ascii comparisons by @thieman in #2180
- tracer: add service naming and peer service configurations to payload by @wconti27 in #2177
- Revert "ddtrace/tracer: create debug mode for old, open spans" by @ajgajg1134 in #2183
- ddtrace/tracer: add abandoned spans debugger by @darccio in #2188
- contrib/google.golang.org/grpc: stop using deprecated packages by @rarguelloF in #1959
- ddtrace/tracer: fix race condition in abandonedspans_test.go by @darccio in #2195
- contrib/google.golang.org/grpc: fix gen_proto.sh script by @rarguelloF in #2196
- ddtrace/tracer: fix race condition with RecordLogger in abandonedspans_test.go by @darccio in #2198
- tracer: add orchestrion telemetry by @ahmed-mez in #2200
- ddtrace/tracer: add _dd.base_service tag by @rarguelloF in #2175
- ddtrace/tracer: add orchestrion to startup logs by @ahmed-mez in #2205
- ddtrace/tracer: clean orchestrion startup logs by @ahmed-mez in #2206
- contrib/net/http: Copy span options and resource name to avoid data race by @ajgajg1134 in #2204
- contrib/google.golang.org/api: lazy init regexp by @felixge in #2197
Continous Profiler
New Contributors
- @thieman made their first contribution in #2180
- @bryantbiggs made their first contribution in #2171
- @rodrigoff made their first contribution in #2142
- @darccio made their first contribution in #2188
Full Changelog: v1.54.1...v1.55.0
v1.54.1
Summary
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.
Fixes
- contrib/database/sql: use correct context for trace tasks in statements by @ajgajg1134 in #2202
- contrib/net/http: Copy span options and resource name to avoid data race (#2204) by @ajgajg1134 in #2207
Full Changelog: v1.54.0...v1.54.1
v1.54.0
Summary
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.
Changes
Application Performance Monitoring (APM)
- contrib/bradfitz/gomemcache: Add trace wrappers for new Append and Prepend client functions by @vanstinator in #1555
- contrib/segmentio/kafka.go.v0: only log on inject error by @doron-cohen in #2126
General
- internal/version: bump to v1.54.0 by @knusbaum in #2108
- update go-libddwaf: v1.4.0 -> v1.4.1 by @eliottness in #2119
- contrib/aws/aws-sdk-go: add service specific tags by @rarguelloF in #2093
- ci/appsec: add compilation smoke tests by @Julio-Guerra in #2111
- contrib/emicklei/go-restful: Mark as deprecated for security reasons by @ajgajg1134 in #2122
- {ddtrace,contrib,internal}: WithHeaderTags performance improvements (cherrypick #2117) by @ajgajg1134 in #2125
- version: add a semver pre-release suffix in the main branch by @Julio-Guerra in #2109
- Update benchmarks CI image by @ddyurchenko in #2134
- contrib/emicklei/go-restful.v3: fix componentName by @rarguelloF in #2132
- contrib/internal/httptrace: improve performance of span starts (cherry-pick #2128) by @knusbaum in #2135
- Revert "ddtrace/tracer: changed default tracecontext propagation order" by @katiehockman in #2140
- bump(datadog-agent): Bump RC state package by @BaptisteFoy in #2121
- Revert "bump(datadog-agent): Bump RC state package" by @BaptisteFoy in #2145
- bump(datadog-agent): Bump RC state package by @BaptisteFoy in #2146
- .gitlab/scripts: remove BenchmarkConcurrentTracing from CI benchmarks by @knusbaum in #1845
- contrib/{internal/httptrace, net/http}: fix memory leak and request closure (cherry-pick #2138) by @knusbaum in #2139
- ddtrace/tracer: Add dd.parent_id to span formatted output by @ajgajg1134 in #2137
- .gitlab-ci.yml: add new benchmarks to CI runs by @knusbaum in #2147
- opentelemetry: only create one tracer with a TracerProvider by @katiehockman in #2124
- ddtrace/tracer: add integrations in startup logs by @hannahkm in #2115
- [go.mod] upgraded github.com/DataDog/go-libddwaf v1.4.1 => v1.4.2 by @eliottness in #2151
- opentelemetry: add OTel API test for default resource name by @katiehockman in #2123
- ddtrace/tracer: added telemetry for context propagation by @dianashevchenko in #2103
- .github/pull_request_template.md: remove QA and add checklist item benchmarks by @katiehockman in #2154
- tracer: don't log a warning if tracestate is present when propagating DD tags by @katiehockman in #2156
- (BETA) tracer: merge partial flushing feature branch by @katiehockman in #2153
- Update benchmarks CI image and artifacts uploading by @ddyurchenko in #2161
- go.mod: bump version of mattn/go-sqlite3 by @knusbaum in #2163
- .gitlab-ci.yml: add partial flushing benchmark to the benchmarking platform by @katiehockman in #2164
New Contributors
- @vanstinator made their first contribution in #1555
- @BaptisteFoy made their first contribution in #2121
- @hannahkm made their first contribution in #2115
- @doron-cohen made their first contribution in #2126
Full Changelog: v1.53.0...v1.54.0
v1.53.0
What's Changed
This release includes several new features for various APM integrations, including a new opt-in service naming schema, improvements to contrib/gocql
and the ability to add HTTP headers to traces in several integrations. In addition, there are a number of small bug fixes and improvements for APM, ASM and the Profiler.
Application Security Management (ASM) no longer requires CGO to be compiled. The appsec
build tag is still required for now for a progressive roll-out and will be removed in the next few months. Read more in below's ASM section.
Application Performance Monitoring (APM)
Peer Service naming schema
This release introduces a new opt-in service naming approach, aiming to make service names more consistent. You can opt-in to this new service naming setting DD_TRACE_PEER_SERVICE_DEFAULTS_ENABLED="true"
and DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED=true
.
For fine-tuned control of your service names, you can configure DD_TRACE_PEER_SERVICE_MAPPING
, providing comma-separated key:value mapping rule pairs, similar to how DD_SERVICE_MAPPING
is configured today.
HTTP Header Tags
This release includes a new feature to add HTTP headers as trace tags for several integrations:
- contrib/emicklei/go-restful
- contrib/gin-gonic/gin
- contrib/go-chi/chi.v5
- contrib/go-chi/chi
- contrib/gorilla/mux
- contrib/labstack/echo.v4
- contrib/labstack/echo
- contrib/urfave/negroni
- contrib/net/http
The feature can be configured globally with the WithHeaderTags
option to tracer.Start()
, or individually for each integration with the WithHeaderTags
options available in each integration package. It accepts a map of case-insensitive header keys to tag names and automatically applies matching header values as tags on traces, e.g. CASE-insensitive-Header:my-tag-name,User-ID:userId,My-Header-And-Tag-Name
. Also accepts entries without a specified tag name that are automatically mapped to tags of the form http.request.headers.<header-name>
.
APM Changelog
- contrib/aws: fix sns nil pointer dereference by @satorunooshie in #2025
- ddtrace/tracer: implement peer.service by @rarguelloF in #1975
- internal/namingschema: add config flag to disable default integration service names by @rarguelloF in #2007
- tracer: fix telemetry metrics to align with spec by @katiehockman in #2049
- contrib/gocql: add NewCluster function to trace clients by @rarguelloF in #2057
- contrib/google.golang.org/grpc: Fallback to dynamic service names if no global is found by @ajgajg1134 in #2051
- build(deps): bump github.com/gofiber/fiber/v2 from 2.24.0 to 2.43.0 by @dependabot in #2045
- set a bigger timeout for the windows by @dianashevchenko in #2059
- ddtrace/tracer: Fix TestSpanTracePushSeveral by @ajgajg1134 in #2062
- tracer: request Headers as tags for web integrations by @mtoffl01 in #1764
- tracer: discard invalid _dd.p.tid in the datadog propagator by @ahmed-mez in #2076
- ddtrace/tracer: added W3C tracecontext extract benchmark by @dianashevchenko in #2074
- ddtrace/opentelemetry: improve TestSpanContextWithStartOptions by @katiehockman in #2063
- ddtrace: removed outdated tag by @dianashevchenko in #2086
- Added WithErrorCheck option to redis by @lsgndln in #2040
- contrib/net/http: make roundTripper propagation (inject, extract) optional by @rangelrealecb in #1224
- contrib/emicklei/go-restful/v3: add integration for newest version by @michaelbeaumont in #2088
- contrib/emicklei/go-restful.v3: move to the correct folder by @rarguelloF in #2092
- ddtrace/tracer: changed default tracecontext propagation order by @dianashevchenko in #2072
- contrib/gocql: add WithCustomTag option by @rarguelloF in #2105
- ddtrace/tracer: do not fallback to target host as Cassandra peer.service source by @rarguelloF in #2100
- tracer: WithHeaderTags performance improvements by @ajgajg1134 in #2117
- internal: Improve the Iter performance of LockMap on empty maps by @ajgajg1134 in #2127
- contrib/internal/httptrace: improve performance of span starts by @knusbaum in #2128
- contrib/emicklei/go-restful.v3: fix componentName (cherry-pick #2132) by @knusbaum in #2136
- contrib/{internal/httptrace, net/http}: fix memory leak and request closure by @knusbaum in #2138
- contrib/aws/aws-sdk-go-v2: add WithErrorCheck option by @johanneswuerbach in #2042
- tracer/option: Add support for generic metadata in Tracer.SetUser by @kpurdon in #1985
Application Security Management (ASM)
We're happy to release the first version of ASM for Go that no longer requires CGO. This reduces the setup requirements to the bare minimum for Go development: the Go toolchain and nothing more!
Note that even if you disable CGO with CGO_ENABLED=0
, the resulting compiled program will still be dynamically linked against the C library, libm, and libdl. Already existing ASM users are not impacted by this new implementation and can upgrade to this version transparently, as these libraries were already required by the previous implementation using CGO.
This release also includes the ability to configure at run time your HTTP protection behaviour at https://app.datadoghq.com/security/configuration/asm/protection-behaviour
- internal/appsec: remove unnecessary remoteconfig updates specifications by @Hellzy in #2084
- appsec: integrate the new purego-based go-libddwaf by @Julio-Guerra in #2090
- appsec: remotely configurable HTTP protection behaviour by @Hellzy in #2044
Profiling
- contrib/database/sql: properly annotate DB operations with execution trace tasks by @nsrip-dd in #2060
- profiler: Add profiler.enabled tag by @felixge in #2065
- profiler: Reduce execution trace period to 15min by @felixge in #2091
General
- Faster CI: Use Larger Runners by @felixge in #2068
- Faster CI: Optimize APM Parametric Tests by @felixge in #2070
- Faster CI: Optimize System Tests by @felixge in #2071
- all: run go mod tidy by @nsrip-dd in #2073
- Faster CI: Optimize Pull Request Tests by @felixge in #2075
- CI: Simplify System Tests by @felixge in #2079
- Updated instructions for adding a benchmark in contributing.md by @dianashevchenko in #2080
- .gitlab-ci.yml: added BENCHMARK_TARGETS variable by @dianashevchenko in #2081
- system-tests: enable tracing e2e otel scenario by @ahmed-mez in #2083
- ci: update govulncheck to its latest interface by @Julio-Guerra in #2096
New Contributors
- @satorunooshie made their first contribution in #2025
- @mtoffl01 made their first contribution in #1764
- @lsgndln made their first contribution in #2040
- @rangelrealecb made their first contribution in #1224
- @michaelbeaumont made their first contribution in #2088
Full Changelog: v1.52.0...v1.53.0
v1.52.0
What's Changed
Application Security Management (ASM) updated its default blocking page templates to get rid of UTF-8 characters (HTML) and minify the content (JSON). The security rules have also been updated to the latest version, which introduces a new rule type for rules related to specific security scanners.
Application Performance Monitoring (APM) adds several new features, including support for confluent-kafka-go/v2/kafka
, a WithResourceNamer
option in contrib/go-chi/chi.v5
, and support for the sql comment extract implementation. It also contains a few fixes, including introducing a fallback to dynamic service names if no global is found in contrib/google.golang.org/grpc
, and removes the restriction requiring a call to Register
before Open
in contrib/database/sql
.
Application Performance Monitoring (APM)
- ddtrace/tracer: sql comment extract implementation by @barbinimichael in #1964
- ddtrace/opentelemetry: Enabled OTel benchmark in CI by @dianashevchenko in #1970
- contrib/google.golang.org/api: update google.golang.org/api version by @rarguelloF in #1971
- contrib: add support for confluent-kafka-go/v2/kafka by @dferstay in #1889
- contrib:
peer.service
precursors for confluentinc kafka integrations by @zarirhamza in #2008 - contrib/google.golang.org/api: change gen_endpoints script to generate a json file by @rarguelloF in #2009
- contrib: GRPC
peer.service
precursor tags by @zarirhamza in #1994 - contrib: mongoDB
peer.service
precursor tags by @zarirhamza in #1996 - contrib/hashicorp/*
peer.service
precursor tags by @zarirhamza in #1998 - contrib/globalsign/mgo: Precursor Fix by @zarirhamza in #2011
- contrib/go-chi: customize span resource name for go-chi by @opsengine in #1950
- contrib/net/http: add host and port tags for roundTripper by @rarguelloF in #2016
- contrib/database/sql: do not require users to Register before Open by @knusbaum in #2022
- contrib/go-chi/chi.v5: add WithResourceNamer option by @taowata in #2024
- contrib/google.golang.org/grpc: Fallback to dynamic service names if no global is found by @ajgajg1134 in #2048
Application Security Management (ASM)
- internal/appsec: use latest HTML/JSON blocked response template by @Hellzy in #1952
- internal/appsec: security rules v1.7.1 by @Hellzy in #2000
Profiling
- profiler: remove old delta implementation by @nsrip-dd in #1860
- profiler: add tag to indicate whether execution tracing is enabled by @nsrip-dd in #1997
General
- go.mod: fix opentelemetry dependency issue by @knusbaum in #2005
- ci: use reviewdog and use gci linter for imports instead of goimports by @rarguelloF in #2010
- internal/gitmetadata: log failed read build info as debug by @ahmed-mez in #2012
- internal/dockerfiles: Follow dockerfile security best practices by @ajgajg1134 in #1973
- build(deps): bump github.com/gin-gonic/gin from 1.7.7 to 1.9.1 by @dependabot in #2017
- go.mod: update datadog-agent/pkg/remoteconfig/state by @Hellzy in #2032
- tracer: fix telemetry metrics to align with spec (#2049) by @katiehockman in #2052
New Contributors
- @dferstay made their first contribution in #1889
- @barbinimichael made their first contribution in #1964
- @opsengine made their first contribution in #1950
Full Changelog: v1.51.0...v1.52.0
v1.51.0
contrib/google.golang.org/grpc
. Please upgrade to v1.52.0 if you're experiencing issues.
What's Changed
Application Performance Monitoring (APM) fixes a few minor OpenTelemetry-related bugs with W3C trace context propagation, 128 bit trace ids propagation, and the use of the Datadog OTel API. There are also bug fixes in contrib/database/sql
, contrib/go-redis/redis.v8
, and contrib/gomodule/redigo
. It also improves span and service naming across several library integrations. Note that this release adds a deprecation notice to contrib/labstack/echo
.
There are also several new features, including support for the redis/go-redis.v9
tracing integration and a new WithErrorCheck
option in contrib/aws/aws-sdk-go
.
Application Security Management (ASM) now allows users to configure their own custom security rules. These custom security rules get added to the list of security rules used by the In-App WAF. This release also includes a couple of bug fixes.
General
- go.mod: github.com/DataDog/datadog-agent/pkg/obfuscate 7.45.0-rc.1 by @johanneswuerbach in #1916
Application Performance Monitoring (APM)
- ddtrace/tracer: don't set empty tracestate propagation tag by @ahmed-mez in #1910
- ddtrace/{opentelemetry,opentracer}: add telemetry by @ahmed-mez in #1909
- internal/telemetry: track tracer init time metric by @lievan in #1896
- ddtrace/tracer: reset decision maker during fallback behavior of w3c header extraction by @ahmed-mez in #1933
- ddtrace/tracer: ensure access to trace tags is concurrency-safe by @knusbaum in #1948
- ddtrace/tracer: mark context updated when SetUser is called by @knusbaum in #1949
- Set keyTraceID128 on first span in the chunk only by @dianashevchenko in #1946
- ddtrace/opentelemetry: parent start span options shouldn't be propagated and used during child span creation by @dianashevchenko in #1958
- contrib/mongodb: use naming schema by @rarguelloF in #1908
- contrib/syndtr/goleveldb/leveldb: use naming schema by @rarguelloF in #1914
- contrib/tidwall/buntdb: use naming schema by @rarguelloF in #1913
- contrib/cassandra: use naming schema by @rarguelloF in #1911
- contrib/redis: use naming schema by @rarguelloF in #1906
- contrib/kafka: refactor tests by @rarguelloF in #1907
- contrib/google.golang.org/grpc: use naming schema by @rarguelloF in #1919
- contrib/twitchtv/twirp: use naming schema by @rarguelloF in #1920
- contrib/http: use naming schema by @rarguelloF in #1929
- contrib/redis/go-redis.v9: support v9 by @taowata in #1730
- contrib/net/http: don't set empty string values as span tags by @knusbaum in #1956
- contrib/internal/httptrace: remove naming schema from init by @rarguelloF in #1960
- contrib/graphql: use naming schema by @rarguelloF in #1926
- contrib/database/sql: fix bug where options were always overwritten by register options by @rarguelloF in #1904
- contrib/aws: use naming schema by @rarguelloF in #1931
- contrib/cloud.google.com/go/pubsub.v1: use naming schema by @rarguelloF in #1937
- contrib/labstack/echo: Add warning and deprecation notice by @ajgajg1134 in #1974
- contrib/gomodule/redigo: don't ignore the context given as first argument (#1935) by @lbcjbb in #1936
- contrib/aws/aws-sdk-go: add WithErrorCheck option by @delca85 in #1682
- contrib/go-redis/redis.v8: fix broken parsing of redis commands by @knusbaum in #1783
- contrib:
peer.service
precursors for elasticsearch integrations by @zarirhamza in #1981 - contrib:
peer.service
precursors for confluentinc/segmentio integrations by @zarirhamza in #1979 - contrib/aws/aws-sdk-go-v2: add aws_service, region, and resourcename by @zARODz11z in #1888
- internal/telemetry: trim the dependencies version prefix v by @Julio-Guerra in #1963
Application Security Management (ASM)
- internal/appsec: handle user custom rules through remote config by @Hellzy in #1961
- internal/appsec: fix user ID event detection & other appsec tests by @Hellzy in #1918
- internal/appsec/remoteconfig: fix rules overrides by @Julio-Guerra in #1921
- internal/appsec: do not ignore the appsec events rate limiter by @Julio-Guerra in #1927
- internal/appsec: security rules v1.7.0 by @Hellzy in #1983
- contrib/gin-gonic: abort context when the request is blocked by appsec by @Hellzy in #1976
Profiling
- ddtrace/trace: only tag fully-covered spans as execution traced by @nsrip-dd in #1943
- profiler: support reconfiguring execution tracing at runtime by @nsrip-dd in #1978
New Contributors
- @taowata made their first contribution in #1730
- @delca85 made their first contribution in #1682
- @zARODz11z made their first contribution in #1888
Full Changelog: v1.50.1...v1.51.0
v1.50.1
What's Changed
Full Changelog: v1.50.0...v1.50.1
v1.50.0
Summary
Application Security Management (ASM) now provides an In-App WAF (Web Application Firewall) which allows you to block suspicious HTTP requests based on your security rules. The main difference with a classic WAF comes from the fact we leverage the full run-time application context and not only the raw wire-format HTTP protocol payloads (eg. the actual Go values parsed from the raw HTTP request). This release also allows you to remotely configure your ASM configuration on the fly, without redeploying your Go services. This makes it possible to customize the In-App WAF rules to apply to each of your services and configure them in blocking mode. You can read more about our new In-App WAF feature in our documentation, and check out the new In-App WAF configuration page.
Application Performance Monitoring (APM) has added several new larger features: support for 128-bit trace IDs, as well as an Open Telemetry compatible tracer provider API. Note this wrapper is a "beta" feature, it may contain bugs and is not recommended for production use yet.
Changes
Breaking changes
- bump k8s.io/client-go from v0.17.0 to v0.23.17 by @ahmed-mez in #1886
General
- go.mod: upgrade gorm.io/driver/postgres to resolve downstream vuln by @ajgajg1134 in #1865
- contrib: upgrade labstack/echo/v4 from v4.2.0 to v4.9.0 by @ahmed-mez in #1891
- contrib: upgrade emicklei/go-restful to v2.16.0 by @ahmed-mez in #1885
- internal/telemetry: collect telemetry info for gorilla/mux integration by @lievan in #1861
Application Performance Monitoring (APM)
- tracer: support 128-bit trace ids by @katiehockman in #1833
- tracer/option: Add envvar DD_CLIENT_HOSTNAME_ENABLED to config client hostname detection by @ajgajg1134 in #1857
- tracer: add debug log for finished spans by @ahmed-mez in #1877
- tracer: merge support for OTel API by @dianashevchenko in #1839
- contrib/go-redis: add redis db index tag by @rarguelloF in #1755
- contrib/kafka: use naming schema by @rarguelloF in #1827
- contrib: implement mandatory rpc tags by @rarguelloF in #1768
- contrib: load telemetry info for all integrations by @lievan in #1882
- contrib/hashicorp/consul: use naming schema by @rarguelloF in #1821
- contrib/hashicorp/vault: use naming schema by @rarguelloF in #1868
- contrib/database/sql: add WithIgnoreQueryTypes option by @daisuzu in #1823
- contrib/database/sql: use naming schema by @rarguelloF in #1895
- contrib/go-redis/redis.v8: Add example for ClusterClient by @ajgajg1134 in #1864
- contrib/google.golang.org/grpc: Add WithMetadataTags & WithRequestTags to stream interceptor by @radykal-com in #1632
- contrib/gorm.io/gorm.v1: add tracing of raw queries by @NicklasWallgren in #1593
- contrib/elasticsearch: use naming schema by @rarguelloF in #1897
- contrib/bradfitz/gomemcache/memcache: use naming schema by @rarguelloF in #1820
- internal/gitmetadata: Log unknown VCS as debug to reduce confusion by @ajgajg1134 in #1875
- internal/namingschema: add package for selecting and working with the naming schema by @rarguelloF in #1819
Application Security Management (ASM)
- appsec: add blocking SDK body operation (#1901) by @eliottness in #1917
- appsec: suspicious request blocking by @Hellzy in #1797
- internal/appsec: add server.request.method address by @eliottness in #1893
- internal/appsec: update security rules to v1.6.0 by @Julio-Guerra in #1862
- internal/appsec/dyngo: atomic instrumentation swapping by @Julio-Guerra in #1873
New Contributors
- @radykal-com made their first contribution in #1632
- @NicklasWallgren made their first contribution in #1593
- @zekth made their first contribution in #1890
- @daisuzu made their first contribution in #1823
Full Changelog: v1.49.1...v1.50.0
v1.49.1
What's Changed
- contrib/google.golang.org/grpc: Add WithMetadataTags & WithRequestTags to grpc server stream interceptor. It differs with the unary interceptor implementation only in the span the data is added to. Thanks @radykal-com for the contribution!
Full Changelog: v1.49.0...v1.49.1
v1.49.0
Summary
Application Performance Monitoring (APM) ships various new features and bug fixes such as support for elastic/go-elasticsearch/v8
and for dimfeld/httptreemux/v5
. Additional features include new tags for mssql
in database/sql
, and new tags for mgo
. This release also includes a bug fix to how baggage is propagated when using W3C trace context injection/extraction.
Application Security Monitoring (ASM) adds support for multiple IP-related HTTP headers as well as fixing HTTP status code reporting for blocked users in labstack/echo.
Telemetry information is now enabled by default, to disable set DD_INSTRUMENTATION_TELEMETRY_ENABLED
to false
. Additional information can be found here.
Breaking Changes
- Fix returned OS name on Linux by @albertvaka in #1791
This change fixes our lookup of OS name in linux systems that is used for our startup logging. If you are parsing those startup logs and relying on the value of os_name
you may experience a breaking change as the value may shift from "Linux (Unknown Distribution)" to the now correctly identified OS name.
The PprofDiff function is deprecated and will be removed from the profiler package in the next release.
Changes
General
- .github/workflows: integrate APM E2E tests in Github Actions CI by @lambrospetrou in #1784
Application Performance Monitoring (APM)
- contrib/database/sql: add mssql instance name tag by @rarguelloF in #1731
- contrib/globalsign/mgo: add mongodb collection tag by @rarguelloF in #1725
- contrib/elastic/go-elasticsearch: Add support for elasticsearch v8 (Follow-up) by @VJean in #1763
- tracer: small refactor for SQL tracing by @katiehockman in #1777
- database/sql: Export TracedConn, as we need it when using the db.Conn Raw() API call. by @samsm in #1779
- contrib/google.golang.org/{grpc, grpc.v12}: add support for WithSpanOptions by @mackjmr in #1159
- internal/telemetry: enable instrumentation telemetry in the tracer and profiler by @lievan in #1769
- contrib/julienschmidt/httprouter: add http.route tag to span by @asdftamir in #1795
- contrib/dimfeld/httptreemux/v5: add support for httptreemux by @devillexio in #1546
- contrib/net/http: errCheck function by @johanneswuerbach in #1716
Application Security Management (ASM)
- httpsec: handle client ip with multiple HTTP headers by @Julio-Guerra in #1796
- internal/appsec: update security rules to v1.6.0 (#1863)
Profiling
- profiler: increase timestamp precision by @felixge in #1689
- profiler: record timestamp at the start execution tracing by @nsrip-dd in #1766
- profiler: deprecate PprofDiff by @nsrip-dd in #1806
Fixes & Improvements
General
- go.mod: upgrade golang.org/x/net by @katiehockman in #1747
- internal/hostname: Add tracer side hostname detection by @ajgajg1134 in #1712 This can be disabled by setting DD_CLIENT_HOSTNAME_ENABLED to false
- go.mod: Bump deps that used otel to not need v0 of otel by @ajgajg1134 in #1787
- .gitlab/scripts: add more benchmarks to benchmarking platform by @lievan in #1672
- profiler: document/test that Start restarts the profiler by @nsrip-dd in #1805
- ci: run pull request workflows for merge groups by @nsrip-dd in #1809
- internal/log: allow RecordLogger to ignore certain logs by @lievan in #1810
- go.mod: upgrade datadog-agent/pkg/obfuscate by @felixge in #1774
- ddtrace/tracer: fix a race condition on
span.SetUser
by @pobo380 in #1564
Application Performance Monitoring (APM)
- contrib/database/sql: Fix sample code in document to prevent panic on OpenDB by @tsbkw in #1635
- ddtrace/tracer/textmap: always extract baggage when using w3c for compatability by @ajgajg1134 in #1759
- ddtrace/tracer: fix traceparent length check by @ahmed-mez in #1815
Application Security Monitoring (ASM)
New Contributors 🎉
- @VJean made their first contribution in #1763
- @samsm made their first contribution in #1779
- @lambrospetrou made their first contribution in #1784
- @albertvaka made their first contribution in #1791
- @tsbkw made their first contribution in #1635
- @johanneswuerbach made their first contribution in #1716
- @asdftamir made their first contribution in #1795
- @devillexio made their first contribution in #1546
- @pobo380 made their first contribution in #1564
Full Changelog: v1.48.0...v1.49.0