Prelude
Dynamic instrumentation allows instrumenting a running service dynamically to extract runtime information that could be useful for, e.g., debugging purposes, or to add extra metrics without having to make code changes and re-deploy the service.
New Features
- ASM: 1-click activation with RCM.
- ASM: ip address collection will be enabled if not explicitly disabled and appsec is enabled.
- ASM: HTTP query string tagged by default in http.url (sensitive query strings obfuscated).
- ASM: add http.route for Python Flask.
- Django: set usr.id tag by default if request.user is authenticated.
- Introduced the public interface for the dynamic instrumentation service. See
Configuration
for more details. - IAST: Add new env var
DD_IAST_ENABLED
. - IAST: detect and report weak hash vulnerabilities.
- Add
Span.set_tag_str()
as an alternative to the overloaded functionality ofSpan.set_tag()
when the value can be coerced to unicode text.
Upgrade Notes
- Pin attrs dependency to version
>=20
due to incompatibility with cattrs version22.1.0
. - Use
Span.set_tag_str()
instead ofSpan.set_tag()
when the tag value is a text type as a performance optimizations in manual instrumentation.
Bug Fixes
- ASM: only report actor.ip on attack.
- ASM: fix a conflict with another backport of ipaddress by using the same lib. Add a test.
- aioredis: added exception handling for CancelledError in the aioredis integration.
- CI Visibility: fixed AppVeyor integration not extracting the full commit message.
- Add iterable methods on TracedCursor. Previously these were not present and would cause iterable usage of cursors in DB API integrations to fail.
- Fix parsing of the
DD_TAGS
environment variable value to include support for values with colons (e.g. URLs). Also fixed the parsing of invalid tags that begin with a space (e.g.DD_TAGS=" key:val"
will now produce a tag with labelkey
, instead ofkey
, and valueval
). - opentracing: don't raise an exception when distributed tracing headers are not present when attempting to extract.
- sqlite3: fix error when using
connection.backup
method. - Only install
ipaddress
dependency for Python < 3.7 - gevent: disable gevent after fork hook which could result in a performance regression.
- profiling: restart automatically on all Python versions.
- profiling: fixes an issue with Gunicorn child processes not storing profiling events.
- wsgi: when tracing more than one wsgi app within the same process ensure wsgi spans have the correct parenting.