[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-datadog-labs-troubleshoot-ssi":3,"mdc-6tr24i-key":36,"related-repo-datadog-labs-troubleshoot-ssi":5222,"related-org-datadog-labs-troubleshoot-ssi":5325},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"troubleshoot-ssi","troubleshoot Kubernetes Single Step Instrumentation","Diagnose and fix Single Step Instrumentation (SSI) issues on Kubernetes — SSI automatically instruments applications for APM without code changes. Only use if the agent and SSI are already configured but traces are missing or instrumentation is not working.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"datadog-labs","Datadog Labs","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fdatadog-labs.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Observability","observability","tag",{"name":17,"slug":18,"type":15},"Datadog","datadog",{"name":20,"slug":21,"type":15},"Kubernetes","kubernetes",{"name":23,"slug":24,"type":15},"Debugging","debugging",145,"https:\u002F\u002Fgithub.com\u002Fdatadog-labs\u002Fagent-skills","2026-07-31T05:52:11.565892",null,19,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"Public repository for Datadog Agent Skills","https:\u002F\u002Fgithub.com\u002Fdatadog-labs\u002Fagent-skills\u002Ftree\u002FHEAD\u002Fdd-apm\u002Fk8s-ssi\u002Ftroubleshoot-ssi","---\nname: troubleshoot-ssi\ndescription: Diagnose and fix Single Step Instrumentation (SSI) issues on Kubernetes — SSI automatically instruments applications for APM without code changes. Only use if the agent and SSI are already configured but traces are missing or instrumentation is not working.\nmetadata:\n  version: \"1.0.0\"\n  author: datadog-labs\n  repository: https:\u002F\u002Fgithub.com\u002Fdatadog-labs\u002Fagent-skills\n  tags: datadog,apm,kubernetes,ssi,troubleshooting,instrumentation\n  alwaysApply: \"false\"\n---\n\n# Troubleshoot APM SSI on Kubernetes\n\n## Triggers\n\nInvoke this skill when the user expresses intent to:\n- Debug why a pod is not being instrumented\n- Investigate why traces are not appearing in Datadog\n- Diagnose admission webhook or init container injection failures\n- Follow up on failed checks from `verify-ssi`\n- Report that a specific service or pod has no traces\n\nDo NOT invoke this skill if:\n- SSI has not been enabled yet — run `enable-ssi` first\n\n---\n\n## Prerequisites\n\n- [ ] kubectl configured to target cluster — `kubectl config current-context`\n\n### pup-cli: check, install, and authenticate\n\n### Claude runs\n\n```bash\npup --version\n```\n\nIf not found, install it (OS-aware):\n\n### Claude runs\n\n```bash\nif [[ \"$(uname)\" == \"Darwin\" ]]; then\n  brew tap datadog-labs\u002Fpack && brew install pup\nelse\n  PUP_VERSION=$(curl -s https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdatadog-labs\u002Fpup\u002Freleases\u002Flatest | grep '\"tag_name\"' | cut -d'\"' -f4)\n  curl -L \"https:\u002F\u002Fgithub.com\u002Fdatadog-labs\u002Fpup\u002Freleases\u002Fdownload\u002F${PUP_VERSION}\u002Fpup_linux_amd64.tar.gz\" | tar xz -C \u002Fusr\u002Flocal\u002Fbin pup\n  chmod +x \u002Fusr\u002Flocal\u002Fbin\u002Fpup\nfi\npup --version\n```\n\nCheck auth:\n```bash\npup auth status\n```\n\nIf not authenticated:\n\n### Claude runs\n\n```bash\npup auth login\n```\n\n> This opens a browser tab for OAuth. Complete the login there — Claude will continue once the command exits.\n\nIf no browser available: `export DD_APP_KEY=\u003Cyour-app-key>`.\n\n---\n\n## Context to resolve before acting\n\n| Variable | How to resolve |\n|---|---|\n| `AGENT_NAMESPACE` | Namespace where Datadog Agent is installed |\n| `APP_NAMESPACE` | Namespace of the application with missing traces |\n| `CLUSTER_NAME` | `kubectl config current-context` or `spec.global.clusterName` in `datadog-agent.yaml` |\n| `SERVICE_NAME` | `tags.datadoghq.com\u002Fservice` label on the Deployment, or ask the user |\n| `ENV` | `tags.datadoghq.com\u002Fenv` label on the Deployment, or ask the user |\n| `POD_NAME` | `kubectl get pods -n \u003CAPP_NAMESPACE>` — use the specific pod the user mentioned |\n| `DEPLOYMENT_NAME` | Check `metadata.name` in the Deployment manifest, or ask the user |\n| `APP_LABEL` | Check `spec.selector.matchLabels.app` in the Deployment manifest |\n\n---\n\n## How SSI Works — Domain Knowledge\n\nRead this before investigating. It gives you the mental model to reason about novel failures, not just known ones.\n\n**Injection chain:**\n1. Admission webhook (registered by Cluster Agent) intercepts pod creation\n2. Webhook mutates the pod spec — adds a `datadog-lib-\u003Clanguage>-init` init container\n3. Init container downloads the tracer library onto a shared volume\n4. `LD_PRELOAD` env var is set pointing to the library `.so` file\n5. Application process loads the library automatically on startup via `LD_PRELOAD`\n\n**What each diagnostic layer can see:**\n- **pup** — sees what Datadog's backend received. Blind to cluster-side injection failures. If pup shows no tracer telemetry for the service, the tracer was either never injected (cluster-side — confirm with the kubectl init-container check) or injected but unable to report yet (connectivity, DD_SITE, API key, or telemetry lag). Don't assume the cluster; cross-check kubectl.\n- **kubectl** — sees cluster state. Blind to whether data reached Datadog. If kubectl shows the init container but pup shows no traces, the problem is post-injection.\n\n**What healthy looks like:**\n- `pup fleet tracers list` shows the service as active, with the expected language\n- `kubectl get pod -o jsonpath='{.spec.initContainers[*].name}'` includes `datadog-lib-\u003Clanguage>-init`\n\n**Known silent failures — SSI produces no error when these occur:**\n- **Existing ddtrace or OTel instrumentation** — SSI detects it and silently disables itself\n- **Unsupported runtime version** — silently skipped\n- **`admission.datadoghq.com\u002Fenabled: \"false\"` annotation** — webhook skips the pod entirely\n- **Pod not restarted after SSI enabled** — injection happens at startup; existing pods keep running uninstrumented\n- **Pod in Agent namespace** — SSI never instruments its own namespace\n\n**Reasoning shortcuts:**\n- No init container → webhook didn't fire → check: namespace targeting, pod-selector, opt-out annotation, webhook registration, pod not restarted\n- Init container present + no traces → check whether the service is in `pup fleet tracers list`: **absent** → tracer not reporting (Agent connectivity, DD_SITE mismatch, API key, blocked egress; or the tracer never loaded — existing ddtrace\u002FOTel, unsupported runtime); **present** → reporting telemetry but spans not arriving (no traffic, sampling, ingestion\u002Fretention filter)\n\n---\n\n## Step 1: Triage\n\nRun all seven simultaneously and surface them back to the user as the diagnostics you're running. Everything after this is driven by what you find here. Resolve `\u003CNODE_HOSTNAME>` from `kubectl get pod \u003CPOD_NAME> -n \u003CAPP_NAMESPACE> -o jsonpath='{.spec.nodeName}'` once you have a pod name; if no pod context yet, run the `pup` commands without `--hostname` first.\n\n### Claude runs\n\n```bash\npup traces search --query \"service:\u003CSERVICE_NAME>\" --from 1h --limit 5\npup fleet tracers list --filter \"service:\u003CSERVICE_NAME>\"\npup apm troubleshooting list --hostname \u003CNODE_HOSTNAME> --timeframe 1h\npup apm service-library-config get --service-name \u003CSERVICE_NAME> --env \u003CENV>\nkubectl get pod \u003CPOD_NAME> -n \u003CAPP_NAMESPACE> \\\n  -o jsonpath='{.spec.initContainers[*].name}'\nkubectl describe pod \u003CPOD_NAME> -n \u003CAPP_NAMESPACE> | grep -A 10 \"Events:\"\nkubectl get mutatingwebhookconfigurations | grep datadog\n```\n\nThe last command confirms the Admission Controller webhook is registered cluster-wide — this is the precondition for SSI injection working at all and must be checked even when most other services are being instrumented (any deviation in one webhook config can silently skip a subset of pods).\n\n`pup apm troubleshooting list` surfaces injection errors that Datadog's backend received from the cluster — these point to cluster-side mutation failures that may not be visible from `kubectl describe` alone. `pup apm service-library-config get` shows the runtime SDK config the tracer is operating under; an empty result with `ddTraceConfigs` configured, or unexpected values, points to UST\u002Fconfig-propagation issues.\n\n---\n\n## Presenting your findings (required)\n\nYour final response is the deliverable — not your investigation transcript. It must include **every diagnostic from this skill that you ran or that applies**, each with its purpose and what you found. Three failure modes to avoid:\n\n- **Running a check but not reporting it.** If you ran `kubectl get mutatingwebhookconfigurations`, the namespace `admission.datadoghq.com\u002Fmutate-pods` label check, or any other command during investigation, state the command and its result in your response. A check you ran but didn't surface gives the reader nothing — and the namespace-label and webhook checks in particular must appear explicitly.\n- **Omitting the two required pup diagnostics.** Every diagnosis must explicitly include these two commands, by name, for each affected service — they are mandatory triage output, not optional:\n  - `pup apm troubleshooting list --hostname \u003CNODE_HOSTNAME>` — surfaces injection errors Datadog received from the node\n  - `pup apm service-library-config get --service-name \u003CSERVICE_NAME> --env \u003CENV>` — shows the tracer's runtime SDK config\n\n  Run them if `pup` is available; recommend them for the user to run if it isn't. Do **not** substitute `pup traces search` for these — it is a different check and does not satisfy the runbook. If you don't know `\u003CENV>`, state your assumed value and run the command anyway.\n- **Stopping at the first root cause.** When multiple services are affected, investigate and report each one independently — they may have different causes — and give per-service remediation.\n\n---\n\n## Step 2: State Your Hypotheses\n\nBefore investigating, explicitly state your ranked hypotheses based on triage output. Do not skip this step.\n\n**When the user reports multiple affected services in the same namespace, diagnose each independently.** Two pods can fail injection for entirely different reasons (one opt-out annotation, one missing namespace label, one with pre-existing ddtrace). Do not assume a shared root cause — investigate each service's pod spec, annotations, and runtime separately and surface findings per-service.\n\n| Triage signal | Strong hypothesis |\n|---|---|\n| Traces arriving + service in tracers list | Both signals are service-scoped, so on a partial rollout they can be positive while the specific pod the user named is uninstrumented. First confirm **this** pod is instrumented (init container present in the triage kubectl check, or the `admission.datadoghq.com\u002Fstatus: injected` annotation). If it is, it's likely a UI filter or time window — tell the user and stop |\n| No traces + no init container on this pod | Injection never happened for this pod — investigate: namespace targeting, webhook, pod-selector, opt-out annotation, pod not restarted (partial rollout). The per-pod init-container check is authoritative: on a partial rollout the service can still appear in `tracers list` from other pods, so a service-scoped positive must not mask this pod being uninstrumented |\n| No traces + service NOT in tracers list + init container present | Tracer injected but not reporting — `tracers list` is telemetry-derived, so a correctly injected pod is absent when it can't report or hasn't yet. Investigate: Agent connectivity, DD_SITE mismatch, API key, blocked egress, or telemetry lag. (A true injection failure shows up as an *absent* init container or as init-container errors — the CrashLoopBackOff row below — not here.) |\n| No traces + service in tracers list + init container present | Tracer is reporting telemetry (so Agent connectivity, API key, and DD_SITE are working) but spans aren't arriving — investigate trace-specific causes: no traffic \u002F the app isn't serving requests yet, sampling rules, an ingestion\u002Fretention filter, or the trace-agent receiver |\n| Pod events show CrashLoopBackOff or init container errors | Init container failure — check existing ddtrace, runtime version |\n| Traces arriving but wrong service\u002Fenv | UST labels missing or misconfigured on the Deployment |\n\nState your top 1-3 hypotheses explicitly: *\"Based on triage, I think the most likely cause is X because Y.\"*\n\n---\n\n## Step 3: Investigate\n\nUse only the tools relevant to your hypotheses. Each observation informs your next action.\n\n---\n\n### Cluster-side investigation tools\n\n**Is the pod in the Agent namespace?**\nSSI never instruments pods in the same namespace as the Datadog Agent.\n```bash\nkubectl get pods -n \u003CAGENT_NAMESPACE>\n```\n\n**Were pods restarted after SSI was enabled?**\n\n> **Confirm with the user before restarting.** Tell the user: \"Pods must be restarted for SSI to inject into them. I'll restart `\u003CDEPLOYMENT_NAME>` in `\u003CAPP_NAMESPACE>`. Ready to proceed?\" Wait for confirmation.\n\n### Claude runs\n\n```bash\nkubectl rollout restart deployment\u002F\u003CDEPLOYMENT_NAME> -n \u003CAPP_NAMESPACE>\nkubectl wait --for=condition=Ready pod -l app=\u003CAPP_LABEL> -n \u003CAPP_NAMESPACE> --timeout=120s\n```\n\n### Claude runs\n\n```bash\n# Primary — authoritative and immediate: confirm the freshly-restarted pods carry the init container.\n# Label-scoped, not by \u003CPOD_NAME>: a rolling restart replaces the old pod with new-suffixed ones.\nkubectl get pod -l app=\u003CAPP_LABEL> -n \u003CAPP_NAMESPACE> \\\n  -o jsonpath='{.items[0].spec.initContainers[*].name}'\n# Secondary — eventual: the service reappears here once the restarted pod reports telemetry\n# (subject to a propagation delay of a minute or more, and only if the pod serves traffic)\npup fleet tracers list --filter \"service:\u003CSERVICE_NAME>\"\n```\n\nThe kubectl init-container check is the authoritative post-restart signal — the pod is injected the moment that init container appears. `tracers list` is telemetry-derived and lags, so don't read an empty result immediately after a restart as \"injection didn't happen.\"\n\n**Does the namespace carry the Admission Controller opt-in label?**\nWhen the Admission Controller runs with `mutateUnlabelled: false`, injection happens only in namespaces explicitly labeled `admission.datadoghq.com\u002Fmutate-pods=true`. A namespace missing this label silently has SSI skipped for every pod in it — a common cause when most cluster services are instrumented but one namespace's services aren't.\n\n```bash\nkubectl get namespace \u003CAPP_NAMESPACE> -o jsonpath='{.metadata.labels}'\nkubectl get namespace \u003CAPP_NAMESPACE> --show-labels\n```\n\nFix: label the namespace, then restart the affected deployments so the AC mutates them on pod recreate.\n```bash\nkubectl label namespace \u003CAPP_NAMESPACE> admission.datadoghq.com\u002Fmutate-pods=true\n```\n\n**Is namespace targeting filtering the pod out?**\n```bash\nkubectl get datadogagent datadog -n \u003CAGENT_NAMESPACE> -o yaml | grep -A 15 instrumentation\n```\nFix: update `enabledNamespaces` in `datadog-agent.yaml`.\n\n### Claude runs\n\n```bash\nkubectl apply -f datadog-agent.yaml\n```\n\n**Is a `podSelector` target filtering the pod out?**\nIf `targets` with `podSelector` is configured, only pods whose labels match the selector are instrumented. Check whether the app pod's labels match any target:\n```bash\nkubectl get datadogagent datadog -n \u003CAGENT_NAMESPACE> -o yaml | grep -A 20 targets\nkubectl get pod \u003CPOD_NAME> -n \u003CAPP_NAMESPACE> --show-labels\n```\nFix: add a matching label to the pod template, or broaden the `podSelector`, then apply and restart.\n\n**Is a pod annotation opting it out — or missing the AC's injection-success annotation?**\nTwo annotations to look for:\n- `admission.datadoghq.com\u002Fenabled: \"false\"` — explicit opt-out, AC skips the pod.\n- `admission.datadoghq.com\u002Fstatus: injected` — set by the AC after successful mutation; its **absence** on a running pod is positive evidence the AC never mutated it.\n\n```bash\nkubectl get pod \u003CPOD_NAME> -n \u003CAPP_NAMESPACE> -o jsonpath='{.metadata.annotations}'\nkubectl get pod \u003CPOD_NAME> -n \u003CAPP_NAMESPACE> -o yaml | grep -A 10 annotations\n```\nFix: remove an opt-out annotation from the Deployment pod template, then apply and restart.\n\n**Are the expected `DD_*` environment variables present in the running pod?**\nSSI injects `DD_SERVICE`, `DD_ENV`, `DD_VERSION`, `DD_TRACE_*`, and `LD_PRELOAD` into the container env when it mutates a pod. Their absence confirms the mutation did not run; their presence with unexpected values points to UST label mismatches or `ddTraceConfigs` issues.\n\n```bash\nkubectl exec -n \u003CAPP_NAMESPACE> \u003CPOD_NAME> -- env | grep -E '^(DD_|LD_PRELOAD)'\nkubectl describe pod \u003CPOD_NAME> -n \u003CAPP_NAMESPACE> | grep -E 'DD_|LD_PRELOAD'\n```\n\n### Claude runs\n\n```bash\nkubectl apply -f \u003Cyour-app-deployment.yaml>\n```\n\n> **Confirm with the user before restarting.** Tell the user: \"I need to restart `\u003CDEPLOYMENT_NAME>` in `\u003CAPP_NAMESPACE>` for this change to take effect. Ready to proceed?\" Wait for confirmation.\n\n### Claude runs\n\n```bash\nkubectl rollout restart deployment\u002F\u003CDEPLOYMENT_NAME> -n \u003CAPP_NAMESPACE>\n```\n\n**Does the app have existing custom instrumentation?**\nSSI silently disables itself when it detects existing tracer code. Scan source files for:\n- Python: `import ddtrace`, `ddtrace.patch_all()`\n- Node.js: `require('dd-trace')`, `DD.init()`\n- Java: `GlobalTracer.register(`, `dd-java-agent`\n- .NET: `Tracer.Instance`, `DD.Trace`\n- Ruby: `require 'ddtrace'`, `Datadog.configure`\n- PHP: `DDTrace\\`\n\nAlso check dependency manifests: `requirements.txt`, `package.json`, `Gemfile`, `pom.xml`.\n\nFix: remove the import\u002Fpackage, rebuild image, reload into cluster, restart pod.\n\n**Is the base image Alpine (musl libc)?**\nK8s SSI injects `LD_PRELOAD` as an environment variable into the pod — it does not rely on `\u002Fetc\u002Fld.so.preload`, so musl\u002FAlpine images are supported. This is not a blocker for Kubernetes SSI.\n\n**Is the runtime version supported?**\n```bash\nkubectl exec -n \u003CAPP_NAMESPACE> \u003CPOD_NAME> -- python --version\nkubectl exec -n \u003CAPP_NAMESPACE> \u003CPOD_NAME> -- node --version\nkubectl exec -n \u003CAPP_NAMESPACE> \u003CPOD_NAME> -- java -version\n```\nVerify against [SSI compatibility matrix](https:\u002F\u002Fdocs.datadoghq.com\u002Ftracing\u002Ftrace_collection\u002Fautomatic_instrumentation\u002Fsingle-step-apm\u002Fcompatibility\u002F).\n\n**Is the admission webhook registered?**\n```bash\nkubectl get mutatingwebhookconfigurations | grep datadog\nkubectl get pods -n \u003CAGENT_NAMESPACE> -l app=datadog-cluster-agent\nkubectl logs -n \u003CAGENT_NAMESPACE> -l app=datadog-cluster-agent --tail=100\n```\n\n**Did injection produce errors?**\nGet the node hostname first, then query Datadog for injection errors:\n```bash\nkubectl get pod \u003CPOD_NAME> -n \u003CAPP_NAMESPACE> -o jsonpath='{.spec.nodeName}'\npup apm troubleshooting list --hostname \u003CNODE_HOSTNAME> --timeframe 1h\n```\n\n**Is the Agent sending data to Datadog?**\n```bash\nkubectl exec -n \u003CAGENT_NAMESPACE> \\\n  $(kubectl get pod -n \u003CAGENT_NAMESPACE> -l app=datadog-agent -o name | head -1) \\\n  -- agent status | grep -A 5 \"APM Agent\"\n```\n\n---\n\n### Datadog-side investigation tools\n\n**Is the tracer reporting?**\n```bash\npup fleet tracers list --filter \"service:\u003CSERVICE_NAME>\"\n```\n\n**Does APM recognise the service?**\n```bash\npup apm services list --env \u003CENV>\n```\n\n**What SDK configuration is the service running with?**\nShows env vars the tracer is configured with (e.g. `DD_TRACE_ENABLED`, `DD_SERVICE`, `DD_ENV`, sampling rules). Empty output is expected if `ddTraceConfigs` was not set in `enable-ssi`; a populated output mismatching what was configured indicates the change didn't propagate.\n```bash\npup apm service-library-config get --service-name \u003CSERVICE_NAME> --env \u003CENV>\n```\n\n**Are traces arriving?**\n```bash\npup traces search --query \"service:\u003CSERVICE_NAME>\" --from 1h --limit 10\n```\n\n**Which agent is the tracer connected to?**\nUse if connectivity between tracer and Agent is suspected.\n```bash\npup fleet agents list --filter \"hostname:\u003CNODE_HOSTNAME>\"\npup fleet agents tracers \u003CAGENT_KEY> --filter \"service:\u003CSERVICE_NAME>\"\n```\n\n---\n\n## Step 4: Reflect Before Concluding\n\nBefore applying any fix, answer:\n1. What evidence confirms my hypothesis?\n2. What evidence would contradict it — and have I checked?\n3. Is there a simpler explanation I haven't considered?\n\nIf the conclusion doesn't hold up, return to Step 2 with new hypotheses. Keep iterating until you can defend the conclusion against all three questions.\n\n---\n\n## Step 5: Fix\n\nApply the fix for the confirmed root cause. If the fix requires a code or Dockerfile change, rebuild and reload:\n\n### Claude runs\n\n```bash\ndocker build -f \u003CDOCKERFILE_PATH> -t \u003CIMAGE_NAME> \u003CBUILD_CONTEXT>\n```\n\n[DECISION: cluster type]\n- kind (local): load the image into the cluster\n\n### Claude runs\n\n```bash\nkind load docker-image \u003CIMAGE_NAME> --name \u003CCLUSTER_NAME>\n```\n\n- Registry-based: skip — image will be pulled on next deployment\n\n> **Confirm with the user before restarting.** Tell the user: \"I need to restart `\u003CDEPLOYMENT_NAME>` in `\u003CAPP_NAMESPACE>` to apply the fix. Ready to proceed?\" Wait for confirmation.\n\n### Claude runs\n\n```bash\nkubectl rollout restart deployment\u002F\u003CDEPLOYMENT_NAME> -n \u003CAPP_NAMESPACE>\nkubectl wait --for=condition=Ready pod -l app=\u003CAPP_LABEL> -n \u003CAPP_NAMESPACE> --timeout=120s\n```\n\n---\n\n## Step 6: Verify\n\nRe-run triage to confirm the fix worked:\n\n### Claude runs\n\n```bash\npup traces search --query \"service:\u003CSERVICE_NAME>\" --from 1h --limit 5\npup fleet tracers list --filter \"service:\u003CSERVICE_NAME>\"\n```\n\nIf traces are arriving — resolved (the service may take a minute to reappear in `pup fleet tracers list`; an empty tracers list immediately after the restart is expected telemetry lag, not a failure). Automatically proceed to `onboarding-summary` now — do not ask the user for permission.\n\nERROR: No traces arriving — return to Step 2 with the new triage data and form updated hypotheses.\n\n---\n\n## Security constraints\n\n- Never write a raw API key into any file or chat message\n- Never run `kubectl delete` without user confirmation\n- Never modify `admissionController` settings directly\n- `docker push` to a registry always requires user confirmation\n",{"data":37,"body":42},{"name":4,"description":6,"metadata":38},{"version":39,"author":8,"repository":26,"tags":40,"alwaysApply":41},"1.0.0","datadog,apm,kubernetes,ssi,troubleshooting,instrumentation","false",{"type":43,"children":44},"root",[45,54,61,67,104,109,125,129,135,159,166,172,201,206,211,532,537,561,566,571,594,603,616,619,625,840,843,849,854,863,919,927,949,957,987,995,1054,1062,1096,1099,1105,1141,1146,1571,1576,1611,1614,1620,1632,1742,1745,1751,1756,1766,1903,1913,1916,1922,1927,1930,1936,1946,1990,1998,2026,2031,2172,2177,2339,2351,2377,2474,2479,2528,2536,2615,2633,2638,2667,2700,2831,2843,2853,2883,3042,3047,3109,3276,3281,3321,3346,3351,3413,3423,3527,3560,3565,3590,3598,3786,3801,3809,3933,3943,4069,4077,4248,4251,4257,4265,4307,4315,4362,4406,4472,4480,4535,4545,4642,4645,4651,4656,4674,4679,4682,4688,4693,4698,4780,4788,4796,4801,4864,4872,4896,4901,5029,5032,5038,5043,5048,5137,5157,5162,5165,5171,5216],{"type":46,"tag":47,"props":48,"children":50},"element","h1",{"id":49},"troubleshoot-apm-ssi-on-kubernetes",[51],{"type":52,"value":53},"text","Troubleshoot APM SSI on Kubernetes",{"type":46,"tag":55,"props":56,"children":58},"h2",{"id":57},"triggers",[59],{"type":52,"value":60},"Triggers",{"type":46,"tag":62,"props":63,"children":64},"p",{},[65],{"type":52,"value":66},"Invoke this skill when the user expresses intent to:",{"type":46,"tag":68,"props":69,"children":70},"ul",{},[71,77,82,87,99],{"type":46,"tag":72,"props":73,"children":74},"li",{},[75],{"type":52,"value":76},"Debug why a pod is not being instrumented",{"type":46,"tag":72,"props":78,"children":79},{},[80],{"type":52,"value":81},"Investigate why traces are not appearing in Datadog",{"type":46,"tag":72,"props":83,"children":84},{},[85],{"type":52,"value":86},"Diagnose admission webhook or init container injection failures",{"type":46,"tag":72,"props":88,"children":89},{},[90,92],{"type":52,"value":91},"Follow up on failed checks from ",{"type":46,"tag":93,"props":94,"children":96},"code",{"className":95},[],[97],{"type":52,"value":98},"verify-ssi",{"type":46,"tag":72,"props":100,"children":101},{},[102],{"type":52,"value":103},"Report that a specific service or pod has no traces",{"type":46,"tag":62,"props":105,"children":106},{},[107],{"type":52,"value":108},"Do NOT invoke this skill if:",{"type":46,"tag":68,"props":110,"children":111},{},[112],{"type":46,"tag":72,"props":113,"children":114},{},[115,117,123],{"type":52,"value":116},"SSI has not been enabled yet — run ",{"type":46,"tag":93,"props":118,"children":120},{"className":119},[],[121],{"type":52,"value":122},"enable-ssi",{"type":52,"value":124}," first",{"type":46,"tag":126,"props":127,"children":128},"hr",{},[],{"type":46,"tag":55,"props":130,"children":132},{"id":131},"prerequisites",[133],{"type":52,"value":134},"Prerequisites",{"type":46,"tag":68,"props":136,"children":139},{"className":137},[138],"contains-task-list",[140],{"type":46,"tag":72,"props":141,"children":144},{"className":142},[143],"task-list-item",[145,151,153],{"type":46,"tag":146,"props":147,"children":150},"input",{"disabled":148,"type":149},true,"checkbox",[],{"type":52,"value":152}," kubectl configured to target cluster — ",{"type":46,"tag":93,"props":154,"children":156},{"className":155},[],[157],{"type":52,"value":158},"kubectl config current-context",{"type":46,"tag":160,"props":161,"children":163},"h3",{"id":162},"pup-cli-check-install-and-authenticate",[164],{"type":52,"value":165},"pup-cli: check, install, and authenticate",{"type":46,"tag":160,"props":167,"children":169},{"id":168},"claude-runs",[170],{"type":52,"value":171},"Claude runs",{"type":46,"tag":173,"props":174,"children":179},"pre",{"className":175,"code":176,"language":177,"meta":178,"style":178},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pup --version\n","bash","",[180],{"type":46,"tag":93,"props":181,"children":182},{"__ignoreMap":178},[183],{"type":46,"tag":184,"props":185,"children":188},"span",{"class":186,"line":187},"line",1,[189,195],{"type":46,"tag":184,"props":190,"children":192},{"style":191},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[193],{"type":52,"value":194},"pup",{"type":46,"tag":184,"props":196,"children":198},{"style":197},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[199],{"type":52,"value":200}," --version\n",{"type":46,"tag":62,"props":202,"children":203},{},[204],{"type":52,"value":205},"If not found, install it (OS-aware):",{"type":46,"tag":160,"props":207,"children":209},{"id":208},"claude-runs-1",[210],{"type":52,"value":171},{"type":46,"tag":173,"props":212,"children":214},{"className":175,"code":213,"language":177,"meta":178,"style":178},"if [[ \"$(uname)\" == \"Darwin\" ]]; then\n  brew tap datadog-labs\u002Fpack && brew install pup\nelse\n  PUP_VERSION=$(curl -s https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdatadog-labs\u002Fpup\u002Freleases\u002Flatest | grep '\"tag_name\"' | cut -d'\"' -f4)\n  curl -L \"https:\u002F\u002Fgithub.com\u002Fdatadog-labs\u002Fpup\u002Freleases\u002Fdownload\u002F${PUP_VERSION}\u002Fpup_linux_amd64.tar.gz\" | tar xz -C \u002Fusr\u002Flocal\u002Fbin pup\n  chmod +x \u002Fusr\u002Flocal\u002Fbin\u002Fpup\nfi\npup --version\n",[215],{"type":46,"tag":93,"props":216,"children":217},{"__ignoreMap":178},[218,278,317,326,417,492,511,520],{"type":46,"tag":184,"props":219,"children":220},{"class":186,"line":187},[221,227,233,238,243,248,253,258,263,268,273],{"type":46,"tag":184,"props":222,"children":224},{"style":223},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[225],{"type":52,"value":226},"if",{"type":46,"tag":184,"props":228,"children":230},{"style":229},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[231],{"type":52,"value":232}," [[",{"type":46,"tag":184,"props":234,"children":235},{"style":229},[236],{"type":52,"value":237}," \"$(",{"type":46,"tag":184,"props":239,"children":240},{"style":191},[241],{"type":52,"value":242},"uname",{"type":46,"tag":184,"props":244,"children":245},{"style":229},[246],{"type":52,"value":247},")\"",{"type":46,"tag":184,"props":249,"children":250},{"style":229},[251],{"type":52,"value":252}," ==",{"type":46,"tag":184,"props":254,"children":255},{"style":229},[256],{"type":52,"value":257}," \"",{"type":46,"tag":184,"props":259,"children":260},{"style":197},[261],{"type":52,"value":262},"Darwin",{"type":46,"tag":184,"props":264,"children":265},{"style":229},[266],{"type":52,"value":267},"\"",{"type":46,"tag":184,"props":269,"children":270},{"style":229},[271],{"type":52,"value":272}," ]];",{"type":46,"tag":184,"props":274,"children":275},{"style":223},[276],{"type":52,"value":277}," then\n",{"type":46,"tag":184,"props":279,"children":281},{"class":186,"line":280},2,[282,287,292,297,302,307,312],{"type":46,"tag":184,"props":283,"children":284},{"style":191},[285],{"type":52,"value":286},"  brew",{"type":46,"tag":184,"props":288,"children":289},{"style":197},[290],{"type":52,"value":291}," tap",{"type":46,"tag":184,"props":293,"children":294},{"style":197},[295],{"type":52,"value":296}," datadog-labs\u002Fpack",{"type":46,"tag":184,"props":298,"children":299},{"style":229},[300],{"type":52,"value":301}," &&",{"type":46,"tag":184,"props":303,"children":304},{"style":191},[305],{"type":52,"value":306}," brew",{"type":46,"tag":184,"props":308,"children":309},{"style":197},[310],{"type":52,"value":311}," install",{"type":46,"tag":184,"props":313,"children":314},{"style":197},[315],{"type":52,"value":316}," pup\n",{"type":46,"tag":184,"props":318,"children":320},{"class":186,"line":319},3,[321],{"type":46,"tag":184,"props":322,"children":323},{"style":223},[324],{"type":52,"value":325},"else\n",{"type":46,"tag":184,"props":327,"children":329},{"class":186,"line":328},4,[330,336,341,346,351,356,361,366,371,376,381,385,390,395,399,403,407,412],{"type":46,"tag":184,"props":331,"children":333},{"style":332},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[334],{"type":52,"value":335},"  PUP_VERSION",{"type":46,"tag":184,"props":337,"children":338},{"style":229},[339],{"type":52,"value":340},"=$(",{"type":46,"tag":184,"props":342,"children":343},{"style":191},[344],{"type":52,"value":345},"curl",{"type":46,"tag":184,"props":347,"children":348},{"style":197},[349],{"type":52,"value":350}," -s",{"type":46,"tag":184,"props":352,"children":353},{"style":197},[354],{"type":52,"value":355}," https:\u002F\u002Fapi.github.com\u002Frepos\u002Fdatadog-labs\u002Fpup\u002Freleases\u002Flatest",{"type":46,"tag":184,"props":357,"children":358},{"style":229},[359],{"type":52,"value":360}," |",{"type":46,"tag":184,"props":362,"children":363},{"style":191},[364],{"type":52,"value":365}," grep",{"type":46,"tag":184,"props":367,"children":368},{"style":229},[369],{"type":52,"value":370}," '",{"type":46,"tag":184,"props":372,"children":373},{"style":197},[374],{"type":52,"value":375},"\"tag_name\"",{"type":46,"tag":184,"props":377,"children":378},{"style":229},[379],{"type":52,"value":380},"'",{"type":46,"tag":184,"props":382,"children":383},{"style":229},[384],{"type":52,"value":360},{"type":46,"tag":184,"props":386,"children":387},{"style":191},[388],{"type":52,"value":389}," cut",{"type":46,"tag":184,"props":391,"children":392},{"style":197},[393],{"type":52,"value":394}," -d",{"type":46,"tag":184,"props":396,"children":397},{"style":229},[398],{"type":52,"value":380},{"type":46,"tag":184,"props":400,"children":401},{"style":197},[402],{"type":52,"value":267},{"type":46,"tag":184,"props":404,"children":405},{"style":229},[406],{"type":52,"value":380},{"type":46,"tag":184,"props":408,"children":409},{"style":197},[410],{"type":52,"value":411}," -f4",{"type":46,"tag":184,"props":413,"children":414},{"style":229},[415],{"type":52,"value":416},")\n",{"type":46,"tag":184,"props":418,"children":420},{"class":186,"line":419},5,[421,426,431,435,440,445,450,455,460,464,468,473,478,483,488],{"type":46,"tag":184,"props":422,"children":423},{"style":191},[424],{"type":52,"value":425},"  curl",{"type":46,"tag":184,"props":427,"children":428},{"style":197},[429],{"type":52,"value":430}," -L",{"type":46,"tag":184,"props":432,"children":433},{"style":229},[434],{"type":52,"value":257},{"type":46,"tag":184,"props":436,"children":437},{"style":197},[438],{"type":52,"value":439},"https:\u002F\u002Fgithub.com\u002Fdatadog-labs\u002Fpup\u002Freleases\u002Fdownload\u002F",{"type":46,"tag":184,"props":441,"children":442},{"style":229},[443],{"type":52,"value":444},"${",{"type":46,"tag":184,"props":446,"children":447},{"style":332},[448],{"type":52,"value":449},"PUP_VERSION",{"type":46,"tag":184,"props":451,"children":452},{"style":229},[453],{"type":52,"value":454},"}",{"type":46,"tag":184,"props":456,"children":457},{"style":197},[458],{"type":52,"value":459},"\u002Fpup_linux_amd64.tar.gz",{"type":46,"tag":184,"props":461,"children":462},{"style":229},[463],{"type":52,"value":267},{"type":46,"tag":184,"props":465,"children":466},{"style":229},[467],{"type":52,"value":360},{"type":46,"tag":184,"props":469,"children":470},{"style":191},[471],{"type":52,"value":472}," tar",{"type":46,"tag":184,"props":474,"children":475},{"style":197},[476],{"type":52,"value":477}," xz",{"type":46,"tag":184,"props":479,"children":480},{"style":197},[481],{"type":52,"value":482}," -C",{"type":46,"tag":184,"props":484,"children":485},{"style":197},[486],{"type":52,"value":487}," \u002Fusr\u002Flocal\u002Fbin",{"type":46,"tag":184,"props":489,"children":490},{"style":197},[491],{"type":52,"value":316},{"type":46,"tag":184,"props":493,"children":495},{"class":186,"line":494},6,[496,501,506],{"type":46,"tag":184,"props":497,"children":498},{"style":191},[499],{"type":52,"value":500},"  chmod",{"type":46,"tag":184,"props":502,"children":503},{"style":197},[504],{"type":52,"value":505}," +x",{"type":46,"tag":184,"props":507,"children":508},{"style":197},[509],{"type":52,"value":510}," \u002Fusr\u002Flocal\u002Fbin\u002Fpup\n",{"type":46,"tag":184,"props":512,"children":514},{"class":186,"line":513},7,[515],{"type":46,"tag":184,"props":516,"children":517},{"style":223},[518],{"type":52,"value":519},"fi\n",{"type":46,"tag":184,"props":521,"children":523},{"class":186,"line":522},8,[524,528],{"type":46,"tag":184,"props":525,"children":526},{"style":191},[527],{"type":52,"value":194},{"type":46,"tag":184,"props":529,"children":530},{"style":197},[531],{"type":52,"value":200},{"type":46,"tag":62,"props":533,"children":534},{},[535],{"type":52,"value":536},"Check auth:",{"type":46,"tag":173,"props":538,"children":540},{"className":175,"code":539,"language":177,"meta":178,"style":178},"pup auth status\n",[541],{"type":46,"tag":93,"props":542,"children":543},{"__ignoreMap":178},[544],{"type":46,"tag":184,"props":545,"children":546},{"class":186,"line":187},[547,551,556],{"type":46,"tag":184,"props":548,"children":549},{"style":191},[550],{"type":52,"value":194},{"type":46,"tag":184,"props":552,"children":553},{"style":197},[554],{"type":52,"value":555}," auth",{"type":46,"tag":184,"props":557,"children":558},{"style":197},[559],{"type":52,"value":560}," status\n",{"type":46,"tag":62,"props":562,"children":563},{},[564],{"type":52,"value":565},"If not authenticated:",{"type":46,"tag":160,"props":567,"children":569},{"id":568},"claude-runs-2",[570],{"type":52,"value":171},{"type":46,"tag":173,"props":572,"children":574},{"className":175,"code":573,"language":177,"meta":178,"style":178},"pup auth login\n",[575],{"type":46,"tag":93,"props":576,"children":577},{"__ignoreMap":178},[578],{"type":46,"tag":184,"props":579,"children":580},{"class":186,"line":187},[581,585,589],{"type":46,"tag":184,"props":582,"children":583},{"style":191},[584],{"type":52,"value":194},{"type":46,"tag":184,"props":586,"children":587},{"style":197},[588],{"type":52,"value":555},{"type":46,"tag":184,"props":590,"children":591},{"style":197},[592],{"type":52,"value":593}," login\n",{"type":46,"tag":595,"props":596,"children":597},"blockquote",{},[598],{"type":46,"tag":62,"props":599,"children":600},{},[601],{"type":52,"value":602},"This opens a browser tab for OAuth. Complete the login there — Claude will continue once the command exits.",{"type":46,"tag":62,"props":604,"children":605},{},[606,608,614],{"type":52,"value":607},"If no browser available: ",{"type":46,"tag":93,"props":609,"children":611},{"className":610},[],[612],{"type":52,"value":613},"export DD_APP_KEY=\u003Cyour-app-key>",{"type":52,"value":615},".",{"type":46,"tag":126,"props":617,"children":618},{},[],{"type":46,"tag":55,"props":620,"children":622},{"id":621},"context-to-resolve-before-acting",[623],{"type":52,"value":624},"Context to resolve before acting",{"type":46,"tag":626,"props":627,"children":628},"table",{},[629,648],{"type":46,"tag":630,"props":631,"children":632},"thead",{},[633],{"type":46,"tag":634,"props":635,"children":636},"tr",{},[637,643],{"type":46,"tag":638,"props":639,"children":640},"th",{},[641],{"type":52,"value":642},"Variable",{"type":46,"tag":638,"props":644,"children":645},{},[646],{"type":52,"value":647},"How to resolve",{"type":46,"tag":649,"props":650,"children":651},"tbody",{},[652,670,687,723,746,768,791,816],{"type":46,"tag":634,"props":653,"children":654},{},[655,665],{"type":46,"tag":656,"props":657,"children":658},"td",{},[659],{"type":46,"tag":93,"props":660,"children":662},{"className":661},[],[663],{"type":52,"value":664},"AGENT_NAMESPACE",{"type":46,"tag":656,"props":666,"children":667},{},[668],{"type":52,"value":669},"Namespace where Datadog Agent is installed",{"type":46,"tag":634,"props":671,"children":672},{},[673,682],{"type":46,"tag":656,"props":674,"children":675},{},[676],{"type":46,"tag":93,"props":677,"children":679},{"className":678},[],[680],{"type":52,"value":681},"APP_NAMESPACE",{"type":46,"tag":656,"props":683,"children":684},{},[685],{"type":52,"value":686},"Namespace of the application with missing traces",{"type":46,"tag":634,"props":688,"children":689},{},[690,699],{"type":46,"tag":656,"props":691,"children":692},{},[693],{"type":46,"tag":93,"props":694,"children":696},{"className":695},[],[697],{"type":52,"value":698},"CLUSTER_NAME",{"type":46,"tag":656,"props":700,"children":701},{},[702,707,709,715,717],{"type":46,"tag":93,"props":703,"children":705},{"className":704},[],[706],{"type":52,"value":158},{"type":52,"value":708}," or ",{"type":46,"tag":93,"props":710,"children":712},{"className":711},[],[713],{"type":52,"value":714},"spec.global.clusterName",{"type":52,"value":716}," in ",{"type":46,"tag":93,"props":718,"children":720},{"className":719},[],[721],{"type":52,"value":722},"datadog-agent.yaml",{"type":46,"tag":634,"props":724,"children":725},{},[726,735],{"type":46,"tag":656,"props":727,"children":728},{},[729],{"type":46,"tag":93,"props":730,"children":732},{"className":731},[],[733],{"type":52,"value":734},"SERVICE_NAME",{"type":46,"tag":656,"props":736,"children":737},{},[738,744],{"type":46,"tag":93,"props":739,"children":741},{"className":740},[],[742],{"type":52,"value":743},"tags.datadoghq.com\u002Fservice",{"type":52,"value":745}," label on the Deployment, or ask the user",{"type":46,"tag":634,"props":747,"children":748},{},[749,758],{"type":46,"tag":656,"props":750,"children":751},{},[752],{"type":46,"tag":93,"props":753,"children":755},{"className":754},[],[756],{"type":52,"value":757},"ENV",{"type":46,"tag":656,"props":759,"children":760},{},[761,767],{"type":46,"tag":93,"props":762,"children":764},{"className":763},[],[765],{"type":52,"value":766},"tags.datadoghq.com\u002Fenv",{"type":52,"value":745},{"type":46,"tag":634,"props":769,"children":770},{},[771,780],{"type":46,"tag":656,"props":772,"children":773},{},[774],{"type":46,"tag":93,"props":775,"children":777},{"className":776},[],[778],{"type":52,"value":779},"POD_NAME",{"type":46,"tag":656,"props":781,"children":782},{},[783,789],{"type":46,"tag":93,"props":784,"children":786},{"className":785},[],[787],{"type":52,"value":788},"kubectl get pods -n \u003CAPP_NAMESPACE>",{"type":52,"value":790}," — use the specific pod the user mentioned",{"type":46,"tag":634,"props":792,"children":793},{},[794,803],{"type":46,"tag":656,"props":795,"children":796},{},[797],{"type":46,"tag":93,"props":798,"children":800},{"className":799},[],[801],{"type":52,"value":802},"DEPLOYMENT_NAME",{"type":46,"tag":656,"props":804,"children":805},{},[806,808,814],{"type":52,"value":807},"Check ",{"type":46,"tag":93,"props":809,"children":811},{"className":810},[],[812],{"type":52,"value":813},"metadata.name",{"type":52,"value":815}," in the Deployment manifest, or ask the user",{"type":46,"tag":634,"props":817,"children":818},{},[819,828],{"type":46,"tag":656,"props":820,"children":821},{},[822],{"type":46,"tag":93,"props":823,"children":825},{"className":824},[],[826],{"type":52,"value":827},"APP_LABEL",{"type":46,"tag":656,"props":829,"children":830},{},[831,832,838],{"type":52,"value":807},{"type":46,"tag":93,"props":833,"children":835},{"className":834},[],[836],{"type":52,"value":837},"spec.selector.matchLabels.app",{"type":52,"value":839}," in the Deployment manifest",{"type":46,"tag":126,"props":841,"children":842},{},[],{"type":46,"tag":55,"props":844,"children":846},{"id":845},"how-ssi-works-domain-knowledge",[847],{"type":52,"value":848},"How SSI Works — Domain Knowledge",{"type":46,"tag":62,"props":850,"children":851},{},[852],{"type":52,"value":853},"Read this before investigating. It gives you the mental model to reason about novel failures, not just known ones.",{"type":46,"tag":62,"props":855,"children":856},{},[857],{"type":46,"tag":858,"props":859,"children":860},"strong",{},[861],{"type":52,"value":862},"Injection chain:",{"type":46,"tag":864,"props":865,"children":866},"ol",{},[867,872,885,890,909],{"type":46,"tag":72,"props":868,"children":869},{},[870],{"type":52,"value":871},"Admission webhook (registered by Cluster Agent) intercepts pod creation",{"type":46,"tag":72,"props":873,"children":874},{},[875,877,883],{"type":52,"value":876},"Webhook mutates the pod spec — adds a ",{"type":46,"tag":93,"props":878,"children":880},{"className":879},[],[881],{"type":52,"value":882},"datadog-lib-\u003Clanguage>-init",{"type":52,"value":884}," init container",{"type":46,"tag":72,"props":886,"children":887},{},[888],{"type":52,"value":889},"Init container downloads the tracer library onto a shared volume",{"type":46,"tag":72,"props":891,"children":892},{},[893,899,901,907],{"type":46,"tag":93,"props":894,"children":896},{"className":895},[],[897],{"type":52,"value":898},"LD_PRELOAD",{"type":52,"value":900}," env var is set pointing to the library ",{"type":46,"tag":93,"props":902,"children":904},{"className":903},[],[905],{"type":52,"value":906},".so",{"type":52,"value":908}," file",{"type":46,"tag":72,"props":910,"children":911},{},[912,914],{"type":52,"value":913},"Application process loads the library automatically on startup via ",{"type":46,"tag":93,"props":915,"children":917},{"className":916},[],[918],{"type":52,"value":898},{"type":46,"tag":62,"props":920,"children":921},{},[922],{"type":46,"tag":858,"props":923,"children":924},{},[925],{"type":52,"value":926},"What each diagnostic layer can see:",{"type":46,"tag":68,"props":928,"children":929},{},[930,939],{"type":46,"tag":72,"props":931,"children":932},{},[933,937],{"type":46,"tag":858,"props":934,"children":935},{},[936],{"type":52,"value":194},{"type":52,"value":938}," — sees what Datadog's backend received. Blind to cluster-side injection failures. If pup shows no tracer telemetry for the service, the tracer was either never injected (cluster-side — confirm with the kubectl init-container check) or injected but unable to report yet (connectivity, DD_SITE, API key, or telemetry lag). Don't assume the cluster; cross-check kubectl.",{"type":46,"tag":72,"props":940,"children":941},{},[942,947],{"type":46,"tag":858,"props":943,"children":944},{},[945],{"type":52,"value":946},"kubectl",{"type":52,"value":948}," — sees cluster state. Blind to whether data reached Datadog. If kubectl shows the init container but pup shows no traces, the problem is post-injection.",{"type":46,"tag":62,"props":950,"children":951},{},[952],{"type":46,"tag":858,"props":953,"children":954},{},[955],{"type":52,"value":956},"What healthy looks like:",{"type":46,"tag":68,"props":958,"children":959},{},[960,971],{"type":46,"tag":72,"props":961,"children":962},{},[963,969],{"type":46,"tag":93,"props":964,"children":966},{"className":965},[],[967],{"type":52,"value":968},"pup fleet tracers list",{"type":52,"value":970}," shows the service as active, with the expected language",{"type":46,"tag":72,"props":972,"children":973},{},[974,980,982],{"type":46,"tag":93,"props":975,"children":977},{"className":976},[],[978],{"type":52,"value":979},"kubectl get pod -o jsonpath='{.spec.initContainers[*].name}'",{"type":52,"value":981}," includes ",{"type":46,"tag":93,"props":983,"children":985},{"className":984},[],[986],{"type":52,"value":882},{"type":46,"tag":62,"props":988,"children":989},{},[990],{"type":46,"tag":858,"props":991,"children":992},{},[993],{"type":52,"value":994},"Known silent failures — SSI produces no error when these occur:",{"type":46,"tag":68,"props":996,"children":997},{},[998,1008,1018,1034,1044],{"type":46,"tag":72,"props":999,"children":1000},{},[1001,1006],{"type":46,"tag":858,"props":1002,"children":1003},{},[1004],{"type":52,"value":1005},"Existing ddtrace or OTel instrumentation",{"type":52,"value":1007}," — SSI detects it and silently disables itself",{"type":46,"tag":72,"props":1009,"children":1010},{},[1011,1016],{"type":46,"tag":858,"props":1012,"children":1013},{},[1014],{"type":52,"value":1015},"Unsupported runtime version",{"type":52,"value":1017}," — silently skipped",{"type":46,"tag":72,"props":1019,"children":1020},{},[1021,1032],{"type":46,"tag":858,"props":1022,"children":1023},{},[1024,1030],{"type":46,"tag":93,"props":1025,"children":1027},{"className":1026},[],[1028],{"type":52,"value":1029},"admission.datadoghq.com\u002Fenabled: \"false\"",{"type":52,"value":1031}," annotation",{"type":52,"value":1033}," — webhook skips the pod entirely",{"type":46,"tag":72,"props":1035,"children":1036},{},[1037,1042],{"type":46,"tag":858,"props":1038,"children":1039},{},[1040],{"type":52,"value":1041},"Pod not restarted after SSI enabled",{"type":52,"value":1043}," — injection happens at startup; existing pods keep running uninstrumented",{"type":46,"tag":72,"props":1045,"children":1046},{},[1047,1052],{"type":46,"tag":858,"props":1048,"children":1049},{},[1050],{"type":52,"value":1051},"Pod in Agent namespace",{"type":52,"value":1053}," — SSI never instruments its own namespace",{"type":46,"tag":62,"props":1055,"children":1056},{},[1057],{"type":46,"tag":858,"props":1058,"children":1059},{},[1060],{"type":52,"value":1061},"Reasoning shortcuts:",{"type":46,"tag":68,"props":1063,"children":1064},{},[1065,1070],{"type":46,"tag":72,"props":1066,"children":1067},{},[1068],{"type":52,"value":1069},"No init container → webhook didn't fire → check: namespace targeting, pod-selector, opt-out annotation, webhook registration, pod not restarted",{"type":46,"tag":72,"props":1071,"children":1072},{},[1073,1075,1080,1082,1087,1089,1094],{"type":52,"value":1074},"Init container present + no traces → check whether the service is in ",{"type":46,"tag":93,"props":1076,"children":1078},{"className":1077},[],[1079],{"type":52,"value":968},{"type":52,"value":1081},": ",{"type":46,"tag":858,"props":1083,"children":1084},{},[1085],{"type":52,"value":1086},"absent",{"type":52,"value":1088}," → tracer not reporting (Agent connectivity, DD_SITE mismatch, API key, blocked egress; or the tracer never loaded — existing ddtrace\u002FOTel, unsupported runtime); ",{"type":46,"tag":858,"props":1090,"children":1091},{},[1092],{"type":52,"value":1093},"present",{"type":52,"value":1095}," → reporting telemetry but spans not arriving (no traffic, sampling, ingestion\u002Fretention filter)",{"type":46,"tag":126,"props":1097,"children":1098},{},[],{"type":46,"tag":55,"props":1100,"children":1102},{"id":1101},"step-1-triage",[1103],{"type":52,"value":1104},"Step 1: Triage",{"type":46,"tag":62,"props":1106,"children":1107},{},[1108,1110,1116,1118,1124,1126,1131,1133,1139],{"type":52,"value":1109},"Run all seven simultaneously and surface them back to the user as the diagnostics you're running. Everything after this is driven by what you find here. Resolve ",{"type":46,"tag":93,"props":1111,"children":1113},{"className":1112},[],[1114],{"type":52,"value":1115},"\u003CNODE_HOSTNAME>",{"type":52,"value":1117}," from ",{"type":46,"tag":93,"props":1119,"children":1121},{"className":1120},[],[1122],{"type":52,"value":1123},"kubectl get pod \u003CPOD_NAME> -n \u003CAPP_NAMESPACE> -o jsonpath='{.spec.nodeName}'",{"type":52,"value":1125}," once you have a pod name; if no pod context yet, run the ",{"type":46,"tag":93,"props":1127,"children":1129},{"className":1128},[],[1130],{"type":52,"value":194},{"type":52,"value":1132}," commands without ",{"type":46,"tag":93,"props":1134,"children":1136},{"className":1135},[],[1137],{"type":52,"value":1138},"--hostname",{"type":52,"value":1140}," first.",{"type":46,"tag":160,"props":1142,"children":1144},{"id":1143},"claude-runs-3",[1145],{"type":52,"value":171},{"type":46,"tag":173,"props":1147,"children":1149},{"className":175,"code":1148,"language":177,"meta":178,"style":178},"pup traces search --query \"service:\u003CSERVICE_NAME>\" --from 1h --limit 5\npup fleet tracers list --filter \"service:\u003CSERVICE_NAME>\"\npup apm troubleshooting list --hostname \u003CNODE_HOSTNAME> --timeframe 1h\npup apm service-library-config get --service-name \u003CSERVICE_NAME> --env \u003CENV>\nkubectl get pod \u003CPOD_NAME> -n \u003CAPP_NAMESPACE> \\\n  -o jsonpath='{.spec.initContainers[*].name}'\nkubectl describe pod \u003CPOD_NAME> -n \u003CAPP_NAMESPACE> | grep -A 10 \"Events:\"\nkubectl get mutatingwebhookconfigurations | grep datadog\n",[1150],{"type":46,"tag":93,"props":1151,"children":1152},{"__ignoreMap":178},[1153,1209,1249,1305,1372,1432,1459,1542],{"type":46,"tag":184,"props":1154,"children":1155},{"class":186,"line":187},[1156,1160,1165,1170,1175,1179,1184,1188,1193,1198,1203],{"type":46,"tag":184,"props":1157,"children":1158},{"style":191},[1159],{"type":52,"value":194},{"type":46,"tag":184,"props":1161,"children":1162},{"style":197},[1163],{"type":52,"value":1164}," traces",{"type":46,"tag":184,"props":1166,"children":1167},{"style":197},[1168],{"type":52,"value":1169}," search",{"type":46,"tag":184,"props":1171,"children":1172},{"style":197},[1173],{"type":52,"value":1174}," --query",{"type":46,"tag":184,"props":1176,"children":1177},{"style":229},[1178],{"type":52,"value":257},{"type":46,"tag":184,"props":1180,"children":1181},{"style":197},[1182],{"type":52,"value":1183},"service:\u003CSERVICE_NAME>",{"type":46,"tag":184,"props":1185,"children":1186},{"style":229},[1187],{"type":52,"value":267},{"type":46,"tag":184,"props":1189,"children":1190},{"style":197},[1191],{"type":52,"value":1192}," --from",{"type":46,"tag":184,"props":1194,"children":1195},{"style":197},[1196],{"type":52,"value":1197}," 1h",{"type":46,"tag":184,"props":1199,"children":1200},{"style":197},[1201],{"type":52,"value":1202}," --limit",{"type":46,"tag":184,"props":1204,"children":1206},{"style":1205},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1207],{"type":52,"value":1208}," 5\n",{"type":46,"tag":184,"props":1210,"children":1211},{"class":186,"line":280},[1212,1216,1221,1226,1231,1236,1240,1244],{"type":46,"tag":184,"props":1213,"children":1214},{"style":191},[1215],{"type":52,"value":194},{"type":46,"tag":184,"props":1217,"children":1218},{"style":197},[1219],{"type":52,"value":1220}," fleet",{"type":46,"tag":184,"props":1222,"children":1223},{"style":197},[1224],{"type":52,"value":1225}," tracers",{"type":46,"tag":184,"props":1227,"children":1228},{"style":197},[1229],{"type":52,"value":1230}," list",{"type":46,"tag":184,"props":1232,"children":1233},{"style":197},[1234],{"type":52,"value":1235}," --filter",{"type":46,"tag":184,"props":1237,"children":1238},{"style":229},[1239],{"type":52,"value":257},{"type":46,"tag":184,"props":1241,"children":1242},{"style":197},[1243],{"type":52,"value":1183},{"type":46,"tag":184,"props":1245,"children":1246},{"style":229},[1247],{"type":52,"value":1248},"\"\n",{"type":46,"tag":184,"props":1250,"children":1251},{"class":186,"line":319},[1252,1256,1261,1266,1270,1275,1280,1285,1290,1295,1300],{"type":46,"tag":184,"props":1253,"children":1254},{"style":191},[1255],{"type":52,"value":194},{"type":46,"tag":184,"props":1257,"children":1258},{"style":197},[1259],{"type":52,"value":1260}," apm",{"type":46,"tag":184,"props":1262,"children":1263},{"style":197},[1264],{"type":52,"value":1265}," troubleshooting",{"type":46,"tag":184,"props":1267,"children":1268},{"style":197},[1269],{"type":52,"value":1230},{"type":46,"tag":184,"props":1271,"children":1272},{"style":197},[1273],{"type":52,"value":1274}," --hostname",{"type":46,"tag":184,"props":1276,"children":1277},{"style":229},[1278],{"type":52,"value":1279}," \u003C",{"type":46,"tag":184,"props":1281,"children":1282},{"style":197},[1283],{"type":52,"value":1284},"NODE_HOSTNAM",{"type":46,"tag":184,"props":1286,"children":1287},{"style":332},[1288],{"type":52,"value":1289},"E",{"type":46,"tag":184,"props":1291,"children":1292},{"style":229},[1293],{"type":52,"value":1294},">",{"type":46,"tag":184,"props":1296,"children":1297},{"style":197},[1298],{"type":52,"value":1299}," --timeframe",{"type":46,"tag":184,"props":1301,"children":1302},{"style":197},[1303],{"type":52,"value":1304}," 1h\n",{"type":46,"tag":184,"props":1306,"children":1307},{"class":186,"line":328},[1308,1312,1316,1321,1326,1331,1335,1340,1344,1348,1353,1357,1362,1367],{"type":46,"tag":184,"props":1309,"children":1310},{"style":191},[1311],{"type":52,"value":194},{"type":46,"tag":184,"props":1313,"children":1314},{"style":197},[1315],{"type":52,"value":1260},{"type":46,"tag":184,"props":1317,"children":1318},{"style":197},[1319],{"type":52,"value":1320}," service-library-config",{"type":46,"tag":184,"props":1322,"children":1323},{"style":197},[1324],{"type":52,"value":1325}," get",{"type":46,"tag":184,"props":1327,"children":1328},{"style":197},[1329],{"type":52,"value":1330}," --service-name",{"type":46,"tag":184,"props":1332,"children":1333},{"style":229},[1334],{"type":52,"value":1279},{"type":46,"tag":184,"props":1336,"children":1337},{"style":197},[1338],{"type":52,"value":1339},"SERVICE_NAM",{"type":46,"tag":184,"props":1341,"children":1342},{"style":332},[1343],{"type":52,"value":1289},{"type":46,"tag":184,"props":1345,"children":1346},{"style":229},[1347],{"type":52,"value":1294},{"type":46,"tag":184,"props":1349,"children":1350},{"style":197},[1351],{"type":52,"value":1352}," --env",{"type":46,"tag":184,"props":1354,"children":1355},{"style":229},[1356],{"type":52,"value":1279},{"type":46,"tag":184,"props":1358,"children":1359},{"style":197},[1360],{"type":52,"value":1361},"EN",{"type":46,"tag":184,"props":1363,"children":1364},{"style":332},[1365],{"type":52,"value":1366},"V",{"type":46,"tag":184,"props":1368,"children":1369},{"style":229},[1370],{"type":52,"value":1371},">\n",{"type":46,"tag":184,"props":1373,"children":1374},{"class":186,"line":419},[1375,1379,1383,1388,1392,1397,1401,1405,1410,1414,1419,1423,1427],{"type":46,"tag":184,"props":1376,"children":1377},{"style":191},[1378],{"type":52,"value":946},{"type":46,"tag":184,"props":1380,"children":1381},{"style":197},[1382],{"type":52,"value":1325},{"type":46,"tag":184,"props":1384,"children":1385},{"style":197},[1386],{"type":52,"value":1387}," pod",{"type":46,"tag":184,"props":1389,"children":1390},{"style":229},[1391],{"type":52,"value":1279},{"type":46,"tag":184,"props":1393,"children":1394},{"style":197},[1395],{"type":52,"value":1396},"POD_NAM",{"type":46,"tag":184,"props":1398,"children":1399},{"style":332},[1400],{"type":52,"value":1289},{"type":46,"tag":184,"props":1402,"children":1403},{"style":229},[1404],{"type":52,"value":1294},{"type":46,"tag":184,"props":1406,"children":1407},{"style":197},[1408],{"type":52,"value":1409}," -n",{"type":46,"tag":184,"props":1411,"children":1412},{"style":229},[1413],{"type":52,"value":1279},{"type":46,"tag":184,"props":1415,"children":1416},{"style":197},[1417],{"type":52,"value":1418},"APP_NAMESPAC",{"type":46,"tag":184,"props":1420,"children":1421},{"style":332},[1422],{"type":52,"value":1289},{"type":46,"tag":184,"props":1424,"children":1425},{"style":229},[1426],{"type":52,"value":1294},{"type":46,"tag":184,"props":1428,"children":1429},{"style":332},[1430],{"type":52,"value":1431}," \\\n",{"type":46,"tag":184,"props":1433,"children":1434},{"class":186,"line":494},[1435,1440,1445,1449,1454],{"type":46,"tag":184,"props":1436,"children":1437},{"style":197},[1438],{"type":52,"value":1439},"  -o",{"type":46,"tag":184,"props":1441,"children":1442},{"style":197},[1443],{"type":52,"value":1444}," jsonpath=",{"type":46,"tag":184,"props":1446,"children":1447},{"style":229},[1448],{"type":52,"value":380},{"type":46,"tag":184,"props":1450,"children":1451},{"style":197},[1452],{"type":52,"value":1453},"{.spec.initContainers[*].name}",{"type":46,"tag":184,"props":1455,"children":1456},{"style":229},[1457],{"type":52,"value":1458},"'\n",{"type":46,"tag":184,"props":1460,"children":1461},{"class":186,"line":513},[1462,1466,1471,1475,1479,1483,1487,1491,1495,1499,1503,1507,1511,1515,1519,1524,1529,1533,1538],{"type":46,"tag":184,"props":1463,"children":1464},{"style":191},[1465],{"type":52,"value":946},{"type":46,"tag":184,"props":1467,"children":1468},{"style":197},[1469],{"type":52,"value":1470}," describe",{"type":46,"tag":184,"props":1472,"children":1473},{"style":197},[1474],{"type":52,"value":1387},{"type":46,"tag":184,"props":1476,"children":1477},{"style":229},[1478],{"type":52,"value":1279},{"type":46,"tag":184,"props":1480,"children":1481},{"style":197},[1482],{"type":52,"value":1396},{"type":46,"tag":184,"props":1484,"children":1485},{"style":332},[1486],{"type":52,"value":1289},{"type":46,"tag":184,"props":1488,"children":1489},{"style":229},[1490],{"type":52,"value":1294},{"type":46,"tag":184,"props":1492,"children":1493},{"style":197},[1494],{"type":52,"value":1409},{"type":46,"tag":184,"props":1496,"children":1497},{"style":229},[1498],{"type":52,"value":1279},{"type":46,"tag":184,"props":1500,"children":1501},{"style":197},[1502],{"type":52,"value":1418},{"type":46,"tag":184,"props":1504,"children":1505},{"style":332},[1506],{"type":52,"value":1289},{"type":46,"tag":184,"props":1508,"children":1509},{"style":229},[1510],{"type":52,"value":1294},{"type":46,"tag":184,"props":1512,"children":1513},{"style":229},[1514],{"type":52,"value":360},{"type":46,"tag":184,"props":1516,"children":1517},{"style":191},[1518],{"type":52,"value":365},{"type":46,"tag":184,"props":1520,"children":1521},{"style":197},[1522],{"type":52,"value":1523}," -A",{"type":46,"tag":184,"props":1525,"children":1526},{"style":1205},[1527],{"type":52,"value":1528}," 10",{"type":46,"tag":184,"props":1530,"children":1531},{"style":229},[1532],{"type":52,"value":257},{"type":46,"tag":184,"props":1534,"children":1535},{"style":197},[1536],{"type":52,"value":1537},"Events:",{"type":46,"tag":184,"props":1539,"children":1540},{"style":229},[1541],{"type":52,"value":1248},{"type":46,"tag":184,"props":1543,"children":1544},{"class":186,"line":522},[1545,1549,1553,1558,1562,1566],{"type":46,"tag":184,"props":1546,"children":1547},{"style":191},[1548],{"type":52,"value":946},{"type":46,"tag":184,"props":1550,"children":1551},{"style":197},[1552],{"type":52,"value":1325},{"type":46,"tag":184,"props":1554,"children":1555},{"style":197},[1556],{"type":52,"value":1557}," mutatingwebhookconfigurations",{"type":46,"tag":184,"props":1559,"children":1560},{"style":229},[1561],{"type":52,"value":360},{"type":46,"tag":184,"props":1563,"children":1564},{"style":191},[1565],{"type":52,"value":365},{"type":46,"tag":184,"props":1567,"children":1568},{"style":197},[1569],{"type":52,"value":1570}," datadog\n",{"type":46,"tag":62,"props":1572,"children":1573},{},[1574],{"type":52,"value":1575},"The last command confirms the Admission Controller webhook is registered cluster-wide — this is the precondition for SSI injection working at all and must be checked even when most other services are being instrumented (any deviation in one webhook config can silently skip a subset of pods).",{"type":46,"tag":62,"props":1577,"children":1578},{},[1579,1585,1587,1593,1595,1601,1603,1609],{"type":46,"tag":93,"props":1580,"children":1582},{"className":1581},[],[1583],{"type":52,"value":1584},"pup apm troubleshooting list",{"type":52,"value":1586}," surfaces injection errors that Datadog's backend received from the cluster — these point to cluster-side mutation failures that may not be visible from ",{"type":46,"tag":93,"props":1588,"children":1590},{"className":1589},[],[1591],{"type":52,"value":1592},"kubectl describe",{"type":52,"value":1594}," alone. ",{"type":46,"tag":93,"props":1596,"children":1598},{"className":1597},[],[1599],{"type":52,"value":1600},"pup apm service-library-config get",{"type":52,"value":1602}," shows the runtime SDK config the tracer is operating under; an empty result with ",{"type":46,"tag":93,"props":1604,"children":1606},{"className":1605},[],[1607],{"type":52,"value":1608},"ddTraceConfigs",{"type":52,"value":1610}," configured, or unexpected values, points to UST\u002Fconfig-propagation issues.",{"type":46,"tag":126,"props":1612,"children":1613},{},[],{"type":46,"tag":55,"props":1615,"children":1617},{"id":1616},"presenting-your-findings-required",[1618],{"type":52,"value":1619},"Presenting your findings (required)",{"type":46,"tag":62,"props":1621,"children":1622},{},[1623,1625,1630],{"type":52,"value":1624},"Your final response is the deliverable — not your investigation transcript. It must include ",{"type":46,"tag":858,"props":1626,"children":1627},{},[1628],{"type":52,"value":1629},"every diagnostic from this skill that you ran or that applies",{"type":52,"value":1631},", each with its purpose and what you found. Three failure modes to avoid:",{"type":46,"tag":68,"props":1633,"children":1634},{},[1635,1661,1732],{"type":46,"tag":72,"props":1636,"children":1637},{},[1638,1643,1645,1651,1653,1659],{"type":46,"tag":858,"props":1639,"children":1640},{},[1641],{"type":52,"value":1642},"Running a check but not reporting it.",{"type":52,"value":1644}," If you ran ",{"type":46,"tag":93,"props":1646,"children":1648},{"className":1647},[],[1649],{"type":52,"value":1650},"kubectl get mutatingwebhookconfigurations",{"type":52,"value":1652},", the namespace ",{"type":46,"tag":93,"props":1654,"children":1656},{"className":1655},[],[1657],{"type":52,"value":1658},"admission.datadoghq.com\u002Fmutate-pods",{"type":52,"value":1660}," label check, or any other command during investigation, state the command and its result in your response. A check you ran but didn't surface gives the reader nothing — and the namespace-label and webhook checks in particular must appear explicitly.",{"type":46,"tag":72,"props":1662,"children":1663},{},[1664,1669,1671,1696,1700,1702,1707,1709,1714,1716,1722,1724,1730],{"type":46,"tag":858,"props":1665,"children":1666},{},[1667],{"type":52,"value":1668},"Omitting the two required pup diagnostics.",{"type":52,"value":1670}," Every diagnosis must explicitly include these two commands, by name, for each affected service — they are mandatory triage output, not optional:",{"type":46,"tag":68,"props":1672,"children":1673},{},[1674,1685],{"type":46,"tag":72,"props":1675,"children":1676},{},[1677,1683],{"type":46,"tag":93,"props":1678,"children":1680},{"className":1679},[],[1681],{"type":52,"value":1682},"pup apm troubleshooting list --hostname \u003CNODE_HOSTNAME>",{"type":52,"value":1684}," — surfaces injection errors Datadog received from the node",{"type":46,"tag":72,"props":1686,"children":1687},{},[1688,1694],{"type":46,"tag":93,"props":1689,"children":1691},{"className":1690},[],[1692],{"type":52,"value":1693},"pup apm service-library-config get --service-name \u003CSERVICE_NAME> --env \u003CENV>",{"type":52,"value":1695}," — shows the tracer's runtime SDK config",{"type":46,"tag":1697,"props":1698,"children":1699},"br",{},[],{"type":52,"value":1701},"Run them if ",{"type":46,"tag":93,"props":1703,"children":1705},{"className":1704},[],[1706],{"type":52,"value":194},{"type":52,"value":1708}," is available; recommend them for the user to run if it isn't. Do ",{"type":46,"tag":858,"props":1710,"children":1711},{},[1712],{"type":52,"value":1713},"not",{"type":52,"value":1715}," substitute ",{"type":46,"tag":93,"props":1717,"children":1719},{"className":1718},[],[1720],{"type":52,"value":1721},"pup traces search",{"type":52,"value":1723}," for these — it is a different check and does not satisfy the runbook. If you don't know ",{"type":46,"tag":93,"props":1725,"children":1727},{"className":1726},[],[1728],{"type":52,"value":1729},"\u003CENV>",{"type":52,"value":1731},", state your assumed value and run the command anyway.",{"type":46,"tag":72,"props":1733,"children":1734},{},[1735,1740],{"type":46,"tag":858,"props":1736,"children":1737},{},[1738],{"type":52,"value":1739},"Stopping at the first root cause.",{"type":52,"value":1741}," When multiple services are affected, investigate and report each one independently — they may have different causes — and give per-service remediation.",{"type":46,"tag":126,"props":1743,"children":1744},{},[],{"type":46,"tag":55,"props":1746,"children":1748},{"id":1747},"step-2-state-your-hypotheses",[1749],{"type":52,"value":1750},"Step 2: State Your Hypotheses",{"type":46,"tag":62,"props":1752,"children":1753},{},[1754],{"type":52,"value":1755},"Before investigating, explicitly state your ranked hypotheses based on triage output. Do not skip this step.",{"type":46,"tag":62,"props":1757,"children":1758},{},[1759,1764],{"type":46,"tag":858,"props":1760,"children":1761},{},[1762],{"type":52,"value":1763},"When the user reports multiple affected services in the same namespace, diagnose each independently.",{"type":52,"value":1765}," Two pods can fail injection for entirely different reasons (one opt-out annotation, one missing namespace label, one with pre-existing ddtrace). Do not assume a shared root cause — investigate each service's pod spec, annotations, and runtime separately and surface findings per-service.",{"type":46,"tag":626,"props":1767,"children":1768},{},[1769,1785],{"type":46,"tag":630,"props":1770,"children":1771},{},[1772],{"type":46,"tag":634,"props":1773,"children":1774},{},[1775,1780],{"type":46,"tag":638,"props":1776,"children":1777},{},[1778],{"type":52,"value":1779},"Triage signal",{"type":46,"tag":638,"props":1781,"children":1782},{},[1783],{"type":52,"value":1784},"Strong hypothesis",{"type":46,"tag":649,"props":1786,"children":1787},{},[1788,1816,1837,1864,1877,1890],{"type":46,"tag":634,"props":1789,"children":1790},{},[1791,1796],{"type":46,"tag":656,"props":1792,"children":1793},{},[1794],{"type":52,"value":1795},"Traces arriving + service in tracers list",{"type":46,"tag":656,"props":1797,"children":1798},{},[1799,1801,1806,1808,1814],{"type":52,"value":1800},"Both signals are service-scoped, so on a partial rollout they can be positive while the specific pod the user named is uninstrumented. First confirm ",{"type":46,"tag":858,"props":1802,"children":1803},{},[1804],{"type":52,"value":1805},"this",{"type":52,"value":1807}," pod is instrumented (init container present in the triage kubectl check, or the ",{"type":46,"tag":93,"props":1809,"children":1811},{"className":1810},[],[1812],{"type":52,"value":1813},"admission.datadoghq.com\u002Fstatus: injected",{"type":52,"value":1815}," annotation). If it is, it's likely a UI filter or time window — tell the user and stop",{"type":46,"tag":634,"props":1817,"children":1818},{},[1819,1824],{"type":46,"tag":656,"props":1820,"children":1821},{},[1822],{"type":52,"value":1823},"No traces + no init container on this pod",{"type":46,"tag":656,"props":1825,"children":1826},{},[1827,1829,1835],{"type":52,"value":1828},"Injection never happened for this pod — investigate: namespace targeting, webhook, pod-selector, opt-out annotation, pod not restarted (partial rollout). The per-pod init-container check is authoritative: on a partial rollout the service can still appear in ",{"type":46,"tag":93,"props":1830,"children":1832},{"className":1831},[],[1833],{"type":52,"value":1834},"tracers list",{"type":52,"value":1836}," from other pods, so a service-scoped positive must not mask this pod being uninstrumented",{"type":46,"tag":634,"props":1838,"children":1839},{},[1840,1845],{"type":46,"tag":656,"props":1841,"children":1842},{},[1843],{"type":52,"value":1844},"No traces + service NOT in tracers list + init container present",{"type":46,"tag":656,"props":1846,"children":1847},{},[1848,1850,1855,1857,1862],{"type":52,"value":1849},"Tracer injected but not reporting — ",{"type":46,"tag":93,"props":1851,"children":1853},{"className":1852},[],[1854],{"type":52,"value":1834},{"type":52,"value":1856}," is telemetry-derived, so a correctly injected pod is absent when it can't report or hasn't yet. Investigate: Agent connectivity, DD_SITE mismatch, API key, blocked egress, or telemetry lag. (A true injection failure shows up as an ",{"type":46,"tag":1858,"props":1859,"children":1860},"em",{},[1861],{"type":52,"value":1086},{"type":52,"value":1863}," init container or as init-container errors — the CrashLoopBackOff row below — not here.)",{"type":46,"tag":634,"props":1865,"children":1866},{},[1867,1872],{"type":46,"tag":656,"props":1868,"children":1869},{},[1870],{"type":52,"value":1871},"No traces + service in tracers list + init container present",{"type":46,"tag":656,"props":1873,"children":1874},{},[1875],{"type":52,"value":1876},"Tracer is reporting telemetry (so Agent connectivity, API key, and DD_SITE are working) but spans aren't arriving — investigate trace-specific causes: no traffic \u002F the app isn't serving requests yet, sampling rules, an ingestion\u002Fretention filter, or the trace-agent receiver",{"type":46,"tag":634,"props":1878,"children":1879},{},[1880,1885],{"type":46,"tag":656,"props":1881,"children":1882},{},[1883],{"type":52,"value":1884},"Pod events show CrashLoopBackOff or init container errors",{"type":46,"tag":656,"props":1886,"children":1887},{},[1888],{"type":52,"value":1889},"Init container failure — check existing ddtrace, runtime version",{"type":46,"tag":634,"props":1891,"children":1892},{},[1893,1898],{"type":46,"tag":656,"props":1894,"children":1895},{},[1896],{"type":52,"value":1897},"Traces arriving but wrong service\u002Fenv",{"type":46,"tag":656,"props":1899,"children":1900},{},[1901],{"type":52,"value":1902},"UST labels missing or misconfigured on the Deployment",{"type":46,"tag":62,"props":1904,"children":1905},{},[1906,1908],{"type":52,"value":1907},"State your top 1-3 hypotheses explicitly: ",{"type":46,"tag":1858,"props":1909,"children":1910},{},[1911],{"type":52,"value":1912},"\"Based on triage, I think the most likely cause is X because Y.\"",{"type":46,"tag":126,"props":1914,"children":1915},{},[],{"type":46,"tag":55,"props":1917,"children":1919},{"id":1918},"step-3-investigate",[1920],{"type":52,"value":1921},"Step 3: Investigate",{"type":46,"tag":62,"props":1923,"children":1924},{},[1925],{"type":52,"value":1926},"Use only the tools relevant to your hypotheses. Each observation informs your next action.",{"type":46,"tag":126,"props":1928,"children":1929},{},[],{"type":46,"tag":160,"props":1931,"children":1933},{"id":1932},"cluster-side-investigation-tools",[1934],{"type":52,"value":1935},"Cluster-side investigation tools",{"type":46,"tag":62,"props":1937,"children":1938},{},[1939,1944],{"type":46,"tag":858,"props":1940,"children":1941},{},[1942],{"type":52,"value":1943},"Is the pod in the Agent namespace?",{"type":52,"value":1945},"\nSSI never instruments pods in the same namespace as the Datadog Agent.",{"type":46,"tag":173,"props":1947,"children":1949},{"className":175,"code":1948,"language":177,"meta":178,"style":178},"kubectl get pods -n \u003CAGENT_NAMESPACE>\n",[1950],{"type":46,"tag":93,"props":1951,"children":1952},{"__ignoreMap":178},[1953],{"type":46,"tag":184,"props":1954,"children":1955},{"class":186,"line":187},[1956,1960,1964,1969,1973,1977,1982,1986],{"type":46,"tag":184,"props":1957,"children":1958},{"style":191},[1959],{"type":52,"value":946},{"type":46,"tag":184,"props":1961,"children":1962},{"style":197},[1963],{"type":52,"value":1325},{"type":46,"tag":184,"props":1965,"children":1966},{"style":197},[1967],{"type":52,"value":1968}," pods",{"type":46,"tag":184,"props":1970,"children":1971},{"style":197},[1972],{"type":52,"value":1409},{"type":46,"tag":184,"props":1974,"children":1975},{"style":229},[1976],{"type":52,"value":1279},{"type":46,"tag":184,"props":1978,"children":1979},{"style":197},[1980],{"type":52,"value":1981},"AGENT_NAMESPAC",{"type":46,"tag":184,"props":1983,"children":1984},{"style":332},[1985],{"type":52,"value":1289},{"type":46,"tag":184,"props":1987,"children":1988},{"style":229},[1989],{"type":52,"value":1371},{"type":46,"tag":62,"props":1991,"children":1992},{},[1993],{"type":46,"tag":858,"props":1994,"children":1995},{},[1996],{"type":52,"value":1997},"Were pods restarted after SSI was enabled?",{"type":46,"tag":595,"props":1999,"children":2000},{},[2001],{"type":46,"tag":62,"props":2002,"children":2003},{},[2004,2009,2011,2017,2018,2024],{"type":46,"tag":858,"props":2005,"children":2006},{},[2007],{"type":52,"value":2008},"Confirm with the user before restarting.",{"type":52,"value":2010}," Tell the user: \"Pods must be restarted for SSI to inject into them. I'll restart ",{"type":46,"tag":93,"props":2012,"children":2014},{"className":2013},[],[2015],{"type":52,"value":2016},"\u003CDEPLOYMENT_NAME>",{"type":52,"value":716},{"type":46,"tag":93,"props":2019,"children":2021},{"className":2020},[],[2022],{"type":52,"value":2023},"\u003CAPP_NAMESPACE>",{"type":52,"value":2025},". Ready to proceed?\" Wait for confirmation.",{"type":46,"tag":160,"props":2027,"children":2029},{"id":2028},"claude-runs-4",[2030],{"type":52,"value":171},{"type":46,"tag":173,"props":2032,"children":2034},{"className":175,"code":2033,"language":177,"meta":178,"style":178},"kubectl rollout restart deployment\u002F\u003CDEPLOYMENT_NAME> -n \u003CAPP_NAMESPACE>\nkubectl wait --for=condition=Ready pod -l app=\u003CAPP_LABEL> -n \u003CAPP_NAMESPACE> --timeout=120s\n",[2035],{"type":46,"tag":93,"props":2036,"children":2037},{"__ignoreMap":178},[2038,2098],{"type":46,"tag":184,"props":2039,"children":2040},{"class":186,"line":187},[2041,2045,2050,2055,2060,2065,2070,2074,2078,2082,2086,2090,2094],{"type":46,"tag":184,"props":2042,"children":2043},{"style":191},[2044],{"type":52,"value":946},{"type":46,"tag":184,"props":2046,"children":2047},{"style":197},[2048],{"type":52,"value":2049}," rollout",{"type":46,"tag":184,"props":2051,"children":2052},{"style":197},[2053],{"type":52,"value":2054}," restart",{"type":46,"tag":184,"props":2056,"children":2057},{"style":197},[2058],{"type":52,"value":2059}," deployment\u002F",{"type":46,"tag":184,"props":2061,"children":2062},{"style":229},[2063],{"type":52,"value":2064},"\u003C",{"type":46,"tag":184,"props":2066,"children":2067},{"style":197},[2068],{"type":52,"value":2069},"DEPLOYMENT_NAM",{"type":46,"tag":184,"props":2071,"children":2072},{"style":332},[2073],{"type":52,"value":1289},{"type":46,"tag":184,"props":2075,"children":2076},{"style":229},[2077],{"type":52,"value":1294},{"type":46,"tag":184,"props":2079,"children":2080},{"style":197},[2081],{"type":52,"value":1409},{"type":46,"tag":184,"props":2083,"children":2084},{"style":229},[2085],{"type":52,"value":1279},{"type":46,"tag":184,"props":2087,"children":2088},{"style":197},[2089],{"type":52,"value":1418},{"type":46,"tag":184,"props":2091,"children":2092},{"style":332},[2093],{"type":52,"value":1289},{"type":46,"tag":184,"props":2095,"children":2096},{"style":229},[2097],{"type":52,"value":1371},{"type":46,"tag":184,"props":2099,"children":2100},{"class":186,"line":280},[2101,2105,2110,2115,2119,2124,2129,2133,2138,2143,2147,2151,2155,2159,2163,2167],{"type":46,"tag":184,"props":2102,"children":2103},{"style":191},[2104],{"type":52,"value":946},{"type":46,"tag":184,"props":2106,"children":2107},{"style":197},[2108],{"type":52,"value":2109}," wait",{"type":46,"tag":184,"props":2111,"children":2112},{"style":197},[2113],{"type":52,"value":2114}," --for=condition=Ready",{"type":46,"tag":184,"props":2116,"children":2117},{"style":197},[2118],{"type":52,"value":1387},{"type":46,"tag":184,"props":2120,"children":2121},{"style":197},[2122],{"type":52,"value":2123}," -l",{"type":46,"tag":184,"props":2125,"children":2126},{"style":197},[2127],{"type":52,"value":2128}," app=",{"type":46,"tag":184,"props":2130,"children":2131},{"style":229},[2132],{"type":52,"value":2064},{"type":46,"tag":184,"props":2134,"children":2135},{"style":197},[2136],{"type":52,"value":2137},"APP_LABE",{"type":46,"tag":184,"props":2139,"children":2140},{"style":332},[2141],{"type":52,"value":2142},"L",{"type":46,"tag":184,"props":2144,"children":2145},{"style":229},[2146],{"type":52,"value":1294},{"type":46,"tag":184,"props":2148,"children":2149},{"style":197},[2150],{"type":52,"value":1409},{"type":46,"tag":184,"props":2152,"children":2153},{"style":229},[2154],{"type":52,"value":1279},{"type":46,"tag":184,"props":2156,"children":2157},{"style":197},[2158],{"type":52,"value":1418},{"type":46,"tag":184,"props":2160,"children":2161},{"style":332},[2162],{"type":52,"value":1289},{"type":46,"tag":184,"props":2164,"children":2165},{"style":229},[2166],{"type":52,"value":1294},{"type":46,"tag":184,"props":2168,"children":2169},{"style":197},[2170],{"type":52,"value":2171}," --timeout=120s\n",{"type":46,"tag":160,"props":2173,"children":2175},{"id":2174},"claude-runs-5",[2176],{"type":52,"value":171},{"type":46,"tag":173,"props":2178,"children":2180},{"className":175,"code":2179,"language":177,"meta":178,"style":178},"# Primary — authoritative and immediate: confirm the freshly-restarted pods carry the init container.\n# Label-scoped, not by \u003CPOD_NAME>: a rolling restart replaces the old pod with new-suffixed ones.\nkubectl get pod -l app=\u003CAPP_LABEL> -n \u003CAPP_NAMESPACE> \\\n  -o jsonpath='{.items[0].spec.initContainers[*].name}'\n# Secondary — eventual: the service reappears here once the restarted pod reports telemetry\n# (subject to a propagation delay of a minute or more, and only if the pod serves traffic)\npup fleet tracers list --filter \"service:\u003CSERVICE_NAME>\"\n",[2181],{"type":46,"tag":93,"props":2182,"children":2183},{"__ignoreMap":178},[2184,2193,2201,2264,2288,2296,2304],{"type":46,"tag":184,"props":2185,"children":2186},{"class":186,"line":187},[2187],{"type":46,"tag":184,"props":2188,"children":2190},{"style":2189},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[2191],{"type":52,"value":2192},"# Primary — authoritative and immediate: confirm the freshly-restarted pods carry the init container.\n",{"type":46,"tag":184,"props":2194,"children":2195},{"class":186,"line":280},[2196],{"type":46,"tag":184,"props":2197,"children":2198},{"style":2189},[2199],{"type":52,"value":2200},"# Label-scoped, not by \u003CPOD_NAME>: a rolling restart replaces the old pod with new-suffixed ones.\n",{"type":46,"tag":184,"props":2202,"children":2203},{"class":186,"line":319},[2204,2208,2212,2216,2220,2224,2228,2232,2236,2240,2244,2248,2252,2256,2260],{"type":46,"tag":184,"props":2205,"children":2206},{"style":191},[2207],{"type":52,"value":946},{"type":46,"tag":184,"props":2209,"children":2210},{"style":197},[2211],{"type":52,"value":1325},{"type":46,"tag":184,"props":2213,"children":2214},{"style":197},[2215],{"type":52,"value":1387},{"type":46,"tag":184,"props":2217,"children":2218},{"style":197},[2219],{"type":52,"value":2123},{"type":46,"tag":184,"props":2221,"children":2222},{"style":197},[2223],{"type":52,"value":2128},{"type":46,"tag":184,"props":2225,"children":2226},{"style":229},[2227],{"type":52,"value":2064},{"type":46,"tag":184,"props":2229,"children":2230},{"style":197},[2231],{"type":52,"value":2137},{"type":46,"tag":184,"props":2233,"children":2234},{"style":332},[2235],{"type":52,"value":2142},{"type":46,"tag":184,"props":2237,"children":2238},{"style":229},[2239],{"type":52,"value":1294},{"type":46,"tag":184,"props":2241,"children":2242},{"style":197},[2243],{"type":52,"value":1409},{"type":46,"tag":184,"props":2245,"children":2246},{"style":229},[2247],{"type":52,"value":1279},{"type":46,"tag":184,"props":2249,"children":2250},{"style":197},[2251],{"type":52,"value":1418},{"type":46,"tag":184,"props":2253,"children":2254},{"style":332},[2255],{"type":52,"value":1289},{"type":46,"tag":184,"props":2257,"children":2258},{"style":229},[2259],{"type":52,"value":1294},{"type":46,"tag":184,"props":2261,"children":2262},{"style":332},[2263],{"type":52,"value":1431},{"type":46,"tag":184,"props":2265,"children":2266},{"class":186,"line":328},[2267,2271,2275,2279,2284],{"type":46,"tag":184,"props":2268,"children":2269},{"style":197},[2270],{"type":52,"value":1439},{"type":46,"tag":184,"props":2272,"children":2273},{"style":197},[2274],{"type":52,"value":1444},{"type":46,"tag":184,"props":2276,"children":2277},{"style":229},[2278],{"type":52,"value":380},{"type":46,"tag":184,"props":2280,"children":2281},{"style":197},[2282],{"type":52,"value":2283},"{.items[0].spec.initContainers[*].name}",{"type":46,"tag":184,"props":2285,"children":2286},{"style":229},[2287],{"type":52,"value":1458},{"type":46,"tag":184,"props":2289,"children":2290},{"class":186,"line":419},[2291],{"type":46,"tag":184,"props":2292,"children":2293},{"style":2189},[2294],{"type":52,"value":2295},"# Secondary — eventual: the service reappears here once the restarted pod reports telemetry\n",{"type":46,"tag":184,"props":2297,"children":2298},{"class":186,"line":494},[2299],{"type":46,"tag":184,"props":2300,"children":2301},{"style":2189},[2302],{"type":52,"value":2303},"# (subject to a propagation delay of a minute or more, and only if the pod serves traffic)\n",{"type":46,"tag":184,"props":2305,"children":2306},{"class":186,"line":513},[2307,2311,2315,2319,2323,2327,2331,2335],{"type":46,"tag":184,"props":2308,"children":2309},{"style":191},[2310],{"type":52,"value":194},{"type":46,"tag":184,"props":2312,"children":2313},{"style":197},[2314],{"type":52,"value":1220},{"type":46,"tag":184,"props":2316,"children":2317},{"style":197},[2318],{"type":52,"value":1225},{"type":46,"tag":184,"props":2320,"children":2321},{"style":197},[2322],{"type":52,"value":1230},{"type":46,"tag":184,"props":2324,"children":2325},{"style":197},[2326],{"type":52,"value":1235},{"type":46,"tag":184,"props":2328,"children":2329},{"style":229},[2330],{"type":52,"value":257},{"type":46,"tag":184,"props":2332,"children":2333},{"style":197},[2334],{"type":52,"value":1183},{"type":46,"tag":184,"props":2336,"children":2337},{"style":229},[2338],{"type":52,"value":1248},{"type":46,"tag":62,"props":2340,"children":2341},{},[2342,2344,2349],{"type":52,"value":2343},"The kubectl init-container check is the authoritative post-restart signal — the pod is injected the moment that init container appears. ",{"type":46,"tag":93,"props":2345,"children":2347},{"className":2346},[],[2348],{"type":52,"value":1834},{"type":52,"value":2350}," is telemetry-derived and lags, so don't read an empty result immediately after a restart as \"injection didn't happen.\"",{"type":46,"tag":62,"props":2352,"children":2353},{},[2354,2359,2361,2367,2369,2375],{"type":46,"tag":858,"props":2355,"children":2356},{},[2357],{"type":52,"value":2358},"Does the namespace carry the Admission Controller opt-in label?",{"type":52,"value":2360},"\nWhen the Admission Controller runs with ",{"type":46,"tag":93,"props":2362,"children":2364},{"className":2363},[],[2365],{"type":52,"value":2366},"mutateUnlabelled: false",{"type":52,"value":2368},", injection happens only in namespaces explicitly labeled ",{"type":46,"tag":93,"props":2370,"children":2372},{"className":2371},[],[2373],{"type":52,"value":2374},"admission.datadoghq.com\u002Fmutate-pods=true",{"type":52,"value":2376},". A namespace missing this label silently has SSI skipped for every pod in it — a common cause when most cluster services are instrumented but one namespace's services aren't.",{"type":46,"tag":173,"props":2378,"children":2380},{"className":175,"code":2379,"language":177,"meta":178,"style":178},"kubectl get namespace \u003CAPP_NAMESPACE> -o jsonpath='{.metadata.labels}'\nkubectl get namespace \u003CAPP_NAMESPACE> --show-labels\n",[2381],{"type":46,"tag":93,"props":2382,"children":2383},{"__ignoreMap":178},[2384,2438],{"type":46,"tag":184,"props":2385,"children":2386},{"class":186,"line":187},[2387,2391,2395,2400,2404,2408,2412,2416,2421,2425,2429,2434],{"type":46,"tag":184,"props":2388,"children":2389},{"style":191},[2390],{"type":52,"value":946},{"type":46,"tag":184,"props":2392,"children":2393},{"style":197},[2394],{"type":52,"value":1325},{"type":46,"tag":184,"props":2396,"children":2397},{"style":197},[2398],{"type":52,"value":2399}," namespace",{"type":46,"tag":184,"props":2401,"children":2402},{"style":229},[2403],{"type":52,"value":1279},{"type":46,"tag":184,"props":2405,"children":2406},{"style":197},[2407],{"type":52,"value":1418},{"type":46,"tag":184,"props":2409,"children":2410},{"style":332},[2411],{"type":52,"value":1289},{"type":46,"tag":184,"props":2413,"children":2414},{"style":229},[2415],{"type":52,"value":1294},{"type":46,"tag":184,"props":2417,"children":2418},{"style":197},[2419],{"type":52,"value":2420}," -o",{"type":46,"tag":184,"props":2422,"children":2423},{"style":197},[2424],{"type":52,"value":1444},{"type":46,"tag":184,"props":2426,"children":2427},{"style":229},[2428],{"type":52,"value":380},{"type":46,"tag":184,"props":2430,"children":2431},{"style":197},[2432],{"type":52,"value":2433},"{.metadata.labels}",{"type":46,"tag":184,"props":2435,"children":2436},{"style":229},[2437],{"type":52,"value":1458},{"type":46,"tag":184,"props":2439,"children":2440},{"class":186,"line":280},[2441,2445,2449,2453,2457,2461,2465,2469],{"type":46,"tag":184,"props":2442,"children":2443},{"style":191},[2444],{"type":52,"value":946},{"type":46,"tag":184,"props":2446,"children":2447},{"style":197},[2448],{"type":52,"value":1325},{"type":46,"tag":184,"props":2450,"children":2451},{"style":197},[2452],{"type":52,"value":2399},{"type":46,"tag":184,"props":2454,"children":2455},{"style":229},[2456],{"type":52,"value":1279},{"type":46,"tag":184,"props":2458,"children":2459},{"style":197},[2460],{"type":52,"value":1418},{"type":46,"tag":184,"props":2462,"children":2463},{"style":332},[2464],{"type":52,"value":1289},{"type":46,"tag":184,"props":2466,"children":2467},{"style":229},[2468],{"type":52,"value":1294},{"type":46,"tag":184,"props":2470,"children":2471},{"style":197},[2472],{"type":52,"value":2473}," --show-labels\n",{"type":46,"tag":62,"props":2475,"children":2476},{},[2477],{"type":52,"value":2478},"Fix: label the namespace, then restart the affected deployments so the AC mutates them on pod recreate.",{"type":46,"tag":173,"props":2480,"children":2482},{"className":175,"code":2481,"language":177,"meta":178,"style":178},"kubectl label namespace \u003CAPP_NAMESPACE> admission.datadoghq.com\u002Fmutate-pods=true\n",[2483],{"type":46,"tag":93,"props":2484,"children":2485},{"__ignoreMap":178},[2486],{"type":46,"tag":184,"props":2487,"children":2488},{"class":186,"line":187},[2489,2493,2498,2502,2506,2510,2514,2518,2523],{"type":46,"tag":184,"props":2490,"children":2491},{"style":191},[2492],{"type":52,"value":946},{"type":46,"tag":184,"props":2494,"children":2495},{"style":197},[2496],{"type":52,"value":2497}," label",{"type":46,"tag":184,"props":2499,"children":2500},{"style":197},[2501],{"type":52,"value":2399},{"type":46,"tag":184,"props":2503,"children":2504},{"style":229},[2505],{"type":52,"value":1279},{"type":46,"tag":184,"props":2507,"children":2508},{"style":197},[2509],{"type":52,"value":1418},{"type":46,"tag":184,"props":2511,"children":2512},{"style":332},[2513],{"type":52,"value":1289},{"type":46,"tag":184,"props":2515,"children":2516},{"style":229},[2517],{"type":52,"value":1294},{"type":46,"tag":184,"props":2519,"children":2520},{"style":197},[2521],{"type":52,"value":2522}," admission.datadoghq.com\u002Fmutate-pods=",{"type":46,"tag":184,"props":2524,"children":2525},{"style":229},[2526],{"type":52,"value":2527},"true\n",{"type":46,"tag":62,"props":2529,"children":2530},{},[2531],{"type":46,"tag":858,"props":2532,"children":2533},{},[2534],{"type":52,"value":2535},"Is namespace targeting filtering the pod out?",{"type":46,"tag":173,"props":2537,"children":2539},{"className":175,"code":2538,"language":177,"meta":178,"style":178},"kubectl get datadogagent datadog -n \u003CAGENT_NAMESPACE> -o yaml | grep -A 15 instrumentation\n",[2540],{"type":46,"tag":93,"props":2541,"children":2542},{"__ignoreMap":178},[2543],{"type":46,"tag":184,"props":2544,"children":2545},{"class":186,"line":187},[2546,2550,2554,2559,2564,2568,2572,2576,2580,2584,2588,2593,2597,2601,2605,2610],{"type":46,"tag":184,"props":2547,"children":2548},{"style":191},[2549],{"type":52,"value":946},{"type":46,"tag":184,"props":2551,"children":2552},{"style":197},[2553],{"type":52,"value":1325},{"type":46,"tag":184,"props":2555,"children":2556},{"style":197},[2557],{"type":52,"value":2558}," datadogagent",{"type":46,"tag":184,"props":2560,"children":2561},{"style":197},[2562],{"type":52,"value":2563}," datadog",{"type":46,"tag":184,"props":2565,"children":2566},{"style":197},[2567],{"type":52,"value":1409},{"type":46,"tag":184,"props":2569,"children":2570},{"style":229},[2571],{"type":52,"value":1279},{"type":46,"tag":184,"props":2573,"children":2574},{"style":197},[2575],{"type":52,"value":1981},{"type":46,"tag":184,"props":2577,"children":2578},{"style":332},[2579],{"type":52,"value":1289},{"type":46,"tag":184,"props":2581,"children":2582},{"style":229},[2583],{"type":52,"value":1294},{"type":46,"tag":184,"props":2585,"children":2586},{"style":197},[2587],{"type":52,"value":2420},{"type":46,"tag":184,"props":2589,"children":2590},{"style":197},[2591],{"type":52,"value":2592}," yaml",{"type":46,"tag":184,"props":2594,"children":2595},{"style":229},[2596],{"type":52,"value":360},{"type":46,"tag":184,"props":2598,"children":2599},{"style":191},[2600],{"type":52,"value":365},{"type":46,"tag":184,"props":2602,"children":2603},{"style":197},[2604],{"type":52,"value":1523},{"type":46,"tag":184,"props":2606,"children":2607},{"style":1205},[2608],{"type":52,"value":2609}," 15",{"type":46,"tag":184,"props":2611,"children":2612},{"style":197},[2613],{"type":52,"value":2614}," instrumentation\n",{"type":46,"tag":62,"props":2616,"children":2617},{},[2618,2620,2626,2627,2632],{"type":52,"value":2619},"Fix: update ",{"type":46,"tag":93,"props":2621,"children":2623},{"className":2622},[],[2624],{"type":52,"value":2625},"enabledNamespaces",{"type":52,"value":716},{"type":46,"tag":93,"props":2628,"children":2630},{"className":2629},[],[2631],{"type":52,"value":722},{"type":52,"value":615},{"type":46,"tag":160,"props":2634,"children":2636},{"id":2635},"claude-runs-6",[2637],{"type":52,"value":171},{"type":46,"tag":173,"props":2639,"children":2641},{"className":175,"code":2640,"language":177,"meta":178,"style":178},"kubectl apply -f datadog-agent.yaml\n",[2642],{"type":46,"tag":93,"props":2643,"children":2644},{"__ignoreMap":178},[2645],{"type":46,"tag":184,"props":2646,"children":2647},{"class":186,"line":187},[2648,2652,2657,2662],{"type":46,"tag":184,"props":2649,"children":2650},{"style":191},[2651],{"type":52,"value":946},{"type":46,"tag":184,"props":2653,"children":2654},{"style":197},[2655],{"type":52,"value":2656}," apply",{"type":46,"tag":184,"props":2658,"children":2659},{"style":197},[2660],{"type":52,"value":2661}," -f",{"type":46,"tag":184,"props":2663,"children":2664},{"style":197},[2665],{"type":52,"value":2666}," datadog-agent.yaml\n",{"type":46,"tag":62,"props":2668,"children":2669},{},[2670,2683,2685,2691,2693,2698],{"type":46,"tag":858,"props":2671,"children":2672},{},[2673,2675,2681],{"type":52,"value":2674},"Is a ",{"type":46,"tag":93,"props":2676,"children":2678},{"className":2677},[],[2679],{"type":52,"value":2680},"podSelector",{"type":52,"value":2682}," target filtering the pod out?",{"type":52,"value":2684},"\nIf ",{"type":46,"tag":93,"props":2686,"children":2688},{"className":2687},[],[2689],{"type":52,"value":2690},"targets",{"type":52,"value":2692}," with ",{"type":46,"tag":93,"props":2694,"children":2696},{"className":2695},[],[2697],{"type":52,"value":2680},{"type":52,"value":2699}," is configured, only pods whose labels match the selector are instrumented. Check whether the app pod's labels match any target:",{"type":46,"tag":173,"props":2701,"children":2703},{"className":175,"code":2702,"language":177,"meta":178,"style":178},"kubectl get datadogagent datadog -n \u003CAGENT_NAMESPACE> -o yaml | grep -A 20 targets\nkubectl get pod \u003CPOD_NAME> -n \u003CAPP_NAMESPACE> --show-labels\n",[2704],{"type":46,"tag":93,"props":2705,"children":2706},{"__ignoreMap":178},[2707,2776],{"type":46,"tag":184,"props":2708,"children":2709},{"class":186,"line":187},[2710,2714,2718,2722,2726,2730,2734,2738,2742,2746,2750,2754,2758,2762,2766,2771],{"type":46,"tag":184,"props":2711,"children":2712},{"style":191},[2713],{"type":52,"value":946},{"type":46,"tag":184,"props":2715,"children":2716},{"style":197},[2717],{"type":52,"value":1325},{"type":46,"tag":184,"props":2719,"children":2720},{"style":197},[2721],{"type":52,"value":2558},{"type":46,"tag":184,"props":2723,"children":2724},{"style":197},[2725],{"type":52,"value":2563},{"type":46,"tag":184,"props":2727,"children":2728},{"style":197},[2729],{"type":52,"value":1409},{"type":46,"tag":184,"props":2731,"children":2732},{"style":229},[2733],{"type":52,"value":1279},{"type":46,"tag":184,"props":2735,"children":2736},{"style":197},[2737],{"type":52,"value":1981},{"type":46,"tag":184,"props":2739,"children":2740},{"style":332},[2741],{"type":52,"value":1289},{"type":46,"tag":184,"props":2743,"children":2744},{"style":229},[2745],{"type":52,"value":1294},{"type":46,"tag":184,"props":2747,"children":2748},{"style":197},[2749],{"type":52,"value":2420},{"type":46,"tag":184,"props":2751,"children":2752},{"style":197},[2753],{"type":52,"value":2592},{"type":46,"tag":184,"props":2755,"children":2756},{"style":229},[2757],{"type":52,"value":360},{"type":46,"tag":184,"props":2759,"children":2760},{"style":191},[2761],{"type":52,"value":365},{"type":46,"tag":184,"props":2763,"children":2764},{"style":197},[2765],{"type":52,"value":1523},{"type":46,"tag":184,"props":2767,"children":2768},{"style":1205},[2769],{"type":52,"value":2770}," 20",{"type":46,"tag":184,"props":2772,"children":2773},{"style":197},[2774],{"type":52,"value":2775}," targets\n",{"type":46,"tag":184,"props":2777,"children":2778},{"class":186,"line":280},[2779,2783,2787,2791,2795,2799,2803,2807,2811,2815,2819,2823,2827],{"type":46,"tag":184,"props":2780,"children":2781},{"style":191},[2782],{"type":52,"value":946},{"type":46,"tag":184,"props":2784,"children":2785},{"style":197},[2786],{"type":52,"value":1325},{"type":46,"tag":184,"props":2788,"children":2789},{"style":197},[2790],{"type":52,"value":1387},{"type":46,"tag":184,"props":2792,"children":2793},{"style":229},[2794],{"type":52,"value":1279},{"type":46,"tag":184,"props":2796,"children":2797},{"style":197},[2798],{"type":52,"value":1396},{"type":46,"tag":184,"props":2800,"children":2801},{"style":332},[2802],{"type":52,"value":1289},{"type":46,"tag":184,"props":2804,"children":2805},{"style":229},[2806],{"type":52,"value":1294},{"type":46,"tag":184,"props":2808,"children":2809},{"style":197},[2810],{"type":52,"value":1409},{"type":46,"tag":184,"props":2812,"children":2813},{"style":229},[2814],{"type":52,"value":1279},{"type":46,"tag":184,"props":2816,"children":2817},{"style":197},[2818],{"type":52,"value":1418},{"type":46,"tag":184,"props":2820,"children":2821},{"style":332},[2822],{"type":52,"value":1289},{"type":46,"tag":184,"props":2824,"children":2825},{"style":229},[2826],{"type":52,"value":1294},{"type":46,"tag":184,"props":2828,"children":2829},{"style":197},[2830],{"type":52,"value":2473},{"type":46,"tag":62,"props":2832,"children":2833},{},[2834,2836,2841],{"type":52,"value":2835},"Fix: add a matching label to the pod template, or broaden the ",{"type":46,"tag":93,"props":2837,"children":2839},{"className":2838},[],[2840],{"type":52,"value":2680},{"type":52,"value":2842},", then apply and restart.",{"type":46,"tag":62,"props":2844,"children":2845},{},[2846,2851],{"type":46,"tag":858,"props":2847,"children":2848},{},[2849],{"type":52,"value":2850},"Is a pod annotation opting it out — or missing the AC's injection-success annotation?",{"type":52,"value":2852},"\nTwo annotations to look for:",{"type":46,"tag":68,"props":2854,"children":2855},{},[2856,2866],{"type":46,"tag":72,"props":2857,"children":2858},{},[2859,2864],{"type":46,"tag":93,"props":2860,"children":2862},{"className":2861},[],[2863],{"type":52,"value":1029},{"type":52,"value":2865}," — explicit opt-out, AC skips the pod.",{"type":46,"tag":72,"props":2867,"children":2868},{},[2869,2874,2876,2881],{"type":46,"tag":93,"props":2870,"children":2872},{"className":2871},[],[2873],{"type":52,"value":1813},{"type":52,"value":2875}," — set by the AC after successful mutation; its ",{"type":46,"tag":858,"props":2877,"children":2878},{},[2879],{"type":52,"value":2880},"absence",{"type":52,"value":2882}," on a running pod is positive evidence the AC never mutated it.",{"type":46,"tag":173,"props":2884,"children":2886},{"className":175,"code":2885,"language":177,"meta":178,"style":178},"kubectl get pod \u003CPOD_NAME> -n \u003CAPP_NAMESPACE> -o jsonpath='{.metadata.annotations}'\nkubectl get pod \u003CPOD_NAME> -n \u003CAPP_NAMESPACE> -o yaml | grep -A 10 annotations\n",[2887],{"type":46,"tag":93,"props":2888,"children":2889},{"__ignoreMap":178},[2890,2962],{"type":46,"tag":184,"props":2891,"children":2892},{"class":186,"line":187},[2893,2897,2901,2905,2909,2913,2917,2921,2925,2929,2933,2937,2941,2945,2949,2953,2958],{"type":46,"tag":184,"props":2894,"children":2895},{"style":191},[2896],{"type":52,"value":946},{"type":46,"tag":184,"props":2898,"children":2899},{"style":197},[2900],{"type":52,"value":1325},{"type":46,"tag":184,"props":2902,"children":2903},{"style":197},[2904],{"type":52,"value":1387},{"type":46,"tag":184,"props":2906,"children":2907},{"style":229},[2908],{"type":52,"value":1279},{"type":46,"tag":184,"props":2910,"children":2911},{"style":197},[2912],{"type":52,"value":1396},{"type":46,"tag":184,"props":2914,"children":2915},{"style":332},[2916],{"type":52,"value":1289},{"type":46,"tag":184,"props":2918,"children":2919},{"style":229},[2920],{"type":52,"value":1294},{"type":46,"tag":184,"props":2922,"children":2923},{"style":197},[2924],{"type":52,"value":1409},{"type":46,"tag":184,"props":2926,"children":2927},{"style":229},[2928],{"type":52,"value":1279},{"type":46,"tag":184,"props":2930,"children":2931},{"style":197},[2932],{"type":52,"value":1418},{"type":46,"tag":184,"props":2934,"children":2935},{"style":332},[2936],{"type":52,"value":1289},{"type":46,"tag":184,"props":2938,"children":2939},{"style":229},[2940],{"type":52,"value":1294},{"type":46,"tag":184,"props":2942,"children":2943},{"style":197},[2944],{"type":52,"value":2420},{"type":46,"tag":184,"props":2946,"children":2947},{"style":197},[2948],{"type":52,"value":1444},{"type":46,"tag":184,"props":2950,"children":2951},{"style":229},[2952],{"type":52,"value":380},{"type":46,"tag":184,"props":2954,"children":2955},{"style":197},[2956],{"type":52,"value":2957},"{.metadata.annotations}",{"type":46,"tag":184,"props":2959,"children":2960},{"style":229},[2961],{"type":52,"value":1458},{"type":46,"tag":184,"props":2963,"children":2964},{"class":186,"line":280},[2965,2969,2973,2977,2981,2985,2989,2993,2997,3001,3005,3009,3013,3017,3021,3025,3029,3033,3037],{"type":46,"tag":184,"props":2966,"children":2967},{"style":191},[2968],{"type":52,"value":946},{"type":46,"tag":184,"props":2970,"children":2971},{"style":197},[2972],{"type":52,"value":1325},{"type":46,"tag":184,"props":2974,"children":2975},{"style":197},[2976],{"type":52,"value":1387},{"type":46,"tag":184,"props":2978,"children":2979},{"style":229},[2980],{"type":52,"value":1279},{"type":46,"tag":184,"props":2982,"children":2983},{"style":197},[2984],{"type":52,"value":1396},{"type":46,"tag":184,"props":2986,"children":2987},{"style":332},[2988],{"type":52,"value":1289},{"type":46,"tag":184,"props":2990,"children":2991},{"style":229},[2992],{"type":52,"value":1294},{"type":46,"tag":184,"props":2994,"children":2995},{"style":197},[2996],{"type":52,"value":1409},{"type":46,"tag":184,"props":2998,"children":2999},{"style":229},[3000],{"type":52,"value":1279},{"type":46,"tag":184,"props":3002,"children":3003},{"style":197},[3004],{"type":52,"value":1418},{"type":46,"tag":184,"props":3006,"children":3007},{"style":332},[3008],{"type":52,"value":1289},{"type":46,"tag":184,"props":3010,"children":3011},{"style":229},[3012],{"type":52,"value":1294},{"type":46,"tag":184,"props":3014,"children":3015},{"style":197},[3016],{"type":52,"value":2420},{"type":46,"tag":184,"props":3018,"children":3019},{"style":197},[3020],{"type":52,"value":2592},{"type":46,"tag":184,"props":3022,"children":3023},{"style":229},[3024],{"type":52,"value":360},{"type":46,"tag":184,"props":3026,"children":3027},{"style":191},[3028],{"type":52,"value":365},{"type":46,"tag":184,"props":3030,"children":3031},{"style":197},[3032],{"type":52,"value":1523},{"type":46,"tag":184,"props":3034,"children":3035},{"style":1205},[3036],{"type":52,"value":1528},{"type":46,"tag":184,"props":3038,"children":3039},{"style":197},[3040],{"type":52,"value":3041}," annotations\n",{"type":46,"tag":62,"props":3043,"children":3044},{},[3045],{"type":52,"value":3046},"Fix: remove an opt-out annotation from the Deployment pod template, then apply and restart.",{"type":46,"tag":62,"props":3048,"children":3049},{},[3050,3063,3065,3071,3073,3079,3080,3086,3087,3093,3095,3100,3102,3107],{"type":46,"tag":858,"props":3051,"children":3052},{},[3053,3055,3061],{"type":52,"value":3054},"Are the expected ",{"type":46,"tag":93,"props":3056,"children":3058},{"className":3057},[],[3059],{"type":52,"value":3060},"DD_*",{"type":52,"value":3062}," environment variables present in the running pod?",{"type":52,"value":3064},"\nSSI injects ",{"type":46,"tag":93,"props":3066,"children":3068},{"className":3067},[],[3069],{"type":52,"value":3070},"DD_SERVICE",{"type":52,"value":3072},", ",{"type":46,"tag":93,"props":3074,"children":3076},{"className":3075},[],[3077],{"type":52,"value":3078},"DD_ENV",{"type":52,"value":3072},{"type":46,"tag":93,"props":3081,"children":3083},{"className":3082},[],[3084],{"type":52,"value":3085},"DD_VERSION",{"type":52,"value":3072},{"type":46,"tag":93,"props":3088,"children":3090},{"className":3089},[],[3091],{"type":52,"value":3092},"DD_TRACE_*",{"type":52,"value":3094},", and ",{"type":46,"tag":93,"props":3096,"children":3098},{"className":3097},[],[3099],{"type":52,"value":898},{"type":52,"value":3101}," into the container env when it mutates a pod. Their absence confirms the mutation did not run; their presence with unexpected values points to UST label mismatches or ",{"type":46,"tag":93,"props":3103,"children":3105},{"className":3104},[],[3106],{"type":52,"value":1608},{"type":52,"value":3108}," issues.",{"type":46,"tag":173,"props":3110,"children":3112},{"className":175,"code":3111,"language":177,"meta":178,"style":178},"kubectl exec -n \u003CAPP_NAMESPACE> \u003CPOD_NAME> -- env | grep -E '^(DD_|LD_PRELOAD)'\nkubectl describe pod \u003CPOD_NAME> -n \u003CAPP_NAMESPACE> | grep -E 'DD_|LD_PRELOAD'\n",[3113],{"type":46,"tag":93,"props":3114,"children":3115},{"__ignoreMap":178},[3116,3200],{"type":46,"tag":184,"props":3117,"children":3118},{"class":186,"line":187},[3119,3123,3128,3132,3136,3140,3144,3148,3152,3156,3160,3164,3169,3174,3178,3182,3187,3191,3196],{"type":46,"tag":184,"props":3120,"children":3121},{"style":191},[3122],{"type":52,"value":946},{"type":46,"tag":184,"props":3124,"children":3125},{"style":197},[3126],{"type":52,"value":3127}," exec",{"type":46,"tag":184,"props":3129,"children":3130},{"style":197},[3131],{"type":52,"value":1409},{"type":46,"tag":184,"props":3133,"children":3134},{"style":229},[3135],{"type":52,"value":1279},{"type":46,"tag":184,"props":3137,"children":3138},{"style":197},[3139],{"type":52,"value":1418},{"type":46,"tag":184,"props":3141,"children":3142},{"style":332},[3143],{"type":52,"value":1289},{"type":46,"tag":184,"props":3145,"children":3146},{"style":229},[3147],{"type":52,"value":1294},{"type":46,"tag":184,"props":3149,"children":3150},{"style":229},[3151],{"type":52,"value":1279},{"type":46,"tag":184,"props":3153,"children":3154},{"style":197},[3155],{"type":52,"value":1396},{"type":46,"tag":184,"props":3157,"children":3158},{"style":332},[3159],{"type":52,"value":1289},{"type":46,"tag":184,"props":3161,"children":3162},{"style":229},[3163],{"type":52,"value":1294},{"type":46,"tag":184,"props":3165,"children":3166},{"style":197},[3167],{"type":52,"value":3168}," --",{"type":46,"tag":184,"props":3170,"children":3171},{"style":197},[3172],{"type":52,"value":3173}," env",{"type":46,"tag":184,"props":3175,"children":3176},{"style":229},[3177],{"type":52,"value":360},{"type":46,"tag":184,"props":3179,"children":3180},{"style":191},[3181],{"type":52,"value":365},{"type":46,"tag":184,"props":3183,"children":3184},{"style":197},[3185],{"type":52,"value":3186}," -E",{"type":46,"tag":184,"props":3188,"children":3189},{"style":229},[3190],{"type":52,"value":370},{"type":46,"tag":184,"props":3192,"children":3193},{"style":197},[3194],{"type":52,"value":3195},"^(DD_|LD_PRELOAD)",{"type":46,"tag":184,"props":3197,"children":3198},{"style":229},[3199],{"type":52,"value":1458},{"type":46,"tag":184,"props":3201,"children":3202},{"class":186,"line":280},[3203,3207,3211,3215,3219,3223,3227,3231,3235,3239,3243,3247,3251,3255,3259,3263,3267,3272],{"type":46,"tag":184,"props":3204,"children":3205},{"style":191},[3206],{"type":52,"value":946},{"type":46,"tag":184,"props":3208,"children":3209},{"style":197},[3210],{"type":52,"value":1470},{"type":46,"tag":184,"props":3212,"children":3213},{"style":197},[3214],{"type":52,"value":1387},{"type":46,"tag":184,"props":3216,"children":3217},{"style":229},[3218],{"type":52,"value":1279},{"type":46,"tag":184,"props":3220,"children":3221},{"style":197},[3222],{"type":52,"value":1396},{"type":46,"tag":184,"props":3224,"children":3225},{"style":332},[3226],{"type":52,"value":1289},{"type":46,"tag":184,"props":3228,"children":3229},{"style":229},[3230],{"type":52,"value":1294},{"type":46,"tag":184,"props":3232,"children":3233},{"style":197},[3234],{"type":52,"value":1409},{"type":46,"tag":184,"props":3236,"children":3237},{"style":229},[3238],{"type":52,"value":1279},{"type":46,"tag":184,"props":3240,"children":3241},{"style":197},[3242],{"type":52,"value":1418},{"type":46,"tag":184,"props":3244,"children":3245},{"style":332},[3246],{"type":52,"value":1289},{"type":46,"tag":184,"props":3248,"children":3249},{"style":229},[3250],{"type":52,"value":1294},{"type":46,"tag":184,"props":3252,"children":3253},{"style":229},[3254],{"type":52,"value":360},{"type":46,"tag":184,"props":3256,"children":3257},{"style":191},[3258],{"type":52,"value":365},{"type":46,"tag":184,"props":3260,"children":3261},{"style":197},[3262],{"type":52,"value":3186},{"type":46,"tag":184,"props":3264,"children":3265},{"style":229},[3266],{"type":52,"value":370},{"type":46,"tag":184,"props":3268,"children":3269},{"style":197},[3270],{"type":52,"value":3271},"DD_|LD_PRELOAD",{"type":46,"tag":184,"props":3273,"children":3274},{"style":229},[3275],{"type":52,"value":1458},{"type":46,"tag":160,"props":3277,"children":3279},{"id":3278},"claude-runs-7",[3280],{"type":52,"value":171},{"type":46,"tag":173,"props":3282,"children":3284},{"className":175,"code":3283,"language":177,"meta":178,"style":178},"kubectl apply -f \u003Cyour-app-deployment.yaml>\n",[3285],{"type":46,"tag":93,"props":3286,"children":3287},{"__ignoreMap":178},[3288],{"type":46,"tag":184,"props":3289,"children":3290},{"class":186,"line":187},[3291,3295,3299,3303,3307,3312,3317],{"type":46,"tag":184,"props":3292,"children":3293},{"style":191},[3294],{"type":52,"value":946},{"type":46,"tag":184,"props":3296,"children":3297},{"style":197},[3298],{"type":52,"value":2656},{"type":46,"tag":184,"props":3300,"children":3301},{"style":197},[3302],{"type":52,"value":2661},{"type":46,"tag":184,"props":3304,"children":3305},{"style":229},[3306],{"type":52,"value":1279},{"type":46,"tag":184,"props":3308,"children":3309},{"style":197},[3310],{"type":52,"value":3311},"your-app-deployment.yam",{"type":46,"tag":184,"props":3313,"children":3314},{"style":332},[3315],{"type":52,"value":3316},"l",{"type":46,"tag":184,"props":3318,"children":3319},{"style":229},[3320],{"type":52,"value":1371},{"type":46,"tag":595,"props":3322,"children":3323},{},[3324],{"type":46,"tag":62,"props":3325,"children":3326},{},[3327,3331,3333,3338,3339,3344],{"type":46,"tag":858,"props":3328,"children":3329},{},[3330],{"type":52,"value":2008},{"type":52,"value":3332}," Tell the user: \"I need to restart ",{"type":46,"tag":93,"props":3334,"children":3336},{"className":3335},[],[3337],{"type":52,"value":2016},{"type":52,"value":716},{"type":46,"tag":93,"props":3340,"children":3342},{"className":3341},[],[3343],{"type":52,"value":2023},{"type":52,"value":3345}," for this change to take effect. Ready to proceed?\" Wait for confirmation.",{"type":46,"tag":160,"props":3347,"children":3349},{"id":3348},"claude-runs-8",[3350],{"type":52,"value":171},{"type":46,"tag":173,"props":3352,"children":3354},{"className":175,"code":3353,"language":177,"meta":178,"style":178},"kubectl rollout restart deployment\u002F\u003CDEPLOYMENT_NAME> -n \u003CAPP_NAMESPACE>\n",[3355],{"type":46,"tag":93,"props":3356,"children":3357},{"__ignoreMap":178},[3358],{"type":46,"tag":184,"props":3359,"children":3360},{"class":186,"line":187},[3361,3365,3369,3373,3377,3381,3385,3389,3393,3397,3401,3405,3409],{"type":46,"tag":184,"props":3362,"children":3363},{"style":191},[3364],{"type":52,"value":946},{"type":46,"tag":184,"props":3366,"children":3367},{"style":197},[3368],{"type":52,"value":2049},{"type":46,"tag":184,"props":3370,"children":3371},{"style":197},[3372],{"type":52,"value":2054},{"type":46,"tag":184,"props":3374,"children":3375},{"style":197},[3376],{"type":52,"value":2059},{"type":46,"tag":184,"props":3378,"children":3379},{"style":229},[3380],{"type":52,"value":2064},{"type":46,"tag":184,"props":3382,"children":3383},{"style":197},[3384],{"type":52,"value":2069},{"type":46,"tag":184,"props":3386,"children":3387},{"style":332},[3388],{"type":52,"value":1289},{"type":46,"tag":184,"props":3390,"children":3391},{"style":229},[3392],{"type":52,"value":1294},{"type":46,"tag":184,"props":3394,"children":3395},{"style":197},[3396],{"type":52,"value":1409},{"type":46,"tag":184,"props":3398,"children":3399},{"style":229},[3400],{"type":52,"value":1279},{"type":46,"tag":184,"props":3402,"children":3403},{"style":197},[3404],{"type":52,"value":1418},{"type":46,"tag":184,"props":3406,"children":3407},{"style":332},[3408],{"type":52,"value":1289},{"type":46,"tag":184,"props":3410,"children":3411},{"style":229},[3412],{"type":52,"value":1371},{"type":46,"tag":62,"props":3414,"children":3415},{},[3416,3421],{"type":46,"tag":858,"props":3417,"children":3418},{},[3419],{"type":52,"value":3420},"Does the app have existing custom instrumentation?",{"type":52,"value":3422},"\nSSI silently disables itself when it detects existing tracer code. Scan source files for:",{"type":46,"tag":68,"props":3424,"children":3425},{},[3426,3444,3462,3480,3498,3516],{"type":46,"tag":72,"props":3427,"children":3428},{},[3429,3431,3437,3438],{"type":52,"value":3430},"Python: ",{"type":46,"tag":93,"props":3432,"children":3434},{"className":3433},[],[3435],{"type":52,"value":3436},"import ddtrace",{"type":52,"value":3072},{"type":46,"tag":93,"props":3439,"children":3441},{"className":3440},[],[3442],{"type":52,"value":3443},"ddtrace.patch_all()",{"type":46,"tag":72,"props":3445,"children":3446},{},[3447,3449,3455,3456],{"type":52,"value":3448},"Node.js: ",{"type":46,"tag":93,"props":3450,"children":3452},{"className":3451},[],[3453],{"type":52,"value":3454},"require('dd-trace')",{"type":52,"value":3072},{"type":46,"tag":93,"props":3457,"children":3459},{"className":3458},[],[3460],{"type":52,"value":3461},"DD.init()",{"type":46,"tag":72,"props":3463,"children":3464},{},[3465,3467,3473,3474],{"type":52,"value":3466},"Java: ",{"type":46,"tag":93,"props":3468,"children":3470},{"className":3469},[],[3471],{"type":52,"value":3472},"GlobalTracer.register(",{"type":52,"value":3072},{"type":46,"tag":93,"props":3475,"children":3477},{"className":3476},[],[3478],{"type":52,"value":3479},"dd-java-agent",{"type":46,"tag":72,"props":3481,"children":3482},{},[3483,3485,3491,3492],{"type":52,"value":3484},".NET: ",{"type":46,"tag":93,"props":3486,"children":3488},{"className":3487},[],[3489],{"type":52,"value":3490},"Tracer.Instance",{"type":52,"value":3072},{"type":46,"tag":93,"props":3493,"children":3495},{"className":3494},[],[3496],{"type":52,"value":3497},"DD.Trace",{"type":46,"tag":72,"props":3499,"children":3500},{},[3501,3503,3509,3510],{"type":52,"value":3502},"Ruby: ",{"type":46,"tag":93,"props":3504,"children":3506},{"className":3505},[],[3507],{"type":52,"value":3508},"require 'ddtrace'",{"type":52,"value":3072},{"type":46,"tag":93,"props":3511,"children":3513},{"className":3512},[],[3514],{"type":52,"value":3515},"Datadog.configure",{"type":46,"tag":72,"props":3517,"children":3518},{},[3519,3521],{"type":52,"value":3520},"PHP: ",{"type":46,"tag":93,"props":3522,"children":3524},{"className":3523},[],[3525],{"type":52,"value":3526},"DDTrace\\",{"type":46,"tag":62,"props":3528,"children":3529},{},[3530,3532,3538,3539,3545,3546,3552,3553,3559],{"type":52,"value":3531},"Also check dependency manifests: ",{"type":46,"tag":93,"props":3533,"children":3535},{"className":3534},[],[3536],{"type":52,"value":3537},"requirements.txt",{"type":52,"value":3072},{"type":46,"tag":93,"props":3540,"children":3542},{"className":3541},[],[3543],{"type":52,"value":3544},"package.json",{"type":52,"value":3072},{"type":46,"tag":93,"props":3547,"children":3549},{"className":3548},[],[3550],{"type":52,"value":3551},"Gemfile",{"type":52,"value":3072},{"type":46,"tag":93,"props":3554,"children":3556},{"className":3555},[],[3557],{"type":52,"value":3558},"pom.xml",{"type":52,"value":615},{"type":46,"tag":62,"props":3561,"children":3562},{},[3563],{"type":52,"value":3564},"Fix: remove the import\u002Fpackage, rebuild image, reload into cluster, restart pod.",{"type":46,"tag":62,"props":3566,"children":3567},{},[3568,3573,3575,3580,3582,3588],{"type":46,"tag":858,"props":3569,"children":3570},{},[3571],{"type":52,"value":3572},"Is the base image Alpine (musl libc)?",{"type":52,"value":3574},"\nK8s SSI injects ",{"type":46,"tag":93,"props":3576,"children":3578},{"className":3577},[],[3579],{"type":52,"value":898},{"type":52,"value":3581}," as an environment variable into the pod — it does not rely on ",{"type":46,"tag":93,"props":3583,"children":3585},{"className":3584},[],[3586],{"type":52,"value":3587},"\u002Fetc\u002Fld.so.preload",{"type":52,"value":3589},", so musl\u002FAlpine images are supported. This is not a blocker for Kubernetes SSI.",{"type":46,"tag":62,"props":3591,"children":3592},{},[3593],{"type":46,"tag":858,"props":3594,"children":3595},{},[3596],{"type":52,"value":3597},"Is the runtime version supported?",{"type":46,"tag":173,"props":3599,"children":3601},{"className":175,"code":3600,"language":177,"meta":178,"style":178},"kubectl exec -n \u003CAPP_NAMESPACE> \u003CPOD_NAME> -- python --version\nkubectl exec -n \u003CAPP_NAMESPACE> \u003CPOD_NAME> -- node --version\nkubectl exec -n \u003CAPP_NAMESPACE> \u003CPOD_NAME> -- java -version\n",[3602],{"type":46,"tag":93,"props":3603,"children":3604},{"__ignoreMap":178},[3605,3665,3725],{"type":46,"tag":184,"props":3606,"children":3607},{"class":186,"line":187},[3608,3612,3616,3620,3624,3628,3632,3636,3640,3644,3648,3652,3656,3661],{"type":46,"tag":184,"props":3609,"children":3610},{"style":191},[3611],{"type":52,"value":946},{"type":46,"tag":184,"props":3613,"children":3614},{"style":197},[3615],{"type":52,"value":3127},{"type":46,"tag":184,"props":3617,"children":3618},{"style":197},[3619],{"type":52,"value":1409},{"type":46,"tag":184,"props":3621,"children":3622},{"style":229},[3623],{"type":52,"value":1279},{"type":46,"tag":184,"props":3625,"children":3626},{"style":197},[3627],{"type":52,"value":1418},{"type":46,"tag":184,"props":3629,"children":3630},{"style":332},[3631],{"type":52,"value":1289},{"type":46,"tag":184,"props":3633,"children":3634},{"style":229},[3635],{"type":52,"value":1294},{"type":46,"tag":184,"props":3637,"children":3638},{"style":229},[3639],{"type":52,"value":1279},{"type":46,"tag":184,"props":3641,"children":3642},{"style":197},[3643],{"type":52,"value":1396},{"type":46,"tag":184,"props":3645,"children":3646},{"style":332},[3647],{"type":52,"value":1289},{"type":46,"tag":184,"props":3649,"children":3650},{"style":229},[3651],{"type":52,"value":1294},{"type":46,"tag":184,"props":3653,"children":3654},{"style":197},[3655],{"type":52,"value":3168},{"type":46,"tag":184,"props":3657,"children":3658},{"style":197},[3659],{"type":52,"value":3660}," python",{"type":46,"tag":184,"props":3662,"children":3663},{"style":197},[3664],{"type":52,"value":200},{"type":46,"tag":184,"props":3666,"children":3667},{"class":186,"line":280},[3668,3672,3676,3680,3684,3688,3692,3696,3700,3704,3708,3712,3716,3721],{"type":46,"tag":184,"props":3669,"children":3670},{"style":191},[3671],{"type":52,"value":946},{"type":46,"tag":184,"props":3673,"children":3674},{"style":197},[3675],{"type":52,"value":3127},{"type":46,"tag":184,"props":3677,"children":3678},{"style":197},[3679],{"type":52,"value":1409},{"type":46,"tag":184,"props":3681,"children":3682},{"style":229},[3683],{"type":52,"value":1279},{"type":46,"tag":184,"props":3685,"children":3686},{"style":197},[3687],{"type":52,"value":1418},{"type":46,"tag":184,"props":3689,"children":3690},{"style":332},[3691],{"type":52,"value":1289},{"type":46,"tag":184,"props":3693,"children":3694},{"style":229},[3695],{"type":52,"value":1294},{"type":46,"tag":184,"props":3697,"children":3698},{"style":229},[3699],{"type":52,"value":1279},{"type":46,"tag":184,"props":3701,"children":3702},{"style":197},[3703],{"type":52,"value":1396},{"type":46,"tag":184,"props":3705,"children":3706},{"style":332},[3707],{"type":52,"value":1289},{"type":46,"tag":184,"props":3709,"children":3710},{"style":229},[3711],{"type":52,"value":1294},{"type":46,"tag":184,"props":3713,"children":3714},{"style":197},[3715],{"type":52,"value":3168},{"type":46,"tag":184,"props":3717,"children":3718},{"style":197},[3719],{"type":52,"value":3720}," node",{"type":46,"tag":184,"props":3722,"children":3723},{"style":197},[3724],{"type":52,"value":200},{"type":46,"tag":184,"props":3726,"children":3727},{"class":186,"line":319},[3728,3732,3736,3740,3744,3748,3752,3756,3760,3764,3768,3772,3776,3781],{"type":46,"tag":184,"props":3729,"children":3730},{"style":191},[3731],{"type":52,"value":946},{"type":46,"tag":184,"props":3733,"children":3734},{"style":197},[3735],{"type":52,"value":3127},{"type":46,"tag":184,"props":3737,"children":3738},{"style":197},[3739],{"type":52,"value":1409},{"type":46,"tag":184,"props":3741,"children":3742},{"style":229},[3743],{"type":52,"value":1279},{"type":46,"tag":184,"props":3745,"children":3746},{"style":197},[3747],{"type":52,"value":1418},{"type":46,"tag":184,"props":3749,"children":3750},{"style":332},[3751],{"type":52,"value":1289},{"type":46,"tag":184,"props":3753,"children":3754},{"style":229},[3755],{"type":52,"value":1294},{"type":46,"tag":184,"props":3757,"children":3758},{"style":229},[3759],{"type":52,"value":1279},{"type":46,"tag":184,"props":3761,"children":3762},{"style":197},[3763],{"type":52,"value":1396},{"type":46,"tag":184,"props":3765,"children":3766},{"style":332},[3767],{"type":52,"value":1289},{"type":46,"tag":184,"props":3769,"children":3770},{"style":229},[3771],{"type":52,"value":1294},{"type":46,"tag":184,"props":3773,"children":3774},{"style":197},[3775],{"type":52,"value":3168},{"type":46,"tag":184,"props":3777,"children":3778},{"style":197},[3779],{"type":52,"value":3780}," java",{"type":46,"tag":184,"props":3782,"children":3783},{"style":197},[3784],{"type":52,"value":3785}," -version\n",{"type":46,"tag":62,"props":3787,"children":3788},{},[3789,3791,3800],{"type":52,"value":3790},"Verify against ",{"type":46,"tag":3792,"props":3793,"children":3797},"a",{"href":3794,"rel":3795},"https:\u002F\u002Fdocs.datadoghq.com\u002Ftracing\u002Ftrace_collection\u002Fautomatic_instrumentation\u002Fsingle-step-apm\u002Fcompatibility\u002F",[3796],"nofollow",[3798],{"type":52,"value":3799},"SSI compatibility matrix",{"type":52,"value":615},{"type":46,"tag":62,"props":3802,"children":3803},{},[3804],{"type":46,"tag":858,"props":3805,"children":3806},{},[3807],{"type":52,"value":3808},"Is the admission webhook registered?",{"type":46,"tag":173,"props":3810,"children":3812},{"className":175,"code":3811,"language":177,"meta":178,"style":178},"kubectl get mutatingwebhookconfigurations | grep datadog\nkubectl get pods -n \u003CAGENT_NAMESPACE> -l app=datadog-cluster-agent\nkubectl logs -n \u003CAGENT_NAMESPACE> -l app=datadog-cluster-agent --tail=100\n",[3813],{"type":46,"tag":93,"props":3814,"children":3815},{"__ignoreMap":178},[3816,3843,3887],{"type":46,"tag":184,"props":3817,"children":3818},{"class":186,"line":187},[3819,3823,3827,3831,3835,3839],{"type":46,"tag":184,"props":3820,"children":3821},{"style":191},[3822],{"type":52,"value":946},{"type":46,"tag":184,"props":3824,"children":3825},{"style":197},[3826],{"type":52,"value":1325},{"type":46,"tag":184,"props":3828,"children":3829},{"style":197},[3830],{"type":52,"value":1557},{"type":46,"tag":184,"props":3832,"children":3833},{"style":229},[3834],{"type":52,"value":360},{"type":46,"tag":184,"props":3836,"children":3837},{"style":191},[3838],{"type":52,"value":365},{"type":46,"tag":184,"props":3840,"children":3841},{"style":197},[3842],{"type":52,"value":1570},{"type":46,"tag":184,"props":3844,"children":3845},{"class":186,"line":280},[3846,3850,3854,3858,3862,3866,3870,3874,3878,3882],{"type":46,"tag":184,"props":3847,"children":3848},{"style":191},[3849],{"type":52,"value":946},{"type":46,"tag":184,"props":3851,"children":3852},{"style":197},[3853],{"type":52,"value":1325},{"type":46,"tag":184,"props":3855,"children":3856},{"style":197},[3857],{"type":52,"value":1968},{"type":46,"tag":184,"props":3859,"children":3860},{"style":197},[3861],{"type":52,"value":1409},{"type":46,"tag":184,"props":3863,"children":3864},{"style":229},[3865],{"type":52,"value":1279},{"type":46,"tag":184,"props":3867,"children":3868},{"style":197},[3869],{"type":52,"value":1981},{"type":46,"tag":184,"props":3871,"children":3872},{"style":332},[3873],{"type":52,"value":1289},{"type":46,"tag":184,"props":3875,"children":3876},{"style":229},[3877],{"type":52,"value":1294},{"type":46,"tag":184,"props":3879,"children":3880},{"style":197},[3881],{"type":52,"value":2123},{"type":46,"tag":184,"props":3883,"children":3884},{"style":197},[3885],{"type":52,"value":3886}," app=datadog-cluster-agent\n",{"type":46,"tag":184,"props":3888,"children":3889},{"class":186,"line":319},[3890,3894,3899,3903,3907,3911,3915,3919,3923,3928],{"type":46,"tag":184,"props":3891,"children":3892},{"style":191},[3893],{"type":52,"value":946},{"type":46,"tag":184,"props":3895,"children":3896},{"style":197},[3897],{"type":52,"value":3898}," logs",{"type":46,"tag":184,"props":3900,"children":3901},{"style":197},[3902],{"type":52,"value":1409},{"type":46,"tag":184,"props":3904,"children":3905},{"style":229},[3906],{"type":52,"value":1279},{"type":46,"tag":184,"props":3908,"children":3909},{"style":197},[3910],{"type":52,"value":1981},{"type":46,"tag":184,"props":3912,"children":3913},{"style":332},[3914],{"type":52,"value":1289},{"type":46,"tag":184,"props":3916,"children":3917},{"style":229},[3918],{"type":52,"value":1294},{"type":46,"tag":184,"props":3920,"children":3921},{"style":197},[3922],{"type":52,"value":2123},{"type":46,"tag":184,"props":3924,"children":3925},{"style":197},[3926],{"type":52,"value":3927}," app=datadog-cluster-agent",{"type":46,"tag":184,"props":3929,"children":3930},{"style":197},[3931],{"type":52,"value":3932}," --tail=100\n",{"type":46,"tag":62,"props":3934,"children":3935},{},[3936,3941],{"type":46,"tag":858,"props":3937,"children":3938},{},[3939],{"type":52,"value":3940},"Did injection produce errors?",{"type":52,"value":3942},"\nGet the node hostname first, then query Datadog for injection errors:",{"type":46,"tag":173,"props":3944,"children":3946},{"className":175,"code":3945,"language":177,"meta":178,"style":178},"kubectl get pod \u003CPOD_NAME> -n \u003CAPP_NAMESPACE> -o jsonpath='{.spec.nodeName}'\npup apm troubleshooting list --hostname \u003CNODE_HOSTNAME> --timeframe 1h\n",[3947],{"type":46,"tag":93,"props":3948,"children":3949},{"__ignoreMap":178},[3950,4022],{"type":46,"tag":184,"props":3951,"children":3952},{"class":186,"line":187},[3953,3957,3961,3965,3969,3973,3977,3981,3985,3989,3993,3997,4001,4005,4009,4013,4018],{"type":46,"tag":184,"props":3954,"children":3955},{"style":191},[3956],{"type":52,"value":946},{"type":46,"tag":184,"props":3958,"children":3959},{"style":197},[3960],{"type":52,"value":1325},{"type":46,"tag":184,"props":3962,"children":3963},{"style":197},[3964],{"type":52,"value":1387},{"type":46,"tag":184,"props":3966,"children":3967},{"style":229},[3968],{"type":52,"value":1279},{"type":46,"tag":184,"props":3970,"children":3971},{"style":197},[3972],{"type":52,"value":1396},{"type":46,"tag":184,"props":3974,"children":3975},{"style":332},[3976],{"type":52,"value":1289},{"type":46,"tag":184,"props":3978,"children":3979},{"style":229},[3980],{"type":52,"value":1294},{"type":46,"tag":184,"props":3982,"children":3983},{"style":197},[3984],{"type":52,"value":1409},{"type":46,"tag":184,"props":3986,"children":3987},{"style":229},[3988],{"type":52,"value":1279},{"type":46,"tag":184,"props":3990,"children":3991},{"style":197},[3992],{"type":52,"value":1418},{"type":46,"tag":184,"props":3994,"children":3995},{"style":332},[3996],{"type":52,"value":1289},{"type":46,"tag":184,"props":3998,"children":3999},{"style":229},[4000],{"type":52,"value":1294},{"type":46,"tag":184,"props":4002,"children":4003},{"style":197},[4004],{"type":52,"value":2420},{"type":46,"tag":184,"props":4006,"children":4007},{"style":197},[4008],{"type":52,"value":1444},{"type":46,"tag":184,"props":4010,"children":4011},{"style":229},[4012],{"type":52,"value":380},{"type":46,"tag":184,"props":4014,"children":4015},{"style":197},[4016],{"type":52,"value":4017},"{.spec.nodeName}",{"type":46,"tag":184,"props":4019,"children":4020},{"style":229},[4021],{"type":52,"value":1458},{"type":46,"tag":184,"props":4023,"children":4024},{"class":186,"line":280},[4025,4029,4033,4037,4041,4045,4049,4053,4057,4061,4065],{"type":46,"tag":184,"props":4026,"children":4027},{"style":191},[4028],{"type":52,"value":194},{"type":46,"tag":184,"props":4030,"children":4031},{"style":197},[4032],{"type":52,"value":1260},{"type":46,"tag":184,"props":4034,"children":4035},{"style":197},[4036],{"type":52,"value":1265},{"type":46,"tag":184,"props":4038,"children":4039},{"style":197},[4040],{"type":52,"value":1230},{"type":46,"tag":184,"props":4042,"children":4043},{"style":197},[4044],{"type":52,"value":1274},{"type":46,"tag":184,"props":4046,"children":4047},{"style":229},[4048],{"type":52,"value":1279},{"type":46,"tag":184,"props":4050,"children":4051},{"style":197},[4052],{"type":52,"value":1284},{"type":46,"tag":184,"props":4054,"children":4055},{"style":332},[4056],{"type":52,"value":1289},{"type":46,"tag":184,"props":4058,"children":4059},{"style":229},[4060],{"type":52,"value":1294},{"type":46,"tag":184,"props":4062,"children":4063},{"style":197},[4064],{"type":52,"value":1299},{"type":46,"tag":184,"props":4066,"children":4067},{"style":197},[4068],{"type":52,"value":1304},{"type":46,"tag":62,"props":4070,"children":4071},{},[4072],{"type":46,"tag":858,"props":4073,"children":4074},{},[4075],{"type":52,"value":4076},"Is the Agent sending data to Datadog?",{"type":46,"tag":173,"props":4078,"children":4080},{"className":175,"code":4079,"language":177,"meta":178,"style":178},"kubectl exec -n \u003CAGENT_NAMESPACE> \\\n  $(kubectl get pod -n \u003CAGENT_NAMESPACE> -l app=datadog-agent -o name | head -1) \\\n  -- agent status | grep -A 5 \"APM Agent\"\n",[4081],{"type":46,"tag":93,"props":4082,"children":4083},{"__ignoreMap":178},[4084,4119,4200],{"type":46,"tag":184,"props":4085,"children":4086},{"class":186,"line":187},[4087,4091,4095,4099,4103,4107,4111,4115],{"type":46,"tag":184,"props":4088,"children":4089},{"style":191},[4090],{"type":52,"value":946},{"type":46,"tag":184,"props":4092,"children":4093},{"style":197},[4094],{"type":52,"value":3127},{"type":46,"tag":184,"props":4096,"children":4097},{"style":197},[4098],{"type":52,"value":1409},{"type":46,"tag":184,"props":4100,"children":4101},{"style":229},[4102],{"type":52,"value":1279},{"type":46,"tag":184,"props":4104,"children":4105},{"style":197},[4106],{"type":52,"value":1981},{"type":46,"tag":184,"props":4108,"children":4109},{"style":332},[4110],{"type":52,"value":1289},{"type":46,"tag":184,"props":4112,"children":4113},{"style":229},[4114],{"type":52,"value":1294},{"type":46,"tag":184,"props":4116,"children":4117},{"style":332},[4118],{"type":52,"value":1431},{"type":46,"tag":184,"props":4120,"children":4121},{"class":186,"line":280},[4122,4127,4131,4135,4139,4143,4147,4151,4155,4159,4163,4168,4172,4177,4181,4186,4191,4196],{"type":46,"tag":184,"props":4123,"children":4124},{"style":229},[4125],{"type":52,"value":4126},"  $(",{"type":46,"tag":184,"props":4128,"children":4129},{"style":191},[4130],{"type":52,"value":946},{"type":46,"tag":184,"props":4132,"children":4133},{"style":197},[4134],{"type":52,"value":1325},{"type":46,"tag":184,"props":4136,"children":4137},{"style":197},[4138],{"type":52,"value":1387},{"type":46,"tag":184,"props":4140,"children":4141},{"style":197},[4142],{"type":52,"value":1409},{"type":46,"tag":184,"props":4144,"children":4145},{"style":229},[4146],{"type":52,"value":1279},{"type":46,"tag":184,"props":4148,"children":4149},{"style":197},[4150],{"type":52,"value":1981},{"type":46,"tag":184,"props":4152,"children":4153},{"style":332},[4154],{"type":52,"value":1289},{"type":46,"tag":184,"props":4156,"children":4157},{"style":229},[4158],{"type":52,"value":1294},{"type":46,"tag":184,"props":4160,"children":4161},{"style":197},[4162],{"type":52,"value":2123},{"type":46,"tag":184,"props":4164,"children":4165},{"style":197},[4166],{"type":52,"value":4167}," app=datadog-agent",{"type":46,"tag":184,"props":4169,"children":4170},{"style":197},[4171],{"type":52,"value":2420},{"type":46,"tag":184,"props":4173,"children":4174},{"style":197},[4175],{"type":52,"value":4176}," name",{"type":46,"tag":184,"props":4178,"children":4179},{"style":229},[4180],{"type":52,"value":360},{"type":46,"tag":184,"props":4182,"children":4183},{"style":191},[4184],{"type":52,"value":4185}," head",{"type":46,"tag":184,"props":4187,"children":4188},{"style":197},[4189],{"type":52,"value":4190}," -1",{"type":46,"tag":184,"props":4192,"children":4193},{"style":229},[4194],{"type":52,"value":4195},")",{"type":46,"tag":184,"props":4197,"children":4198},{"style":332},[4199],{"type":52,"value":1431},{"type":46,"tag":184,"props":4201,"children":4202},{"class":186,"line":319},[4203,4208,4213,4218,4222,4226,4230,4235,4239,4244],{"type":46,"tag":184,"props":4204,"children":4205},{"style":197},[4206],{"type":52,"value":4207},"  --",{"type":46,"tag":184,"props":4209,"children":4210},{"style":197},[4211],{"type":52,"value":4212}," agent",{"type":46,"tag":184,"props":4214,"children":4215},{"style":197},[4216],{"type":52,"value":4217}," status",{"type":46,"tag":184,"props":4219,"children":4220},{"style":229},[4221],{"type":52,"value":360},{"type":46,"tag":184,"props":4223,"children":4224},{"style":191},[4225],{"type":52,"value":365},{"type":46,"tag":184,"props":4227,"children":4228},{"style":197},[4229],{"type":52,"value":1523},{"type":46,"tag":184,"props":4231,"children":4232},{"style":1205},[4233],{"type":52,"value":4234}," 5",{"type":46,"tag":184,"props":4236,"children":4237},{"style":229},[4238],{"type":52,"value":257},{"type":46,"tag":184,"props":4240,"children":4241},{"style":197},[4242],{"type":52,"value":4243},"APM Agent",{"type":46,"tag":184,"props":4245,"children":4246},{"style":229},[4247],{"type":52,"value":1248},{"type":46,"tag":126,"props":4249,"children":4250},{},[],{"type":46,"tag":160,"props":4252,"children":4254},{"id":4253},"datadog-side-investigation-tools",[4255],{"type":52,"value":4256},"Datadog-side investigation tools",{"type":46,"tag":62,"props":4258,"children":4259},{},[4260],{"type":46,"tag":858,"props":4261,"children":4262},{},[4263],{"type":52,"value":4264},"Is the tracer reporting?",{"type":46,"tag":173,"props":4266,"children":4268},{"className":175,"code":4267,"language":177,"meta":178,"style":178},"pup fleet tracers list --filter \"service:\u003CSERVICE_NAME>\"\n",[4269],{"type":46,"tag":93,"props":4270,"children":4271},{"__ignoreMap":178},[4272],{"type":46,"tag":184,"props":4273,"children":4274},{"class":186,"line":187},[4275,4279,4283,4287,4291,4295,4299,4303],{"type":46,"tag":184,"props":4276,"children":4277},{"style":191},[4278],{"type":52,"value":194},{"type":46,"tag":184,"props":4280,"children":4281},{"style":197},[4282],{"type":52,"value":1220},{"type":46,"tag":184,"props":4284,"children":4285},{"style":197},[4286],{"type":52,"value":1225},{"type":46,"tag":184,"props":4288,"children":4289},{"style":197},[4290],{"type":52,"value":1230},{"type":46,"tag":184,"props":4292,"children":4293},{"style":197},[4294],{"type":52,"value":1235},{"type":46,"tag":184,"props":4296,"children":4297},{"style":229},[4298],{"type":52,"value":257},{"type":46,"tag":184,"props":4300,"children":4301},{"style":197},[4302],{"type":52,"value":1183},{"type":46,"tag":184,"props":4304,"children":4305},{"style":229},[4306],{"type":52,"value":1248},{"type":46,"tag":62,"props":4308,"children":4309},{},[4310],{"type":46,"tag":858,"props":4311,"children":4312},{},[4313],{"type":52,"value":4314},"Does APM recognise the service?",{"type":46,"tag":173,"props":4316,"children":4318},{"className":175,"code":4317,"language":177,"meta":178,"style":178},"pup apm services list --env \u003CENV>\n",[4319],{"type":46,"tag":93,"props":4320,"children":4321},{"__ignoreMap":178},[4322],{"type":46,"tag":184,"props":4323,"children":4324},{"class":186,"line":187},[4325,4329,4333,4338,4342,4346,4350,4354,4358],{"type":46,"tag":184,"props":4326,"children":4327},{"style":191},[4328],{"type":52,"value":194},{"type":46,"tag":184,"props":4330,"children":4331},{"style":197},[4332],{"type":52,"value":1260},{"type":46,"tag":184,"props":4334,"children":4335},{"style":197},[4336],{"type":52,"value":4337}," services",{"type":46,"tag":184,"props":4339,"children":4340},{"style":197},[4341],{"type":52,"value":1230},{"type":46,"tag":184,"props":4343,"children":4344},{"style":197},[4345],{"type":52,"value":1352},{"type":46,"tag":184,"props":4347,"children":4348},{"style":229},[4349],{"type":52,"value":1279},{"type":46,"tag":184,"props":4351,"children":4352},{"style":197},[4353],{"type":52,"value":1361},{"type":46,"tag":184,"props":4355,"children":4356},{"style":332},[4357],{"type":52,"value":1366},{"type":46,"tag":184,"props":4359,"children":4360},{"style":229},[4361],{"type":52,"value":1371},{"type":46,"tag":62,"props":4363,"children":4364},{},[4365,4370,4372,4378,4379,4384,4385,4390,4392,4397,4399,4404],{"type":46,"tag":858,"props":4366,"children":4367},{},[4368],{"type":52,"value":4369},"What SDK configuration is the service running with?",{"type":52,"value":4371},"\nShows env vars the tracer is configured with (e.g. ",{"type":46,"tag":93,"props":4373,"children":4375},{"className":4374},[],[4376],{"type":52,"value":4377},"DD_TRACE_ENABLED",{"type":52,"value":3072},{"type":46,"tag":93,"props":4380,"children":4382},{"className":4381},[],[4383],{"type":52,"value":3070},{"type":52,"value":3072},{"type":46,"tag":93,"props":4386,"children":4388},{"className":4387},[],[4389],{"type":52,"value":3078},{"type":52,"value":4391},", sampling rules). Empty output is expected if ",{"type":46,"tag":93,"props":4393,"children":4395},{"className":4394},[],[4396],{"type":52,"value":1608},{"type":52,"value":4398}," was not set in ",{"type":46,"tag":93,"props":4400,"children":4402},{"className":4401},[],[4403],{"type":52,"value":122},{"type":52,"value":4405},"; a populated output mismatching what was configured indicates the change didn't propagate.",{"type":46,"tag":173,"props":4407,"children":4409},{"className":175,"code":4408,"language":177,"meta":178,"style":178},"pup apm service-library-config get --service-name \u003CSERVICE_NAME> --env \u003CENV>\n",[4410],{"type":46,"tag":93,"props":4411,"children":4412},{"__ignoreMap":178},[4413],{"type":46,"tag":184,"props":4414,"children":4415},{"class":186,"line":187},[4416,4420,4424,4428,4432,4436,4440,4444,4448,4452,4456,4460,4464,4468],{"type":46,"tag":184,"props":4417,"children":4418},{"style":191},[4419],{"type":52,"value":194},{"type":46,"tag":184,"props":4421,"children":4422},{"style":197},[4423],{"type":52,"value":1260},{"type":46,"tag":184,"props":4425,"children":4426},{"style":197},[4427],{"type":52,"value":1320},{"type":46,"tag":184,"props":4429,"children":4430},{"style":197},[4431],{"type":52,"value":1325},{"type":46,"tag":184,"props":4433,"children":4434},{"style":197},[4435],{"type":52,"value":1330},{"type":46,"tag":184,"props":4437,"children":4438},{"style":229},[4439],{"type":52,"value":1279},{"type":46,"tag":184,"props":4441,"children":4442},{"style":197},[4443],{"type":52,"value":1339},{"type":46,"tag":184,"props":4445,"children":4446},{"style":332},[4447],{"type":52,"value":1289},{"type":46,"tag":184,"props":4449,"children":4450},{"style":229},[4451],{"type":52,"value":1294},{"type":46,"tag":184,"props":4453,"children":4454},{"style":197},[4455],{"type":52,"value":1352},{"type":46,"tag":184,"props":4457,"children":4458},{"style":229},[4459],{"type":52,"value":1279},{"type":46,"tag":184,"props":4461,"children":4462},{"style":197},[4463],{"type":52,"value":1361},{"type":46,"tag":184,"props":4465,"children":4466},{"style":332},[4467],{"type":52,"value":1366},{"type":46,"tag":184,"props":4469,"children":4470},{"style":229},[4471],{"type":52,"value":1371},{"type":46,"tag":62,"props":4473,"children":4474},{},[4475],{"type":46,"tag":858,"props":4476,"children":4477},{},[4478],{"type":52,"value":4479},"Are traces arriving?",{"type":46,"tag":173,"props":4481,"children":4483},{"className":175,"code":4482,"language":177,"meta":178,"style":178},"pup traces search --query \"service:\u003CSERVICE_NAME>\" --from 1h --limit 10\n",[4484],{"type":46,"tag":93,"props":4485,"children":4486},{"__ignoreMap":178},[4487],{"type":46,"tag":184,"props":4488,"children":4489},{"class":186,"line":187},[4490,4494,4498,4502,4506,4510,4514,4518,4522,4526,4530],{"type":46,"tag":184,"props":4491,"children":4492},{"style":191},[4493],{"type":52,"value":194},{"type":46,"tag":184,"props":4495,"children":4496},{"style":197},[4497],{"type":52,"value":1164},{"type":46,"tag":184,"props":4499,"children":4500},{"style":197},[4501],{"type":52,"value":1169},{"type":46,"tag":184,"props":4503,"children":4504},{"style":197},[4505],{"type":52,"value":1174},{"type":46,"tag":184,"props":4507,"children":4508},{"style":229},[4509],{"type":52,"value":257},{"type":46,"tag":184,"props":4511,"children":4512},{"style":197},[4513],{"type":52,"value":1183},{"type":46,"tag":184,"props":4515,"children":4516},{"style":229},[4517],{"type":52,"value":267},{"type":46,"tag":184,"props":4519,"children":4520},{"style":197},[4521],{"type":52,"value":1192},{"type":46,"tag":184,"props":4523,"children":4524},{"style":197},[4525],{"type":52,"value":1197},{"type":46,"tag":184,"props":4527,"children":4528},{"style":197},[4529],{"type":52,"value":1202},{"type":46,"tag":184,"props":4531,"children":4532},{"style":1205},[4533],{"type":52,"value":4534}," 10\n",{"type":46,"tag":62,"props":4536,"children":4537},{},[4538,4543],{"type":46,"tag":858,"props":4539,"children":4540},{},[4541],{"type":52,"value":4542},"Which agent is the tracer connected to?",{"type":52,"value":4544},"\nUse if connectivity between tracer and Agent is suspected.",{"type":46,"tag":173,"props":4546,"children":4548},{"className":175,"code":4547,"language":177,"meta":178,"style":178},"pup fleet agents list --filter \"hostname:\u003CNODE_HOSTNAME>\"\npup fleet agents tracers \u003CAGENT_KEY> --filter \"service:\u003CSERVICE_NAME>\"\n",[4549],{"type":46,"tag":93,"props":4550,"children":4551},{"__ignoreMap":178},[4552,4589],{"type":46,"tag":184,"props":4553,"children":4554},{"class":186,"line":187},[4555,4559,4563,4568,4572,4576,4580,4585],{"type":46,"tag":184,"props":4556,"children":4557},{"style":191},[4558],{"type":52,"value":194},{"type":46,"tag":184,"props":4560,"children":4561},{"style":197},[4562],{"type":52,"value":1220},{"type":46,"tag":184,"props":4564,"children":4565},{"style":197},[4566],{"type":52,"value":4567}," agents",{"type":46,"tag":184,"props":4569,"children":4570},{"style":197},[4571],{"type":52,"value":1230},{"type":46,"tag":184,"props":4573,"children":4574},{"style":197},[4575],{"type":52,"value":1235},{"type":46,"tag":184,"props":4577,"children":4578},{"style":229},[4579],{"type":52,"value":257},{"type":46,"tag":184,"props":4581,"children":4582},{"style":197},[4583],{"type":52,"value":4584},"hostname:\u003CNODE_HOSTNAME>",{"type":46,"tag":184,"props":4586,"children":4587},{"style":229},[4588],{"type":52,"value":1248},{"type":46,"tag":184,"props":4590,"children":4591},{"class":186,"line":280},[4592,4596,4600,4604,4608,4612,4617,4622,4626,4630,4634,4638],{"type":46,"tag":184,"props":4593,"children":4594},{"style":191},[4595],{"type":52,"value":194},{"type":46,"tag":184,"props":4597,"children":4598},{"style":197},[4599],{"type":52,"value":1220},{"type":46,"tag":184,"props":4601,"children":4602},{"style":197},[4603],{"type":52,"value":4567},{"type":46,"tag":184,"props":4605,"children":4606},{"style":197},[4607],{"type":52,"value":1225},{"type":46,"tag":184,"props":4609,"children":4610},{"style":229},[4611],{"type":52,"value":1279},{"type":46,"tag":184,"props":4613,"children":4614},{"style":197},[4615],{"type":52,"value":4616},"AGENT_KE",{"type":46,"tag":184,"props":4618,"children":4619},{"style":332},[4620],{"type":52,"value":4621},"Y",{"type":46,"tag":184,"props":4623,"children":4624},{"style":229},[4625],{"type":52,"value":1294},{"type":46,"tag":184,"props":4627,"children":4628},{"style":197},[4629],{"type":52,"value":1235},{"type":46,"tag":184,"props":4631,"children":4632},{"style":229},[4633],{"type":52,"value":257},{"type":46,"tag":184,"props":4635,"children":4636},{"style":197},[4637],{"type":52,"value":1183},{"type":46,"tag":184,"props":4639,"children":4640},{"style":229},[4641],{"type":52,"value":1248},{"type":46,"tag":126,"props":4643,"children":4644},{},[],{"type":46,"tag":55,"props":4646,"children":4648},{"id":4647},"step-4-reflect-before-concluding",[4649],{"type":52,"value":4650},"Step 4: Reflect Before Concluding",{"type":46,"tag":62,"props":4652,"children":4653},{},[4654],{"type":52,"value":4655},"Before applying any fix, answer:",{"type":46,"tag":864,"props":4657,"children":4658},{},[4659,4664,4669],{"type":46,"tag":72,"props":4660,"children":4661},{},[4662],{"type":52,"value":4663},"What evidence confirms my hypothesis?",{"type":46,"tag":72,"props":4665,"children":4666},{},[4667],{"type":52,"value":4668},"What evidence would contradict it — and have I checked?",{"type":46,"tag":72,"props":4670,"children":4671},{},[4672],{"type":52,"value":4673},"Is there a simpler explanation I haven't considered?",{"type":46,"tag":62,"props":4675,"children":4676},{},[4677],{"type":52,"value":4678},"If the conclusion doesn't hold up, return to Step 2 with new hypotheses. Keep iterating until you can defend the conclusion against all three questions.",{"type":46,"tag":126,"props":4680,"children":4681},{},[],{"type":46,"tag":55,"props":4683,"children":4685},{"id":4684},"step-5-fix",[4686],{"type":52,"value":4687},"Step 5: Fix",{"type":46,"tag":62,"props":4689,"children":4690},{},[4691],{"type":52,"value":4692},"Apply the fix for the confirmed root cause. If the fix requires a code or Dockerfile change, rebuild and reload:",{"type":46,"tag":160,"props":4694,"children":4696},{"id":4695},"claude-runs-9",[4697],{"type":52,"value":171},{"type":46,"tag":173,"props":4699,"children":4701},{"className":175,"code":4700,"language":177,"meta":178,"style":178},"docker build -f \u003CDOCKERFILE_PATH> -t \u003CIMAGE_NAME> \u003CBUILD_CONTEXT>\n",[4702],{"type":46,"tag":93,"props":4703,"children":4704},{"__ignoreMap":178},[4705],{"type":46,"tag":184,"props":4706,"children":4707},{"class":186,"line":187},[4708,4713,4718,4722,4726,4731,4736,4740,4745,4749,4754,4758,4762,4766,4771,4776],{"type":46,"tag":184,"props":4709,"children":4710},{"style":191},[4711],{"type":52,"value":4712},"docker",{"type":46,"tag":184,"props":4714,"children":4715},{"style":197},[4716],{"type":52,"value":4717}," build",{"type":46,"tag":184,"props":4719,"children":4720},{"style":197},[4721],{"type":52,"value":2661},{"type":46,"tag":184,"props":4723,"children":4724},{"style":229},[4725],{"type":52,"value":1279},{"type":46,"tag":184,"props":4727,"children":4728},{"style":197},[4729],{"type":52,"value":4730},"DOCKERFILE_PAT",{"type":46,"tag":184,"props":4732,"children":4733},{"style":332},[4734],{"type":52,"value":4735},"H",{"type":46,"tag":184,"props":4737,"children":4738},{"style":229},[4739],{"type":52,"value":1294},{"type":46,"tag":184,"props":4741,"children":4742},{"style":197},[4743],{"type":52,"value":4744}," -t",{"type":46,"tag":184,"props":4746,"children":4747},{"style":229},[4748],{"type":52,"value":1279},{"type":46,"tag":184,"props":4750,"children":4751},{"style":197},[4752],{"type":52,"value":4753},"IMAGE_NAM",{"type":46,"tag":184,"props":4755,"children":4756},{"style":332},[4757],{"type":52,"value":1289},{"type":46,"tag":184,"props":4759,"children":4760},{"style":229},[4761],{"type":52,"value":1294},{"type":46,"tag":184,"props":4763,"children":4764},{"style":229},[4765],{"type":52,"value":1279},{"type":46,"tag":184,"props":4767,"children":4768},{"style":197},[4769],{"type":52,"value":4770},"BUILD_CONTEX",{"type":46,"tag":184,"props":4772,"children":4773},{"style":332},[4774],{"type":52,"value":4775},"T",{"type":46,"tag":184,"props":4777,"children":4778},{"style":229},[4779],{"type":52,"value":1371},{"type":46,"tag":62,"props":4781,"children":4782},{},[4783],{"type":46,"tag":184,"props":4784,"children":4785},{},[4786],{"type":52,"value":4787},"DECISION: cluster type",{"type":46,"tag":68,"props":4789,"children":4790},{},[4791],{"type":46,"tag":72,"props":4792,"children":4793},{},[4794],{"type":52,"value":4795},"kind (local): load the image into the cluster",{"type":46,"tag":160,"props":4797,"children":4799},{"id":4798},"claude-runs-10",[4800],{"type":52,"value":171},{"type":46,"tag":173,"props":4802,"children":4804},{"className":175,"code":4803,"language":177,"meta":178,"style":178},"kind load docker-image \u003CIMAGE_NAME> --name \u003CCLUSTER_NAME>\n",[4805],{"type":46,"tag":93,"props":4806,"children":4807},{"__ignoreMap":178},[4808],{"type":46,"tag":184,"props":4809,"children":4810},{"class":186,"line":187},[4811,4816,4821,4826,4830,4834,4838,4842,4847,4851,4856,4860],{"type":46,"tag":184,"props":4812,"children":4813},{"style":191},[4814],{"type":52,"value":4815},"kind",{"type":46,"tag":184,"props":4817,"children":4818},{"style":197},[4819],{"type":52,"value":4820}," load",{"type":46,"tag":184,"props":4822,"children":4823},{"style":197},[4824],{"type":52,"value":4825}," docker-image",{"type":46,"tag":184,"props":4827,"children":4828},{"style":229},[4829],{"type":52,"value":1279},{"type":46,"tag":184,"props":4831,"children":4832},{"style":197},[4833],{"type":52,"value":4753},{"type":46,"tag":184,"props":4835,"children":4836},{"style":332},[4837],{"type":52,"value":1289},{"type":46,"tag":184,"props":4839,"children":4840},{"style":229},[4841],{"type":52,"value":1294},{"type":46,"tag":184,"props":4843,"children":4844},{"style":197},[4845],{"type":52,"value":4846}," --name",{"type":46,"tag":184,"props":4848,"children":4849},{"style":229},[4850],{"type":52,"value":1279},{"type":46,"tag":184,"props":4852,"children":4853},{"style":197},[4854],{"type":52,"value":4855},"CLUSTER_NAM",{"type":46,"tag":184,"props":4857,"children":4858},{"style":332},[4859],{"type":52,"value":1289},{"type":46,"tag":184,"props":4861,"children":4862},{"style":229},[4863],{"type":52,"value":1371},{"type":46,"tag":68,"props":4865,"children":4866},{},[4867],{"type":46,"tag":72,"props":4868,"children":4869},{},[4870],{"type":52,"value":4871},"Registry-based: skip — image will be pulled on next deployment",{"type":46,"tag":595,"props":4873,"children":4874},{},[4875],{"type":46,"tag":62,"props":4876,"children":4877},{},[4878,4882,4883,4888,4889,4894],{"type":46,"tag":858,"props":4879,"children":4880},{},[4881],{"type":52,"value":2008},{"type":52,"value":3332},{"type":46,"tag":93,"props":4884,"children":4886},{"className":4885},[],[4887],{"type":52,"value":2016},{"type":52,"value":716},{"type":46,"tag":93,"props":4890,"children":4892},{"className":4891},[],[4893],{"type":52,"value":2023},{"type":52,"value":4895}," to apply the fix. Ready to proceed?\" Wait for confirmation.",{"type":46,"tag":160,"props":4897,"children":4899},{"id":4898},"claude-runs-11",[4900],{"type":52,"value":171},{"type":46,"tag":173,"props":4902,"children":4903},{"className":175,"code":2033,"language":177,"meta":178,"style":178},[4904],{"type":46,"tag":93,"props":4905,"children":4906},{"__ignoreMap":178},[4907,4962],{"type":46,"tag":184,"props":4908,"children":4909},{"class":186,"line":187},[4910,4914,4918,4922,4926,4930,4934,4938,4942,4946,4950,4954,4958],{"type":46,"tag":184,"props":4911,"children":4912},{"style":191},[4913],{"type":52,"value":946},{"type":46,"tag":184,"props":4915,"children":4916},{"style":197},[4917],{"type":52,"value":2049},{"type":46,"tag":184,"props":4919,"children":4920},{"style":197},[4921],{"type":52,"value":2054},{"type":46,"tag":184,"props":4923,"children":4924},{"style":197},[4925],{"type":52,"value":2059},{"type":46,"tag":184,"props":4927,"children":4928},{"style":229},[4929],{"type":52,"value":2064},{"type":46,"tag":184,"props":4931,"children":4932},{"style":197},[4933],{"type":52,"value":2069},{"type":46,"tag":184,"props":4935,"children":4936},{"style":332},[4937],{"type":52,"value":1289},{"type":46,"tag":184,"props":4939,"children":4940},{"style":229},[4941],{"type":52,"value":1294},{"type":46,"tag":184,"props":4943,"children":4944},{"style":197},[4945],{"type":52,"value":1409},{"type":46,"tag":184,"props":4947,"children":4948},{"style":229},[4949],{"type":52,"value":1279},{"type":46,"tag":184,"props":4951,"children":4952},{"style":197},[4953],{"type":52,"value":1418},{"type":46,"tag":184,"props":4955,"children":4956},{"style":332},[4957],{"type":52,"value":1289},{"type":46,"tag":184,"props":4959,"children":4960},{"style":229},[4961],{"type":52,"value":1371},{"type":46,"tag":184,"props":4963,"children":4964},{"class":186,"line":280},[4965,4969,4973,4977,4981,4985,4989,4993,4997,5001,5005,5009,5013,5017,5021,5025],{"type":46,"tag":184,"props":4966,"children":4967},{"style":191},[4968],{"type":52,"value":946},{"type":46,"tag":184,"props":4970,"children":4971},{"style":197},[4972],{"type":52,"value":2109},{"type":46,"tag":184,"props":4974,"children":4975},{"style":197},[4976],{"type":52,"value":2114},{"type":46,"tag":184,"props":4978,"children":4979},{"style":197},[4980],{"type":52,"value":1387},{"type":46,"tag":184,"props":4982,"children":4983},{"style":197},[4984],{"type":52,"value":2123},{"type":46,"tag":184,"props":4986,"children":4987},{"style":197},[4988],{"type":52,"value":2128},{"type":46,"tag":184,"props":4990,"children":4991},{"style":229},[4992],{"type":52,"value":2064},{"type":46,"tag":184,"props":4994,"children":4995},{"style":197},[4996],{"type":52,"value":2137},{"type":46,"tag":184,"props":4998,"children":4999},{"style":332},[5000],{"type":52,"value":2142},{"type":46,"tag":184,"props":5002,"children":5003},{"style":229},[5004],{"type":52,"value":1294},{"type":46,"tag":184,"props":5006,"children":5007},{"style":197},[5008],{"type":52,"value":1409},{"type":46,"tag":184,"props":5010,"children":5011},{"style":229},[5012],{"type":52,"value":1279},{"type":46,"tag":184,"props":5014,"children":5015},{"style":197},[5016],{"type":52,"value":1418},{"type":46,"tag":184,"props":5018,"children":5019},{"style":332},[5020],{"type":52,"value":1289},{"type":46,"tag":184,"props":5022,"children":5023},{"style":229},[5024],{"type":52,"value":1294},{"type":46,"tag":184,"props":5026,"children":5027},{"style":197},[5028],{"type":52,"value":2171},{"type":46,"tag":126,"props":5030,"children":5031},{},[],{"type":46,"tag":55,"props":5033,"children":5035},{"id":5034},"step-6-verify",[5036],{"type":52,"value":5037},"Step 6: Verify",{"type":46,"tag":62,"props":5039,"children":5040},{},[5041],{"type":52,"value":5042},"Re-run triage to confirm the fix worked:",{"type":46,"tag":160,"props":5044,"children":5046},{"id":5045},"claude-runs-12",[5047],{"type":52,"value":171},{"type":46,"tag":173,"props":5049,"children":5051},{"className":175,"code":5050,"language":177,"meta":178,"style":178},"pup traces search --query \"service:\u003CSERVICE_NAME>\" --from 1h --limit 5\npup fleet tracers list --filter \"service:\u003CSERVICE_NAME>\"\n",[5052],{"type":46,"tag":93,"props":5053,"children":5054},{"__ignoreMap":178},[5055,5102],{"type":46,"tag":184,"props":5056,"children":5057},{"class":186,"line":187},[5058,5062,5066,5070,5074,5078,5082,5086,5090,5094,5098],{"type":46,"tag":184,"props":5059,"children":5060},{"style":191},[5061],{"type":52,"value":194},{"type":46,"tag":184,"props":5063,"children":5064},{"style":197},[5065],{"type":52,"value":1164},{"type":46,"tag":184,"props":5067,"children":5068},{"style":197},[5069],{"type":52,"value":1169},{"type":46,"tag":184,"props":5071,"children":5072},{"style":197},[5073],{"type":52,"value":1174},{"type":46,"tag":184,"props":5075,"children":5076},{"style":229},[5077],{"type":52,"value":257},{"type":46,"tag":184,"props":5079,"children":5080},{"style":197},[5081],{"type":52,"value":1183},{"type":46,"tag":184,"props":5083,"children":5084},{"style":229},[5085],{"type":52,"value":267},{"type":46,"tag":184,"props":5087,"children":5088},{"style":197},[5089],{"type":52,"value":1192},{"type":46,"tag":184,"props":5091,"children":5092},{"style":197},[5093],{"type":52,"value":1197},{"type":46,"tag":184,"props":5095,"children":5096},{"style":197},[5097],{"type":52,"value":1202},{"type":46,"tag":184,"props":5099,"children":5100},{"style":1205},[5101],{"type":52,"value":1208},{"type":46,"tag":184,"props":5103,"children":5104},{"class":186,"line":280},[5105,5109,5113,5117,5121,5125,5129,5133],{"type":46,"tag":184,"props":5106,"children":5107},{"style":191},[5108],{"type":52,"value":194},{"type":46,"tag":184,"props":5110,"children":5111},{"style":197},[5112],{"type":52,"value":1220},{"type":46,"tag":184,"props":5114,"children":5115},{"style":197},[5116],{"type":52,"value":1225},{"type":46,"tag":184,"props":5118,"children":5119},{"style":197},[5120],{"type":52,"value":1230},{"type":46,"tag":184,"props":5122,"children":5123},{"style":197},[5124],{"type":52,"value":1235},{"type":46,"tag":184,"props":5126,"children":5127},{"style":229},[5128],{"type":52,"value":257},{"type":46,"tag":184,"props":5130,"children":5131},{"style":197},[5132],{"type":52,"value":1183},{"type":46,"tag":184,"props":5134,"children":5135},{"style":229},[5136],{"type":52,"value":1248},{"type":46,"tag":62,"props":5138,"children":5139},{},[5140,5142,5147,5149,5155],{"type":52,"value":5141},"If traces are arriving — resolved (the service may take a minute to reappear in ",{"type":46,"tag":93,"props":5143,"children":5145},{"className":5144},[],[5146],{"type":52,"value":968},{"type":52,"value":5148},"; an empty tracers list immediately after the restart is expected telemetry lag, not a failure). Automatically proceed to ",{"type":46,"tag":93,"props":5150,"children":5152},{"className":5151},[],[5153],{"type":52,"value":5154},"onboarding-summary",{"type":52,"value":5156}," now — do not ask the user for permission.",{"type":46,"tag":62,"props":5158,"children":5159},{},[5160],{"type":52,"value":5161},"ERROR: No traces arriving — return to Step 2 with the new triage data and form updated hypotheses.",{"type":46,"tag":126,"props":5163,"children":5164},{},[],{"type":46,"tag":55,"props":5166,"children":5168},{"id":5167},"security-constraints",[5169],{"type":52,"value":5170},"Security constraints",{"type":46,"tag":68,"props":5172,"children":5173},{},[5174,5179,5192,5205],{"type":46,"tag":72,"props":5175,"children":5176},{},[5177],{"type":52,"value":5178},"Never write a raw API key into any file or chat message",{"type":46,"tag":72,"props":5180,"children":5181},{},[5182,5184,5190],{"type":52,"value":5183},"Never run ",{"type":46,"tag":93,"props":5185,"children":5187},{"className":5186},[],[5188],{"type":52,"value":5189},"kubectl delete",{"type":52,"value":5191}," without user confirmation",{"type":46,"tag":72,"props":5193,"children":5194},{},[5195,5197,5203],{"type":52,"value":5196},"Never modify ",{"type":46,"tag":93,"props":5198,"children":5200},{"className":5199},[],[5201],{"type":52,"value":5202},"admissionController",{"type":52,"value":5204}," settings directly",{"type":46,"tag":72,"props":5206,"children":5207},{},[5208,5214],{"type":46,"tag":93,"props":5209,"children":5211},{"className":5210},[],[5212],{"type":52,"value":5213},"docker push",{"type":52,"value":5215}," to a registry always requires user confirmation",{"type":46,"tag":5217,"props":5218,"children":5219},"style",{},[5220],{"type":52,"value":5221},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":5223,"total":5324},[5224,5237,5253,5264,5280,5294,5310],{"slug":5225,"name":5225,"fn":5226,"description":5227,"org":5228,"tags":5229,"stars":25,"repoUrl":26,"updatedAt":5236},"agent-install","install Datadog Agent on Kubernetes","Install the Datadog Agent on Kubernetes using the Datadog Operator — required before enabling Single Step Instrumentation (SSI), which automatically instruments applications for APM without code changes. Only use if no Datadog Agent is deployed on the cluster yet.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5230,5231,5234,5235],{"name":17,"slug":18,"type":15},{"name":5232,"slug":5233,"type":15},"Deployment","deployment",{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},"2026-04-15T04:57:27.489805",{"slug":5238,"name":5238,"fn":5239,"description":5240,"org":5241,"tags":5242,"stars":25,"repoUrl":26,"updatedAt":5252},"agent-observability-auto-experiment","run iterative code improvements using Datadog data","Run an iterative code-improvement hill-climb against real Datadog LLM-Obs data, locally, with Claude Code as the agent. Establishes a baseline eval, makes one focused change, re-scores with the same harness, keeps the change if it improves the score in the goal's direction (labeling within-noise gains tentative), and repeats. Use when the user says \"run an auto experiment\", \"hill-climb this code\", \"iteratively improve X and measure the delta\", \"optimize this prompt\u002Ffile against my traces\", \"auto-optimize against LLM-Obs\", or wants the local equivalent of the auto_experiments worker. Works from a local dataset file, an ml_app, a dataset_id, or a list of trace_ids.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5243,5244,5245,5248,5251],{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"name":5246,"slug":5247,"type":15},"Evals","evals",{"name":5249,"slug":5250,"type":15},"LLM","llm",{"name":13,"slug":14,"type":15},"2026-07-31T05:52:13.711906",{"slug":5254,"name":5254,"fn":5255,"description":5256,"org":5257,"tags":5258,"stars":25,"repoUrl":26,"updatedAt":5263},"agent-observability-eval-bootstrap","bootstrap evaluators from production traces","Bootstrap evaluators from production traces — by default propose online LLM-judge evaluators and, after you confirm, create them in Datadog as disabled drafts (never auto-enabled); on request emit Python SDK code or a framework-agnostic JSON spec instead. Use when user says \"bootstrap evaluators\", \"generate evaluators\", \"create evals from traces\", \"eval bootstrap\", \"write evaluators\", \"build eval suite\", \"publish evaluators\", or wants to generate BaseEvaluator\u002FLLMJudge code or online judge configs from production LLM trace data. Works with ml_app and optional RCA report or failure hypothesis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5259,5260,5261,5262],{"name":17,"slug":18,"type":15},{"name":5246,"slug":5247,"type":15},{"name":5249,"slug":5250,"type":15},{"name":13,"slug":14,"type":15},"2026-06-19T09:04:19.259734",{"slug":5265,"name":5265,"fn":5266,"description":5267,"org":5268,"tags":5269,"stars":25,"repoUrl":26,"updatedAt":5279},"agent-observability-eval-pipeline","run agent observability and evaluation pipelines","End-to-end Agent Observability pipeline for an instrumented ml_app — classify production traces, root-cause failures, bootstrap evaluators, then (optionally) sample + publish a dataset, generate + run an experiment, and analyze results. Six narrated phases with a standardized banner and a \"continue\" checkpoint between each. Pure orchestration over the agent-observability sub-skills (`agent-observability-session-classify`, `agent-observability-trace-rca`, `agent-observability-eval-bootstrap`, `agent-observability-experiment-py-bootstrap`, `agent-observability-experiment-analyzer`). Use when user says \"run the eval pipeline\", \"go from traces to evals\", \"bootstrap evals end to end\", \"classify then RCA then bootstrap\", \"build an eval set from scratch\", \"onboard me to datasets and experiments\", \"walk me through experiments\", \"I have an ml_app, now what\", \"Agent Observability onboarding\", \"guided experiment setup\", \"from traces to experiments\", or wants a deterministic, narrated tour from production data through evaluators, datasets, and experiments. Stop early with `--stop-after \u003Cphase>` to short-circuit at evaluators or dataset, or resume mid-flow with `--start-at \u003Cphase>`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5270,5273,5276,5277,5278],{"name":5271,"slug":5272,"type":15},"Agents","agents",{"name":5274,"slug":5275,"type":15},"Data Pipeline","data-pipeline",{"name":17,"slug":18,"type":15},{"name":5246,"slug":5247,"type":15},{"name":13,"slug":14,"type":15},"2026-06-19T09:04:17.231423",{"slug":5281,"name":5281,"fn":5282,"description":5283,"org":5284,"tags":5285,"stars":25,"repoUrl":26,"updatedAt":5293},"agent-observability-experiment-analyzer","analyze LLM experiment results","Analyze LLM experiment results. Handles single or comparative experiments, exploratory or Q&A modes. Use when user says \"analyze experiment\", \"compare experiments\", \"analyze against baseline\", or provides one or two experiment IDs for analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5286,5289,5290,5291,5292],{"name":5287,"slug":5288,"type":15},"Analytics","analytics",{"name":17,"slug":18,"type":15},{"name":5246,"slug":5247,"type":15},{"name":5249,"slug":5250,"type":15},{"name":13,"slug":14,"type":15},"2026-06-19T09:04:21.212498",{"slug":5295,"name":5295,"fn":5296,"description":5297,"org":5298,"tags":5299,"stars":25,"repoUrl":26,"updatedAt":5309},"agent-observability-experiment-py-bootstrap","generate Python experiment clients for LLM observability","Generates a self-contained Python experiment client that uses the ddtrace.llmobs SDK. Emits either a runnable .py script or a Jupyter .ipynb notebook matching the canonical DataDog reference notebook style. Use when the user says \"generate Python experiment\", \"write an SDK experiment\", \"create a ddtrace experiment\", \"Python notebook experiment\", \"use the Agent Observability SDK\", or has `ddtrace` installed and wants idiomatic SDK code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5300,5301,5304,5305,5306],{"name":17,"slug":18,"type":15},{"name":5302,"slug":5303,"type":15},"Jupyter","jupyter",{"name":5249,"slug":5250,"type":15},{"name":13,"slug":14,"type":15},{"name":5307,"slug":5308,"type":15},"Python","python","2026-06-19T09:04:22.640384",{"slug":5311,"name":5311,"fn":5312,"description":5313,"org":5314,"tags":5315,"stars":25,"repoUrl":26,"updatedAt":5323},"agent-observability-replay-trace","iterate on LLM traces with local code","Use when a developer wants to iterate on ONE specific Agent Observability \u002F LLM Obs trace whose output they didn't like — re-running that trace against their LOCAL code, seeing a concise diff of the old vs new output, and looping (change code → replay → diff) until satisfied. Invoked as \u002Fagent-observability-replay-trace \u003Ctrace-id> [changes to test]. Signals: \"replay this trace\"; \"iterate on a trace\"; \"this trace's output is wrong, fix it and re-run\"; \"re-run trace \u003Cid> with \u003Cchange>\"; pasting a trace id from the Agent Observability UI with a description of what to fix. It fetches the trace via the datadog-llmo MCP or the pup CLI, edits code, re-runs the app to emit a NEW trace, and diffs the two — no local server, no browser. For agents traced with ddtrace \u002F LLM Obs (Python first-class), with JSON-serializable entry input. Do NOT use for: scored Experiments or the browser \"Replay\" button (that's agent-observability-replay-experiment), building an experiment from a dataset\u002FCSV, writing evaluators, root-causing failed traces, or RUM\u002FHTTP session replay.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5316,5317,5318,5319,5320],{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"name":5249,"slug":5250,"type":15},{"name":13,"slug":14,"type":15},{"name":5321,"slug":5322,"type":15},"Tracing","tracing","2026-07-31T05:52:08.594182",34,{"items":5326,"total":5452},[5327,5334,5342,5349,5357,5365,5373,5381,5393,5405,5417,5437],{"slug":5225,"name":5225,"fn":5226,"description":5227,"org":5328,"tags":5329,"stars":25,"repoUrl":26,"updatedAt":5236},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5330,5331,5332,5333],{"name":17,"slug":18,"type":15},{"name":5232,"slug":5233,"type":15},{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"slug":5238,"name":5238,"fn":5239,"description":5240,"org":5335,"tags":5336,"stars":25,"repoUrl":26,"updatedAt":5252},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5337,5338,5339,5340,5341],{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"name":5246,"slug":5247,"type":15},{"name":5249,"slug":5250,"type":15},{"name":13,"slug":14,"type":15},{"slug":5254,"name":5254,"fn":5255,"description":5256,"org":5343,"tags":5344,"stars":25,"repoUrl":26,"updatedAt":5263},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5345,5346,5347,5348],{"name":17,"slug":18,"type":15},{"name":5246,"slug":5247,"type":15},{"name":5249,"slug":5250,"type":15},{"name":13,"slug":14,"type":15},{"slug":5265,"name":5265,"fn":5266,"description":5267,"org":5350,"tags":5351,"stars":25,"repoUrl":26,"updatedAt":5279},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5352,5353,5354,5355,5356],{"name":5271,"slug":5272,"type":15},{"name":5274,"slug":5275,"type":15},{"name":17,"slug":18,"type":15},{"name":5246,"slug":5247,"type":15},{"name":13,"slug":14,"type":15},{"slug":5281,"name":5281,"fn":5282,"description":5283,"org":5358,"tags":5359,"stars":25,"repoUrl":26,"updatedAt":5293},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5360,5361,5362,5363,5364],{"name":5287,"slug":5288,"type":15},{"name":17,"slug":18,"type":15},{"name":5246,"slug":5247,"type":15},{"name":5249,"slug":5250,"type":15},{"name":13,"slug":14,"type":15},{"slug":5295,"name":5295,"fn":5296,"description":5297,"org":5366,"tags":5367,"stars":25,"repoUrl":26,"updatedAt":5309},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5368,5369,5370,5371,5372],{"name":17,"slug":18,"type":15},{"name":5302,"slug":5303,"type":15},{"name":5249,"slug":5250,"type":15},{"name":13,"slug":14,"type":15},{"name":5307,"slug":5308,"type":15},{"slug":5311,"name":5311,"fn":5312,"description":5313,"org":5374,"tags":5375,"stars":25,"repoUrl":26,"updatedAt":5323},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5376,5377,5378,5379,5380],{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"name":5249,"slug":5250,"type":15},{"name":13,"slug":14,"type":15},{"name":5321,"slug":5322,"type":15},{"slug":5382,"name":5382,"fn":5383,"description":5384,"org":5385,"tags":5386,"stars":25,"repoUrl":26,"updatedAt":5392},"agent-observability-session-classify","evaluate user intent satisfaction in sessions","Classify whether user intent was satisfied in a Datadog Agent Observability trace or session. Three modes: (1) session_id — classify a single CMD+I assistant session with RUM; (2) trace_id — classify a single Agent Observability trace without RUM; (3) ml_app — sample and classify multiple sessions or traces from a given LLM app. Output is compact by default (verdict + one-sentence reason). Use when evaluating satisfaction, classifying sessions\u002Ftraces, labeling data, or generating signal for agent-observability-eval-pipeline or agent-observability-trace-rca.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5387,5388,5389,5390,5391],{"name":5287,"slug":5288,"type":15},{"name":17,"slug":18,"type":15},{"name":5246,"slug":5247,"type":15},{"name":5249,"slug":5250,"type":15},{"name":13,"slug":14,"type":15},"2026-06-19T09:04:26.341497",{"slug":5394,"name":5394,"fn":5395,"description":5396,"org":5397,"tags":5398,"stars":25,"repoUrl":26,"updatedAt":5404},"agent-observability-trace-rca","diagnose LLM application failures from traces","Root cause analysis on production LLM traces. Diagnoses why an LLM application is failing — works from eval judge verdicts, runtime errors, or structural anomalies depending on what signals are present. Walks the span tree from symptom to root cause. Use when user says \"what's wrong with my app\", \"why is my eval failing\", \"analyze errors\", \"root cause analysis\", \"diagnose failures\", or wants to understand production failure patterns.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5399,5400,5401,5402,5403],{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"name":5246,"slug":5247,"type":15},{"name":5249,"slug":5250,"type":15},{"name":13,"slug":14,"type":15},"2026-06-19T09:04:24.316244",{"slug":5406,"name":5406,"fn":5407,"description":5408,"org":5409,"tags":5410,"stars":25,"repoUrl":26,"updatedAt":5416},"agent-skills","use Datadog observability skills","Datadog skills for AI agents. Essential monitoring, logging, tracing and observability.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5411,5412,5415],{"name":17,"slug":18,"type":15},{"name":5413,"slug":5414,"type":15},"Monitoring","monitoring",{"name":13,"slug":14,"type":15},"2026-04-06T18:08:33.337476",{"slug":5418,"name":5418,"fn":5419,"description":5420,"org":5421,"tags":5422,"stars":25,"repoUrl":26,"updatedAt":5436},"datadog-app","build and manage Datadog applications","Guides developers building Datadog Apps with TypeScript, React, the @datadog\u002Fapps scaffolder, and @datadog\u002Fvite-plugin. Use when a user wants to scaffold, run, debug, upgrade, build, upload, publish, upload without publishing (draft upload), add an upload-no-publish script, set up CI\u002FCD, use OAuth or API\u002Fapplication key auth, trigger\u002Fpoll Workflow Automation, choose DDSQL or Action Catalog for backend data access, or query app datastores with DDSQL, including backend function troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5423,5424,5427,5430,5433],{"name":17,"slug":18,"type":15},{"name":5425,"slug":5426,"type":15},"Frontend","frontend",{"name":5428,"slug":5429,"type":15},"React","react",{"name":5431,"slug":5432,"type":15},"TypeScript","typescript",{"name":5434,"slug":5435,"type":15},"Vite","vite","2026-06-18T08:01:32.562331",{"slug":5438,"name":5438,"fn":5439,"description":5440,"org":5441,"tags":5442,"stars":25,"repoUrl":26,"updatedAt":5451},"dd-apm","query Datadog APM traces","APM - install, onboard, instrument, enable, set up, configure, traces, services, dependencies, performance analysis. Use for any request involving Datadog APM setup, instrumentation (SSI, ddtrace, agent install), or analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[5443,5444,5447,5448],{"name":17,"slug":18,"type":15},{"name":5445,"slug":5446,"type":15},"Distributed Tracing","distributed-tracing",{"name":13,"slug":14,"type":15},{"name":5449,"slug":5450,"type":15},"Performance","performance","2026-04-06T18:08:34.575282",35]