К основному содержанию
скилл CX Codex

verify-ssi — скилл для Claude Code: проверка APM SSI в Kubernetes

Скилл проверяет, что Single Step Instrumentation действительно инструментирует поды и трейсер шлёт телеметрию. Запускают после enable-ssi.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add datadog-labs/agent-skills --skill verify-ssi -a claude-code
Открыть на GitHub

Что делает verify-ssi

Скилл ведёт агента по трём шагам проверки SSI в Kubernetes. Сначала смотрит, попали ли в поды init-контейнеры datadog-lib-<language>-init и datadog-init-apm-inject. Потом ищет сервис в списке pup apm services list с флагом isTraced: true. Третий шаг включается только если в enable-ssi был задан ddTraceConfigs — тогда скилл сверяет переменные окружения в поде с тем, что прописано в манифесте DatadogAgent.

Перед началом нужно разрешить переменные CLUSTER_NAME, ENV и SERVICE_NAME — без конкретных значений шаги не запускаются. Ещё понадобится pup-cli: скилл проверяет pup --version, при отсутствии ставит через brew tap datadog-labs/pack и brew install pup, а затем авторизует через pup auth login --site <DD_SITE>. Если браузера нет, остаётся запасной путь с export DD_APP_KEY=<your-app-key>.

Главная ловушка — поды. Если их не перезапустили после включения SSI, init-контейнеров в спеке не будет, и проверка упадёт на первом шаге. Второй момент: SSI не перезаписывает переменные, которые Deployment задаёт сам, поэтому расхождение значения — это повод убрать переменную из Deployment или привести её к нужной. Когда все проверки прошли, скилл сам переходит к onboarding-summary, без запроса разрешения.

Какие задачи решает

  • убедиться, что init-контейнеры SSI попали в поды
  • найти сервис в списке трейсинга и проверить флаг isTraced
  • сверить переменные ddTraceConfigs в поде с манифестом DatadogAgent
  • отличить неперезапущенный под от ненастроенного таргета
  • прогнать тестовый трафик, если сервис не появился в списке

Примеры запросов агенту

  • проверь, что SSI работает в кластере
  • под запущен, но сервиса нет в трейсинге — разберись
  • сверь ddTraceConfigs в поде с манифестом агента

Как установить verify-ssi

1Через Skills CLI (Vercel)

npx skills add datadog-labs/agent-skills --skill verify-ssi -a claude-code

2Вручную: положить файлы

~/.claude/skills/verify-ssi/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/verify-ssi/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о verify-ssi

Как установить verify-ssi в Claude?

Выполните npx skills add datadog-labs/agent-skills --skill verify-ssi -a claude-code. Скилл окажется в ~/.claude/skills/verify-ssi/SKILL.md.

Что делает verify-ssi?

Проверяет SSI end-to-end: наличие init-контейнеров в подах, появление сервиса в pup apm services list с isTraced: true и доставку переменных ddTraceConfigs до контейнеров.

Что нужно до запуска?

Завершённый enable-ssi и перезапущенные поды приложения. Ещё нужен pup-cli с авторизацией — скилл проверяет его сам и при отсутствии ставит через brew.

Исходный текст

SKILL.md · MIT
---
name: verify-ssi
description: Verify Single Step Instrumentation (SSI) is working end-to-end on Kubernetes — SSI automatically instruments applications for APM without code changes. Only use after enable-ssi has run.
metadata:
  version: "1.0.0"
  author: datadog-labs
  repository: https://github.com/datadog-labs/agent-skills
  tags: datadog,apm,kubernetes,ssi,verification,instrumentation
  alwaysApply: "false"
---

# Verify APM SSI on Kubernetes

> **Before doing anything else:** Fully resolve all variables in `## Context to resolve before acting`. Do not begin Step 1 until every variable has a concrete value.

## Triggers

Invoke this skill when the user expresses intent to:
- Confirm SSI is working after enabling APM
- Check whether pods are being instrumented
- Verify the tracer is running and reporting telemetry
- Confirm tracer config is applied correctly

Do NOT invoke this skill if:
- SSI has not been enabled yet — run `enable-ssi` first
- Pods are not being instrumented at all — use `troubleshoot-ssi`

---

## Prerequisites

- [ ] `enable-ssi` is complete
- [ ] Application pods have been restarted since SSI was enabled

### pup-cli: check, install, and authenticate

### Claude runs

```bash
pup --version
```

If not found:

### Claude runs

```bash
brew tap datadog-labs/pack
brew install pup
```

