--- name: gpu-live-metric-validation description: Validate live GPU metrics on clusters running the Agent version under test and investigate missing metrics or tag failures. Use when asked to validate GPU metrics on live clusters, check a GPU Agent release, or run dda inv gpu.validate-metrics. --- # GPU Live Metric Validation ## Purpose Run GPU metric validation against Kubernetes clusters that are exclusively running the Agent version under test during the selected validation window, then investigate any findings. ## Required input Ask the user which Datadog orgs to validate before running any queries. The supported values match `tasks/gpu.py`: - `prod` (`app.datadoghq.com`) - `staging` (`ddstaging.datadoghq.com`) ## Validation workflow 1. Ask the user which supported orgs to validate. 2. Run the validator for each selected org: ```bash dda inv gpu.validate-metrics \ --org \ --lookback-seconds ``` By default, the task derives the Agent image-tag wildcard from the current release branch and its latest release-candidate tag. It passes that wildcard to the validator, which queries `datadog.agent.running` grouped by `kube_cluster_name,image_tag`, selects clusters whose nonempty image tags all match the wildcard, and ANDs that cluster selection with the GPU configuration filters. Use `--agent-version ` to override the derived version; it is required outside release branches (`N.N.x`), where derivation fails. Use `--metric-filter ` only for an additional scope; it is ANDed with the version-derived cluster filter. 3. Record the selected org, Agent version wildcard, lookback window, and validation output before interpreting any findings. ## Investigating findings For follow-up Datadog queries, use `dd-auth` to select the target. `pup` consumes the injected `DD_API_KEY`, `DD_APP_KEY`, and `DD_SITE`; do not combine this workflow with `pup --org`. 1. Start from a failing GPU metric and group it by the smallest useful set of dimensions, normally `gpu_uuid`, `host`, and `kube_cluster_name`. Add the failed tag as a group-by dimension when investigating a tag failure. ```bash dd-auth --domain -- \ pup --no-agent metrics query \ --query='count:gpu.{} by {gpu_uuid,host,kube_cluster_name,}' \ --from= --to=now ``` 2. Identify patterns before drawing conclusions: whether failures are limited to a GPU architecture, device mode, GPU model, host, cluster, workload, or Agent image tag. Confirm the affected cluster's Agent image tag with: ```bash dd-auth --domain -- \ pup --no-agent metrics query \ --query='sum:datadog.agent.running{} by {kube_cluster_name,image_tag}' \ --from= --to=now ``` 3. Preserve the exact queries and affected GPU/host/cluster identifiers in the summary. ## Candidate investigations by failure type - Missing metric: compare the affected GPU configuration with the metric's expected support and query `gpu.device.total` for the same scope to confirm that devices were present. - Missing required tag: group the failing metric by the required tag and affected GPU/host/cluster. Compare a related GPU metric to determine whether the absence is metric-specific. - Invalid tag value: group by the invalid tag and affected GPU/host/cluster. Check whether a series has multiple values for the same tag key before treating a comma-separated value as a single emitted tag value. - Unknown or extra tag: query a workload/container metric such as `container.cpu.usage` for the same pod and container. Compare its tags with the GPU metric to determine whether the tag originates from the workload. - If a workload tag points to a Kubernetes resource, inspect the corresponding Kubernetes object and its labels and annotations before assigning a source. ## Constraints - Use an explicit, bounded validation window. - Use `dd-auth` to select the target for `pup` queries. - Do not validate clusters that reported a different nonempty Agent image tag in the validation window. - Do not use `pup --org` with `dd-auth`.