Agent
Prelude
Released on: 2026-09-03
- Please refer to the 7.83.0 tag on integrations-core for the list of changes on the Core Checks
New Features
-
Add a Data Security provider that schedules one-off database scan checks triggered through Remote Configuration. It is enabled when both
data_security.enabledandshared_library_check.enabledare set, and currently targets PostgreSQL databases already monitored by the Agent (via thepostgrescheck). -
Add
k8s cluster receiver,k8s leader elector extension, andcount connectorto the DDOT (Datadog Distribution of OpenTelemetry Collector) default manifest, enabling collection of Kubernetes cluster-level metrics, leader election coordination for Kubernetes receivers, and count-based metric generation via the OpenTelemetry Collector pipeline. -
Add Helm rollback action
-
Adds an Agent Data Plane (ADP) preflight mode, controlled by the new
data_plane.preflight_modesetting (enabled by default).When
data_plane.enabledhas not been set at all, the Agent starts ADP once at startup for 90 seconds in an isolated configuration, sends a single throwaway metric through it, then stops it and reports any startup errors to Datadog as agent telemetry. This surfaces environment-specific ADP problems before ADP is enabled for real.The preflight process handles no customer data: it runs in standalone mode, listens only on a temporary DogStatsD endpoint under the Agent's run directory, does not register with the Agent's remote agent registry, and never takes over the Agent's own DogStatsD port. The temporary configuration it is given contains the Agent's resolved configuration, so it is written user-only and removed once the run finishes. To keep values that were only ever held in memory from being written out this way, the pre-flight does not run at all when secrets are in use: when
secret_backend_command,secret_backend_typeormulti_secret_backendsis set, or when any setting has already been resolved from a secret. Settingdata_plane.enabledexplicitly to eithertrueorfalse, or settingdata_plane.preflight_modetofalse, also disables the pre-flight, as does running an Agent package that does not ship ADP. -
APM : Add support for span-derived primary tags on span metrics produced by the Datadog Distribution of OpenTelemetry Collector (DDOT). Set
span_derived_primary_tagson thedatadogconnector'stracessection to a list of attribute keys, and the value of each key found on a span (or, failing that, on its resource) is attached to the APM stats the connector emits, letting you break down span metrics by those tags:connectors: datadog/connector: traces: span_derived_primary_tags: [team, region]Keys absent from both the span and its resource attributes are omitted. Each key must also be configured as a primary tag in your Datadog organization; keys that are not registered as primary tags are dropped by the intake and do not appear on the resulting span metrics.
-
CWS
setactions accept a newcapturefield, a regular expression with a single capture group that is applied to the value offieldto extract part of it. This makes it possible to lift an identifier embedded in an event field, such as a command id inside a file path or an IAM role inside an IMDS url, and store it as a scoped variable rather than storing the whole field value.capturecan only be used together withfield, and only on fields holding a single string. A value that does not match the expression leaves the variable untouched. -
When
data_security.enabledis set, the Agent now forwards sensitive-data-scanner findings to Datadog as structuredsds-resultpayloads on the event platform. -
Scaffold PostgreSQL support to the data security check.
-
DDOT (Datadog Distribution of OpenTelemetry Collector): the embedded
datadogexporter now honors theorchestrator_explorersetting when the OpenTelemetry Agent runs in standalone mode (DD_OTEL_STANDALONE=true). When enabled, Kubernetes resource manifests collected by ak8sobjectsreceiver in the exporter's logs pipeline are forwarded to the Orchestrator Explorer (Kubernetes Resources) intake. In connected mode this setting is ignored, as the Datadog Cluster Agent already collects and ships orchestrator data. -
Add support for additional log collection options for Kubernetes workloads through DatadogInstrumentation resources.
-
Adds support for configuring Network Path Dynamic Test filters through Remote Config.
-
Adds support for scheduling Network Path tests through Remote Config.
-
Added ConfigMap collection to the Kubernetes Orchestrator. ConfigMap manifests are sent with their
dataandbinaryDatafields stripped. The collector is disabled by default (IsStable: false) and must be activated explicitly by listingconfigmapsin thecollectorsfield of the orchestrator check instance configuration. -
The DDOT (OpenTelemetry) config converter now automatically injects the
cumulativetodeltaprocessor into metrics pipelines that export to thedatadogexporter, converting all cumulative metric types (sum, histogram and exponential histogram) to delta. The processor is added only to metrics pipelines, and is skipped for any pipeline where acumulativetodeltaprocessor is already defined. This behavior is controlled by the newcumulativetodeltaentry inotelcollector.converter.features, which is enabled by default; remove it from that list to disable the auto-injection. -
OTLP ingestion: Adds a new
otlp_config.logs.infra_attributes.tags_as_ddtagsoption. When enabled, custom tagger-derived tags (for example, tags configured viakubernetesResourcesLabelsAsTags/kubernetesResourcesAnnotationsAsTags) are written as real Datadog log tags instead of log attributes for OTLP logs ingested directly by the Agent. Default behavior is unchanged. (commit 522ee5f) -
DDOT: The
infraattributesprocessor now supports a newlogs_tags_as_ddtagsoption. When enabled, custom tagger-derived tags (for example, tags configured viakubernetesResourcesLabelsAsTags/kubernetesResourcesAnnotationsAsTags) are written as real Datadog log tags instead of log attributes. Default behavior is unchanged. (commit 522ee5f) -
Added a
com.datadoghq.remoteaction.agentPrivate Action Runner bundle exposing read-only datadog-agent operations (status, diagnose, and configuration) as remote actions executed against the local Agent's authenticated IPC API. (Preview) -
Added a
generateFlareaction to thecom.datadoghq.remoteaction.agentPrivate Action Runner bundle that builds a flare archive on the Agent host. (Preview) -
The Private Action Runner now supports a split deployment model in which a dedicated on-demand executor runs actions in a separate process, reachable over a local gRPC socket secured with mutual TLS.
-
Added the
data_security.enabledconfiguration flag (disabled by default) which enables thesds-resultevent platform forwarder used to send sensitive-data-scanner results to Datadog. -
Add the Data Security feature to scan monitored PostgreSQL databases for sensitive data, driven remotely through Remote Configuration (
DATA_SECURITY_DB_SCAN_TASKS). Enabled withdata_security.enabledandshared_library_check.enabled. -
Agent Cloud Auth (delegated authentication / Workload Identity Federation) on AWS now resolves credentials from EKS IRSA, ECS task roles, EKS Pod Identity and EC2 IMDS in the trace-agent, standalone DogStatsD, private action runner, IoT Agent and Heroku Agent. Previously only flavors built with the
ec2build tag (main Agent, Cluster Agent, process-agent, security-agent, system-probe, installer) supported those credential sources; the others silently disabled the feature. Most notably the trace-agent is now covered, so APM no longer requires a statically configuredapi_keywhen Cloud Auth is in use. OpenTelemetry Collector (DDOT /otel-agent) is not covered: it does not load the delegated authentication component, and still requires a statically configuredapi_key. -
Setting
delegated_auth.aws.regionwithoutdelegated_auth.providerno longer skips cloud provider auto-detection. The configured region is now applied to the auto-detected provider, as intended, instead of being treated as an explicit provider configuration.
Enhancement Notes
-
Notable Events on Windows now reports critical temperature events: system shutdown or hibernation triggered by a critical thermal condition.
-
The Linux Agent packages now ship a built-in
datasecurityRust-based check as a shared library under/etc/datadog-agent/checks.d. This is an initial scaffold and is not enabled by default. -
Rust artifacts are now built with
codegen-units = 1to minimize the size of the produced binaries and shared libraries. -
The kubelet check now collects
kubelet.containers_per_pod(.countand.sum), a histogram of the number of containers running per pod on a node. This provides visibility into the distribution of container counts across pods, which can help identify pods with unusually high sidecar/container density. -
Adds kubernetes-actions functionality to the private action runner in the DCA.
-
Adds ability to patch daemonsets and statefulsets through the kubernetes-actions pipeline.
-
Add
exporter.datadogexporter.AddUnitsfeature gate that maps OTLP (UCUM) metric units to their Datadog equivalents. -
APM : Supported new
db.system.nameattribute replacingdb.systemaccording to changes in OpenTelemetry Semantic Conventions (v1.30.0+). -
APM:
agent statusnow shows the live trace-semantics registry in the APM Agent section, reporting whether it comes from Remote Configuration or the embedded default along with its content hash and version. -
APM: Reduced memory allocations when decoding incoming v0.4 and v0.5 trace payloads with the
convert-tracesfeature enabled. Span attributes are now batch-allocated while converting to the internal trace format, lowering allocation counts and garbage-collection pressure in the trace-agent receiver. This has no effect whenconvert-tracesis disabled. -
The Rust shared-library checks are now built with Bazel, which enables running their unit tests and clippy lint checks in CI as part of the build.
-
Agents are now built with Go
1.26.7. -
Check instances scheduled via configuration discovery now carry the
dd_config_discovery:truetag. This can be used to identify, and if needed exclude, metrics submitted by an autodiscovered check that duplicates a check configured manually elsewhere for the same service. -
Data Security scan results now report the total number of sensitive-data matches found in each column (
count_matches), in addition to the number of distinct rows that contain a match. This gives more accurate visibility when a single row contains several matches. -
The Data Security check now resolves its PostgreSQL source from fully templated autodiscovery configurations, so scan targets are matched reliably when the PostgreSQL integration is configured with template variables such as
%%host%%. -
The data security check now reports the number of scanned rows and the list of scanned columns (name and data type) for each scanned table in its scan results.
-
Augment the
datasecuritycomponent with the sensitive data scanner library. -
Add a new
dogstatsd_require_listenerconfiguration option (disabled by default). When enabled, DogStatsD exits with a non-zero status if it cannot create any listener (UDP port, Unix socket, or named pipe), which would otherwise leave DogStatsD running with no way to receive metrics. Enable it so a process supervisor can detect and restart a non-functional DogStatsD. -
The
dogstatsd_stream_socketconfiguration option, which lets DogStatsD listen for metrics on a Unix domain socket using stream mode (SOCK_STREAM), is now considered stable. -
gpu: add volatile ECC error metrics as a counterpart to the existing aggregate (lifetime) ones, including
errors.ecc.corrected.volatileanderrors.ecc.sram.uncorrected_by_subtype.volatile. -
The Agent flare now includes
ulimit.log(the running Agent process' resource limits, on non-Windows platforms) and, on AIX,svmon.log(a per-segment virtual memory breakdown fromsvmon -P). These help diagnose resource-exhaustion issues without requiring a separate manual collection step from the host. -
gpu: Add NVLink fabric cluster UUID and clique ID to GPU tags (
gpu_fabric_cluster_uuidandgpu_fabric_clique_id). -
GPU: emit
gpu.errors.xid, a count of NVIDIA XID errors in each collection interval.gpu.errors.xid.totalremains the lifetime total since the Agent started collecting events. -
In Kubernetes environments, the
apm_config.apm_non_local_trafficandjmx_use_container_supportdefaults are now applied directly by the Agent binary instead of relying on thedatadog-kubernetes.yamlfile shipped in the container image. This preserves these Kubernetes defaults even when external tooling (such as the Datadog Operator or Helm chart) replacesdatadog.yaml. Values explicitly set via a config file or environment variable continue to take precedence. -
The orchestrator check now collects
DatadogInstrumentation(datadoghq.com/v1alpha1) custom resources as part of the out-of-the-box set indexed by the Kubernetes Explorer, alongside the otherdatadoghq.comcustom resources. Collection requiresorchestrator_explorer.custom_resources.ootb.enabled(enabled by default) and is skipped when the custom resource definition is absent from the cluster. -
OTLP: Mapped the
service.namespaceresource attribute to aservice.namespacetag by default. OpenTelemetry semantic conventions only guaranteeservice.name/service.instance.iduniqueness within aservice.namespace, so it is now preserved to keep service identity. -
On Windows and Linux, the fleet installer now also registers the Private Action Runner's on-demand executor with
dd-procmgr. -
Private Action Runner in Datadog Agent now emits healthcheck metrics like its standalone counterpart.
-
Private Action Runner: add the
private_action_runner.restricted_shell.allowed_system_servicessetting to further restrict system-service action grants resolved by Datadog execution policies. Leaving the setting unset preserves the backend grants; configuring an empty map blocks all system-service operations. -
The Agent can now refresh secrets-managed API keys when a Remote Agent reports an Invalid API Key event.
-
End User Device Monitoring no longer applies a preconfigured set of SaaS domain filters to
network_path.collector.filters. Network Path filters are now empty by default inend_user_devicemode, and user-configured filters are preserved unchanged. -
Bumped the Security Agent policies to v0.83.0
-
Shared-library checks now honor an explicit
min_collection_interval: 0as one-shot scheduling (the check runs a single time), matching the behavior of Python checks. -
Logs emitted by shared library checks are now routed through the Datadog Agent logger, so their output is formatted and level-filtered consistently with other checks instead of being written directly to standard output.
-
SNMP device scans now walk devices using GetBulk by default, requesting only OIDs the device actually returns and adapting the max-repetitions on failures. This avoids the infinite loops and device crashes that could occur with the previous GetNext-based walk. SNMPv1 devices, which do not support GetBulk, continue to use the GetNext walk.
-
SNMP device scans now report results incrementally while the scan is running instead of only after it completes, so large devices surface OIDs sooner.
-
Upgrade OpenTelemetry Collector dependencies from v0.156.0 to v0.158.0 (core v1.62.0 to v1.64.0).
See the full upstream changelogs: collector-contrib v0.157.0, collector core v0.157.0. collector-contrib v0.158.0, collector core v0.158.0.
-
Agent Cloud Auth (delegated authentication) now reports why it did not start. When
org_uuidis configured but no supported cloud provider is detected, the Agent logs a warning naming every credential source it checked instead of a debug-level message, andagent statusshows the reason rather than only "not enabled". -
The
agent statusDelegated Authentication section now reports the AWS credential source in use for each managed API key (static environment variables, IRSA web identity, ECS/EKS container credentials, or EC2 IMDS), along with the last and next scheduled key refresh and the last error. -
Agent Cloud Auth (delegated authentication) failures now name the AWS credential mechanism that was attempted and what to check for it, instead of reporting a generic
missing AWS credentials. Credential resolution that returns blank credentials, for example when the EC2 metadata service answers with an error document, is now treated as a failure rather than reported as a successful resolution. -
The
windows_certificatecheck now supportsfilters.includeandfilters.excludeconfiguration to scope certificate collection by any emitted tag key (thumbprint, SAN, CN, friendly name, template, etc.) using Go regex patterns.
Deprecation Notes
- The eBPF probes for GPU Monitoring are deprecated and are now disabled by default. Set
gpu_monitoring.enable_ebpf_probestotrueinsystem-probe.yamlto keep using them.
Security Notes
- In FIPS mode, the default SNMPv3 authentication and privacy protocols used when
authKey/privKeyare set without an explicitauthProtocol/privProtocolare nowSHA-256/AESinstead ofMD5/DES, sinceMD5andDESare not FIPS 140-3 compatible. Outside FIPS mode, the defaults remain unchanged. - The
otel-agent flarecommand now writes its diagnostic archive into a private, unpredictably-named directory (restricted to the current user) instead of a predictable, world-readable path in the shared system temporary directory. Previously, on a multi-user host, another local user could read the flare contents (collected configuration, environment variables, and debug data), or redirect the archive by pre-creating a symlink at the predictable path.
Bug Fixes
- APM: The trace-agent refreshes the API key and retries on a 403 only when
secret_refresh_on_api_key_failure_intervalis set (> 0), now consistent with metrics and logs - APM : Container tags resolution debug information is now stored using the tracer payload's deduplicated string table instead of inline strings, reducing the size of payloads that include this debug information.
- APM: Fix trace-agent crashes on malformed trace payloads that contain nil entries: nil spans, span links, or span events, and nil span-event attribute values. Nil entries are now dropped at decoding and conversion boundaries before payloads reach trace processing.
- APM: Fix a trace-agent crash when a
/v1.0/tracestrace chunk carries a trace ID that is not 16 bytes long. Chunk trace IDs are now normalized to 16 bytes during normalization instead of panicking on an out-of-bounds slice in the score and probabilistic samplers. - APM: ProbabilisticSampler now properly uses the lower order bits of the trace ID on v1 traces.
- APM: Fix a trace-agent crash from unbounded recursion when decoding deeply nested attribute values; nesting depth is now bounded.
- APM: Fix a trace-agent crash when a span event attribute declares an array type but carries a missing array or array element.
- APM V1 trace endpoint now safely skips unknown fields, harvesting any inline strings they carry into the string table so that streaming-string references in later known fields continue to resolve correctly.
- Keep daemon specific default log filepaths now that the core agent's
log_fileconfiguration is populated. - Windows: Fix a crash in the Agent when a statsd client configured to use a named pipe is closed without ever having successfully written to that pipe. The named pipe connection is established on first write, so closing such a client dereferenced a nil connection and terminated the process. Fixed by updating
datadog-goto v5.9.1. - [DBM] Bump
go-sqllexerto v0.2.4 to fix a SQL normalization bug:- Stop treating backslash as a string escape character in SQL Server and Oracle string literals, which previously caused the obfuscator to swallow SQL past a literal like
ESCAPE '\'and truncate the obfuscated query.
- Stop treating backslash as a string escape character in SQL Server and Oracle string literals, which previously caused the obfuscator to swallow SQL past a literal like
- Bump the embedded GoSNMP library to fix SNMPv3 engine-ID discovery and improve robustness of SNMP OID and varbind parsing.
- APM: Make the automatic library injection mode use the CSI driver only when the injector and library images come from configured Datadog registries. Images from other registries now fall back to init containers so Kubernetes can use the workload's image pull credentials.
- APM: Fixed Dynamic Instrumentation snapshot and log-probe uploads failing with a connection reset when the Logs product is disabled (
logs_enabled: false). The debugger proxy now drains the request body before responding, so these uploads are dropped cleanly instead of resetting the tracer's connection. - On ECS Managed Instances in daemon mode, the ECS workloadmeta collector no longer fails to start when the ECS Metadata v1 introspection endpoint is unreachable. The collector now falls back to the metadata v4
/tasksendpoint, which provides all the task data this deployment needs. Previously a v1 failure produced noECSTaskentities for the whole host, socontainer.*metrics were missing thetask_arn,task_family,task_version,ecs_cluster_nameandecs_container_nametags. ECS EC2 daemon mode still requires metadata v1, which provides its task list. - ECS cluster metadata (cluster name, cluster ID, region and AWS account ID) now falls back to the Agent's own task metadata when the ECS Metadata v1 introspection endpoint is unavailable. This fixes the orchestrator ECS check being skipped, the container lifecycle check reporting an empty cluster ID, and the flare missing its ECS section on ECS Managed Instances. The fallback applies to every non-Fargate launch type, so ECS EC2 deployments whose v1 introspection endpoint is unreachable now resolve cluster metadata instead of failing.
- The Cluster Agent no longer schedules endpoints checks against EndpointSlice endpoints that are not ready or are terminating. This restores the behavior of the
v1.Endpointscode path, which only ever targeted ready addresses, and stops checks from erroring out against pods that are shutting down or failing their readiness probes. - Fixed an issue where the Docker container collector could not inspect a container whose image declares a port range in its exposed ports (for example
EXPOSE 1061-1070). Such containers were skipped entirely with aninvalid port '1061-1070': invalid syntaxerror. Older Docker daemons return these ranges verbatim, which the container inspect decoder rejected. The Agent now expands port-range entries into individual ports so the container is collected normally. - Fix
agent status(and theJSON/HTMLstatus renderers) showing a stale HA Agentstate(active/standby). The status page previously read a snapshot cached by the periodic inventory metadata collector, which could lag up toinventories_max_interval(10 minutes by default) behind the agent's actual HA state. The status page now reflects the live state on every call, matching the behavior already used by the flare payload. - Stop the Agent from repeatedly attempting to connect to a Kubelet on hosts that are not running on Kubernetes. This removes the recurring
Impossible to reach Kubelet through HTTPS, fallback to HTTPwarning logged by host-based and non-Kubernetes containerized installations. There is no change in behavior on Kubernetes nodes. - Logs Agent: fixed a file source that could stop collecting permanently (
Bytes Read: 0) after its log file was rotated or truncated below the offset already read. When a tailer starts, the Agent now checks that the offset stored for the file is still within it, and restarts from the beginning of the file when it is not. - Fixed the kubernetes_state.deployment.rollout_duration metric occasionally reporting erroneous large values after a cluster agent restart
- Fix chassis type detection on Windows for convertible and detachable 2-in-1 devices (SMBIOS codes 31 and 32), which were previously reported as
Other. - Agent GUI now follows symbolic links when processing conf.d items.
- Fix the NVIDIA Jetson check so missing or frequency-only GPU fields in
tegrastatsoutput do not prevent other Jetson metrics from being collected. - OTel Agent: The
datadogextension no longer probes cloud metadata source providers when a hostname is already set in the configuration, avoiding spurious GCP metadata server requests on non-GCP hosts. See open-telemetry/opentelemetry-collector-contrib#49241. - Fixed a crash loop in standalone
otel-agent(DD_OTEL_STANDALONE=true) when deployed alongside a core Datadog Agent that injectsDD_REMOTE_CONFIGURATION_ENABLED=trueorDD_AGENT_IPC_CONFIG_REFRESH_INTERVALinto its environment, such as when using the Datadog Operator. Standalone mode now reliably disables Remote Configuration and config sync regardless of these environment variables, since it has no core agent IPC endpoint to use them with. - The private action runner now stops heartbeating a task once the backend reports it no longer exists, instead of retrying indefinitely.
- Prevent double counting container memory limits when no limit is set on the container level and the limit is only set on the pod level. Use the metric
kubernetes.memory.limitsto only expose memory limits set explicitly at the container level. - Fixed missing network IP metadata for the Agent when running containerized without host networking (the common case for most Kubernetes deployments). Previously, network metadata collection was skipped entirely in this case. The Agent now falls back to reporting the node's IP address, using the existing
kubernetes_kubelet_hostconfiguration value. - A panic in a Rust-based shared-library check no longer aborts the whole Agent. The panic is now caught at the check boundary and surfaced as a check error, keeping the rest of the Agent running.
- Fixed the host SBOM scan (
sbom.host.enabled) reporting no packages when the Agent runs asdd-agent. The scan walks the paths the enabled analyzers declare, one of which is/root/buildinfo/content_manifests, and/rootis only traversable by root. Such a path is now skipped and the scan reports the packages it found.
Other Notes
- Agent Data Plane has been bumped to version 1.4.0. See the Agent Data Plane 1.4.0 release notes.
- The
datasecurityshared-library check now embeds thedatadog.sdsprotobuf definitions used to report scan results. This is internal wiring; no scan results are emitted yet. - The
ddot-collectorimage now starts in standalone mode by default. Using it in bundled mode now requires to explicitly setDD_OTEL_STANDALONEto false. - In ECS daemon mode, the ECS workloadmeta collector now returns a startup error when the ECS Metadata v1 instance data cannot be retrieved and no v1-independent task parser is available, instead of starting without a task parser. Startup is retried, so the collector recovers once the endpoint becomes reachable.
- The Agent no longer reports a
Check Execution Failurehealth platform issue when a check run fails. - Shared-library (Rust) checks can now submit event platform events as raw bytes, in addition to strings, allowing binary payloads such as protobuf.
Datadog Cluster Agent
Prelude
Released on: 2026-09-03 Pinned to datadog-agent v7.83.0: CHANGELOG.
Upgrade Notes
-
The
<namespace>part of adatadogmetric@<namespace>:<name>external metric reference is now ignored. The referencedDatadogMetricis always looked up in the namespace of theHorizontalPodAutoscalerorWatermarkPodAutoscalerthat holds the reference, so referencing aDatadogMetricowned by another namespace is no longer supported. Such a reference now resolves to aDatadogMetricthat does not exist, which leaves the autoscaler without a metric value and unable to scale.To find out whether you are affected, list every external metric reference that carries an explicit namespace:
kubectl get hpa --all-namespaces -o yaml | grep -E 'datadogmetric@[a-z0-9-]+:' kubectl get wpa --all-namespaces -o yaml | grep -E 'datadogmetric@[a-z0-9-]+:'References whose namespace is the namespace of the autoscaler holding them keep working unchanged. For every reference pointing at another namespace, create a
DatadogMetricwith the same query in the autoscaler's own namespace and point the autoscaler at it. The namespace can now be left out entirely,datadogmetric@<name>is a valid reference that resolves in the autoscaler's namespace.
New Features
- Add the
kubernetes_state.pod.terminatinggauge to the Kubernetes State Core check. The metric reports a value of 1 for each pod from the moment its deletion timestamp is set until the pod leaves the informer. DatadogInstrumentationchecks and logs configurations can now target ArgoRolloutworkloads.
Enhancement Notes
- Add the
kube_argo_rollouttag to pod metrics emitted by the Kubernetes State Core check for pods managed by Argo Rollouts. - Add the
-land--listoptions todatadog-cluster-agent statusto list available status sections. A section name can now be passed to the command to display only that section. - The Cluster Agent's Prometheus HTTP Service Discovery provider now applies the OpenMetrics check template's
rename_labelsmapping to the tags derived from the SD target labels, in addition to the labels scraped from each target. Previouslyrename_labelsonly affected scraped metric labels, so a label supplied by the SD endpoint could not be renamed. No configuration change is required: the existingrename_labelsin thecheck_templatenow covers both sources. - The cluster-agent KSM auto-sharding dispatcher (
cluster_checks.ksm_sharding_enabled) now supports a singlekubernetes_state_coreconfig that combines a shardablecluster_unassignedinstance with acluster_aggregates_onlyinstance. Thecluster_unassignedinstance is sharded by resource type (pods/nodes/others) as before, and thecluster_aggregates_onlyinstance (which does a full-pod watch and cannot be sharded) is dispatched alongside the pods shard. Previously such a multi-instance config disabled sharding. This lets KSM auto-sharding and the cluster-aggregate.totalfix be enabled together from one config. - The Cluster Agent now uses a single
ListWatchcall to track Kubernetes Node metadata, instead of one call per node. - Karpenter
NodePoolautoscaling now tries to automatically resolve whichEC2NodeClass/NodeClassto use when more than one exists for a given provider, based on theNodePool'skubernetes.io/osandkubernetes.io/archrequirements. Each NodeClass's ownkubernetes.io/os/kubernetes.io/archlabels are preferred when present, falling back to matching tokens in the NodeClass name (e.g.linux-amd64) otherwise; if neither signal uniquely identifies a NodeClass, or the label- and name-based signals disagree, the ambiguity is left unresolved. Previously, having more than one NodeClass of the same provider type always caused NodePool creation/update to fail with a "too many NodeClasses found" error; this is still the outcome when the disambiguation above can't resolve to a single NodeClass. Additionally, when both a manual KarpenterEC2NodeClassand an EKS Auto ModeNodeClassexist in the cluster, the EKS Auto ModeNodeClassis now preferred; previously theEC2NodeClasswas always preferred.
Security Notes
- The Cluster Agent external metrics provider now resolves
datadogmetric@references in the namespace of the requesting object rather than the namespace embedded in the metric name. Previously, a workload could read the value of aDatadogMetricowned by another namespace, and keep thatDatadogMetricactive so that its Datadog queries kept running.
Bug Fixes
- Fix
kubernetes_state.container.cpu_requestedandkubernetes_state.container.memory_requestedto use the effective requests reported by Kubernetes after an in-place vertical resize. Pod spec requests remain the fallback when status resources are unavailable. - The Cluster Agent no longer opens a second, redundant cluster-wide
ListWatchfor Kubernetes Nodes. Settingkubernetes_node_labels_as_tagsorkubernetes_node_annotations_as_tagsused to start an extra Node metadata watch in addition to the one already used to populate the Node cache; that extra watch has been removed and label/annotation-as-tags extraction now relies solely on the existing Node cache.