Check auth:
```bash
pup auth status --site <DD_SITE>
```

If not authenticated:

### Claude runs

```bash
pup auth login --site <DD_SITE>
```

> This opens a browser tab for OAuth. Complete the login there — Claude will continue once the command exits.

If valid token — proceed.
ERROR: No browser available — use API key fallback: `export DD_APP_KEY=<your-app-key>`

---

## Context to resolve before acting

| Variable | How to resolve |
|---|---|
| `CLUSTER_NAME` | Check `spec.global.clusterName` in `datadog-agent.yaml`, or `kubectl config current-context` |
| `ENV` | Check `tags.datadoghq.com/env` label on the application Deployment |
| `SERVICE_NAME` | Check `tags.datadoghq.com/service` label on the application Deployment |

---

## Step 1: Confirm Pods are Instrumented

### Claude runs

```bash
kubectl get pod -l app=<APP_LABEL> -n <APP_NAMESPACE> \
  -o jsonpath='{.items[0].spec.initContainers[*].name}'
```

If the output includes `datadog-lib-<language>-init` and `datadog-init-apm-inject` — SSI init containers are injected.

ERROR: Init containers missing — pod was not restarted after SSI was enabled, or namespace targeting is not matching. Restart the pod and recheck.

---

## Step 2: Confirm the Tracer is Reporting Telemetry

### Claude runs

```bash
DD_SITE=<DD_SITE> pup apm services list --env <ENV> --from 1h
```

If `<SERVICE_NAME>` appears in the services list with `isTraced: true` — continue to Step 3.

ERROR: Service missing — send some traffic to the app first, then retry:

### Claude runs

```bash
# Port-forward and send test traffic
kubectl port-forward deployment/<DEPLOYMENT_NAME> 8099:8000 -n <APP_NAMESPACE> &
sleep 2 && for i in $(seq 1 10); do curl -s -o /dev/null http://localhost:8099/; done
sleep 30 && kill %1 2>/dev/null
DD_SITE=<DD_SITE> pup apm services list --env <ENV> --from 10m
```

ERROR: Still missing after traffic — check the agent's trace receiver: `kubectl exec -n <AGENT_NAMESPACE> <AGENT_POD> -c agent -- agent status | grep -A 10 "Receiver (previous minute)"`. If receiver shows 0 traces, go to `troubleshoot-ssi`.

---

## Step 3: Confirm Tracer Configuration

**Only run this step if `ddTraceConfigs` was explicitly configured in `enable-ssi`** (e.g. profiling, AppSec, Data Streams). If basic SSI was set up without `ddTraceConfigs`, skip this step. No `ddTraceConfigs` means there is nothing to check.

The pod spec is the source of truth for whether `ddTraceConfigs` reached the workload. SSI adds each entry as an env var on the pod's containers.

Run this for a pod in each target that has `ddTraceConfigs`. For Data Streams, run it once per Deployment in `DSM_SERVICES`, in that Deployment's namespace, with `<LABEL_KEY>` set to `DSM_LABEL_KEY` and `<APP_LABEL>` to that Deployment's value (both from `enable-dsm`). Otherwise `<LABEL_KEY>` is `app`. A pod matched only by a target without `ddTraceConfigs` (such as the catch-all `default` target) should not carry these variables. That is expected, not a failure.

### Claude runs

```bash
kubectl get pod -l <LABEL_KEY>=<APP_LABEL> -n <APP_NAMESPACE> --sort-by=.metadata.creationTimestamp \
  -o jsonpath='{range .items[-1:].spec.containers[*]}{.name}{":"}{"\n"}{range .env[*]}{"  "}{.name}={.value}{.valueFrom}{"\n"}{end}{end}' | grep -E '^[^ ].*:$|^  DD_'
```

To see which target the pod matched:

```bash
kubectl get pod -l <LABEL_KEY>=<APP_LABEL> -n <APP_NAMESPACE> --sort-by=.metadata.creationTimestamp \
  -o jsonpath='{.items[-1:].metadata.annotations.internal\.apm\.datadoghq\.com/applied-target}'
```

If every `ddTraceConfigs` variable for that target appears in the application container with the configured value, the config reached the pod. This confirms delivery, not that the SDK acted on it; `onboarding-summary` checks the product data. Continue.

ERROR: A variable is missing or has a different value.
- Different value: the Deployment sets that variable itself, and SSI never overwrites an existing variable. Remove it from the Deployment or align it.
- Missing: check it is present in the `DatadogAgent` manifest under the target that matches this pod, and that the pod was restarted after the Cluster Agent finished rolling out.

