New Features
-
ASM
- Introduces new metrics span tags to keep track of truncations of WAF payloads.
- Introduces support for automatic instrumentation of session monitoring and blocking for Django.
-
LLM Observability
- Introduces tracing for
converse
calls to the Bedrock Converse API.converse
calls are traced as LLM spans withmax_tokens
,temperature
inference parameters and input/output messages. - Avoids submitting spans to LLM Observability when a non-default base URL is detected in request for the Anthropic, Bedrock, LangChain, Open AI, and Azure Open AI integrations.
- Introduces tracing for
-
Telemetry
- SCA: This add support for extended heartbeat every 24h with dependencies payload.
-
Tracing
botocore
: Introduces capturing prompts, token usage, and inference parameters forconverse
calls to the Bedrock API.kafka
: Adds messaging.destination.name tag to kafkaproduce
andconsume
spans.- runtime_metrics: Adds support for sending runtime metrics as gauge metrics (instead of distributions). To enable this feature set
DD_TRACE_EXPERIMENTAL_FEATURES_ENABLED=DD_RUNTIME_METRICS_ENABLED
. - runtime_metrics: Adds support for tagging runtime metrics with the current runtime ID. To enable tagging, set
DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED=True
. - Includes
dynamodb
in the default list of cloud services for payload tagging, i.e.DD_TRACE_CLOUD_PAYLOAD_TAGGING_SERVICES
. Note that cloud services payload tagging feature is still gated byDD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING
andDD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING
.
Bug Fixes
-
LLM Observability
- Resolves an issue where enabling LLM Observability caused all botocore submodules to be patched instead of only
bedrock-runtime
. - Resolves issue where Pydantic model objects were encoded as unhelpful default placeholder text.
- Improves encoding of non-JSON serializable I/O objects by attempting to convert to string before resorting to default placeholder text.
- Resolves an issue where enabling LLM Observability caused all botocore submodules to be patched instead of only
-
Tracing
- dynamic sampling: Ensures that dynamic sampling rates are always consistent with the rates received from the agent via remote configuration. Previously, setting a global sample rate and then sampling rules via remote config would result in both configurations being applied. With this fix only the most recent sampling configuration will be applied.
- internal: Fixes an issue where trimming a traceback to attach it to the span could result in the loss of the most recent frames.
pylibmc
: Fixes an issue where usingClient(server=[url])
would throw the error__init__() got multiple values for argument 'servers'
- tags: Updates
DD_TAGS
parsing to match the Datadog Agent and other SDKs. Key-value pairs can now be separated by both commas and spaces (e.g.,DD_TAGS="key1:value1, key2:value2, key3:value3"
). This reverts a change introduced in v2.11.0, which only allowed one separator type. - sampling: Ensures remote sampling rules no longer overwrite existing samplers, preserving service-based sample rates set by the Agent and ensuring tracer rate limits configured by ddtrace products (e.g., ASM) are always respected.
- Resolves an issue where trace information, such as span links, baggage, and trace-level tags (ex: sampling decision maker), could be lost when a new process was created while a trace was active.
Other Changes
- Tracing
- Ensures a single DatadogSampler is initialized per Tracer instance, improving Tracer object initialization speed by approximately 7% and simplifying sampling logic.
- agent: Migrates agent connection configurations to envier. This provides better documentation and validation for expected types. The following configuration are affected:
DD_TRACE_AGENT_URL
DD_DOGSTATSD_URL
DD_TRACE_AGENT_HOSTNAME
DD_AGENT_HOST
DD_TRACE_AGENT_PORT
DD_DOGSTATSD_PORT
DD_AGENT_PORT
DD_TRACE_AGENT_TIMEOUT_SECONDS
Of the above impacted configurations, these had a precedence change:DD_TRACE_AGENT_HOSTNAME
overDD_AGENT_HOST
DD_TRACE_AGENT_PORT
overDD_AGENT_PORT
DD_DOGSTATSD_HOST
overDD_AGENT_HOST
DD_DOGSTATSD_PORT
overDD_AGENT_PORT