Then check what the tracer reports at runtime. This output is informational; do not fail Step 3 on it.

### Claude runs

```bash
pup apm service-library-config get \
  --service-name <SERVICE_NAME> \
  --env <ENV>
```

This view does not list every setting for every SDK. For example, `DD_DATA_STREAMS_ENABLED` does not show for Java, Python, Ruby, or Go services even when DSM is on. A setting missing here is not a failure when it is present in the pod env. For Data Streams, `onboarding-summary` confirms data with `data_streams.latency` (or `enable-dsm` Step 3 when it was run standalone).

---

## Done

Exit when ALL of the following are true:
- [ ] Step 1: target pods have SSI init containers injected (`datadog-lib-<language>-init` and `datadog-init-apm-inject`)
- [ ] Step 2: service appears in `pup apm services list` with `isTraced: true`
- [ ] Step 3 (only if `ddTraceConfigs` was set): each `ddTraceConfigs` variable appears in the env of pods in its target with the configured value. A setting missing from `pup apm service-library-config get` is not a failure

If any check fails, go to `troubleshoot-ssi`.

When all steps pass, automatically proceed to `onboarding-summary` now — do not ask the user for permission.

---

## Security constraints

- Never write a raw API key into any file or chat message
- Never run `kubectl delete` without user confirmation

© datadog-labs · MIT · datadog-labs/agent-skills

Похожие скиллы

Всё по теме «DevOps и инфраструктура» →
cx-service-catalog coralogix Скилл учит агента вытаскивать метрики сервисов, баз данных, JVM и подов Kubernetes из Service Catalog Coralogix через cx service-catalog. CX Codex +1 2 400установок datadog devops-skills Настраивает агент Datadog, сбор логов, APM-трейсинг и метрики для сервисов и баз данных. Пригодится при развёртывании единого мониторинга инфраструктуры. CX Codex +1 312установок groundcover-cli paymog Скилл учит агента дёргать Go-утилиту groundcover: смотреть логи, трейсы, метрики и события k8s, а ещё управлять мониторами и silences. CX Codex +1 8 900установок opentelemetry grafana Скилл помогает подключить OpenTelemetry к приложению и отправить метрики, логи и трейсы в Grafana Cloud или свой Mimir, Loki, Tempo. CX Codex +1 6 100установок observability-k8s-investigation elastic Диагностирует сбои Kubernetes по телеметрии OTel: перезапуски подов, давление на узлы и ошибки плоскости управления. CX Codex +1 3 000установок domain-cloud-native actionbook Скилл задаёт правила разработки облачных микросервисов на Rust: от сигналов завершения работы до проверок готовности в Kubernetes. CX Codex +1 2 900установок

Из того же набора20

dd-audit-compliance-report Собирает доказательства из Datadog Audit Trail под требования SOC 2 и PCI DSS и выдаёт готовый к проверке отчёт. CX Codex +1 477установок dd-audit-cost-spike-investigation Скилл связывает скачок потребления в Datadog с изменениями конфигурации из Audit Trail и показывает, кто и что поменял перед всплеском. CX Codex +1 473установок upgrade-browser-sdk-v7 Ведёт проект с Datadog Browser SDK с версии 6 на 7: находит устаревшие опции, меняет CDN-ссылки и API. Пригодится, когда после обновления сыпятся ошибки конфигурации. CX Codex +1 459установок k9-ownership-byod-setup Собирает CSV-таблицу предпочтений владения ресурсами для Datadog и подсказывает, как её загрузить. Нужен, когда Ownership Agent ошибается с владельцами. CX Codex +1 454установок agent-observability-auto-experiment Гоняет цикл улучшения кода против реальных данных Datadog LLM-Obs: замеряет базовую оценку, вносит одно изменение, пересчитывает и оставляет его, если стало лучше. CX Codex +1 453установок dd-audit-ai-activity Разбирает журнал Audit Trail и показывает, кто из пользователей вызывал инструменты Datadog MCP, что именно менял и где поведение выбивается из обычного. CX Codex +1 433установок onboarding-summary Собирает живой отчёт о том, что Single Step Instrumentation в Kubernetes действительно работает, и даёт ссылки в интерфейс Datadog. CX Codex +1 427установок enable-ssi Включает Single Step Instrumentation в Kubernetes: приложения начинают отправлять трейсы в Datadog без изменений в коде. Нужен, когда Datadog Agent уже стоит в кластере. CX Codex +1 425установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой