verify-ssi について
Kubernetes ワークロードで Datadog APM のシングルステップインスツルメンテーション(SSI)が機能しているか確認するスキルです。初期化コンテナ、テレメトリー、設定時のトレーサー設定を検証します。
主な機能
- 01SSI 初期化コンテナの注入確認
- 02Datadog APM のサービステレメトリー確認
- 03設定済みトレーサー環境変数の検査
- 04適用された SSI ターゲットの確認
活用シーン
- 01APM 有効化後の SSI 検証
- 02Pod の再起動と計装適用の確認
- 03トレーサー設定の反映確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ datadog-labs/ agent-skills --skill verify-ssiインストール後、Claude Code で/verify-ssiを入力して読み込まれたか確認します。
詳細
Kubernetes で APM SSI を検証する
最初に行うこと:
## Context to resolve before actingに記載されたすべての変数を完全に解決してください。すべての変数に具体的な値が設定されるまで、ステップ 1 を開始しないでください。
トリガー
ユーザーが次の意図を示した場合に、このスキルを呼び出します。
- APM を有効にした後、SSI が動作していることを確認する
- Pod がインスツルメントされているか確認する
- トレーサーが実行され、テレメトリーを報告しているか確認する
- トレーサーの設定が正しく適用されているか確認する
次の場合は、このスキルを呼び出さないでください。
- SSI がまだ有効になっていない場合 — 先に
enable-ssiを実行してください - Pod がまったくインスツルメントされていない場合 —
troubleshoot-ssiを使用してください
前提条件
-
enable-ssiが完了している - SSI を有効にした後、アプリケーションの Pod が再起動されている
pup-cli:確認、インストール、認証
Claude が実行
pup --version
見つからない場合:
Claude が実行
brew tap datadog-labs/pack
brew install pup
認証を確認します:
pup auth status --site <DD_SITE>
認証されていない場合:
Claude が実行
pup auth login --site <DD_SITE>
OAuth のためにブラウザーのタブが開きます。そこでログインを完了してください。コマンドが終了すると、Claude が処理を続行します。
有効なトークンがある場合 — 続行します。
エラー:ブラウザーが利用できません — API キーに切り替えてください:export DD_APP_KEY=<your-app-key>
実行前に解決するコンテキスト
| 変数 | 解決方法 |
|---|---|
CLUSTER_NAME | datadog-agent.yaml の spec.global.clusterName を確認するか、kubectl config current-context を実行します |
ENV | アプリケーションの Deployment にある tags.datadoghq.com/env ラベルを確認します |
SERVICE_NAME | アプリケーションの Deployment にある tags.datadoghq.com/service ラベルを確認します |
ステップ 1:Pod がインスツルメントされていることを確認する
Claude が実行
kubectl get pod -l app=<APP_LABEL> -n <APP_NAMESPACE> \
-o jsonpath='{.items[0].spec.initContainers[*].name}'
出力に datadog-lib-<language>-init と datadog-init-apm-inject が含まれている場合 — SSI の init コンテナーが注入されています。
エラー:init コンテナーがありません — SSI を有効にした後に Pod が再起動されていないか、名前空間の対象指定が一致していません。Pod を再起動して、もう一度確認してください。
ステップ 2:トレーサーがテレメトリーを報告していることを確認する
Claude が実行
DD_SITE=<DD_SITE> pup apm services list --env <ENV> --from 1h
サービス一覧に <SERVICE_NAME> が isTraced: true とともに表示される場合 — ステップ 3 に進みます。
エラー:サービスが見つかりません — まずアプリにトラフィックを送信してから、再試行してください。
Claude が実行
# 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
エラー:トラフィックを送信しても見つかりません — エージェントのトレースレシーバーを確認してください:kubectl exec -n <AGENT_NAMESPACE> <AGENT_POD> -c agent -- agent status | grep -A 10 "Receiver (previous minute)"。レシーバーに 0 トレースと表示される場合は、troubleshoot-ssi に進んでください。
ステップ 3:トレーサーの設定を確認する
このステップは、enable-ssi で ddTraceConfigs を明示的に設定した場合にのみ実行してください(例:プロファイリング、AppSec、Data Streams)。ddTraceConfigs を指定せずに基本的な SSI を設定した場合は、このステップをスキップしてください。ddTraceConfigs がなければ、確認するものはありません。
Pod の仕様が、ddTraceConfigs がワークロードに適用されたかどうかを判断する際の基準になります。SSI は各エントリを Pod のコンテナーの環境変数として追加します。
ddTraceConfigs が設定された各ターゲットについて、Pod を 1 つ選んで実行してください。Data Streams の場合は、DSM_SERVICES にある各 Deployment について、その Deployment の名前空間で 1 回実行し、<LABEL_KEY> には DSM_LABEL_KEY、<APP_LABEL> にはその Deployment の値を設定してください(どちらも enable-dsm で確認できます)。それ以外の場合、<LABEL_KEY> は app です。ddTraceConfigs のないターゲット(全対象を捕捉する default ターゲットなど)にのみ一致した Pod に、これらの変数が設定されていなくても問題ありません。これは想定どおりであり、失敗ではありません。
Claude の実行
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_'
Pod が一致したターゲットを確認するには、次のようにします。
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}'
そのターゲットのすべての ddTraceConfigs 変数が、設定した値でアプリケーションコンテナに存在する場合、設定は Pod に届いています。これは設定の配信を確認するものであり、SDK がその設定を適用したことを確認するものではありません。適用状況は onboarding-summary で確認します。続行してください。
エラー:変数が見つからないか、値が異なっています。
- 値が異なる場合:Deployment 自体でその変数が設定されており、SSI は既存の変数を上書きしません。Deployment から削除するか、値を一致させてください。
- 見つからない場合:
DatadogAgentマニフェストの、この Pod に一致するターゲットに変数が存在することを確認してください。また、Cluster Agent のロールアウト完了後に Pod が再起動されたことを確認してください。
次に、実行時にトレーサーが報告する内容を確認します。この出力は情報提供のみを目的としています。Step 3 の判定には使用しないでください。
Claude の実行
pup apm service-library-config get \
--service-name <SERVICE_NAME> \
--env <ENV>
この画面には、すべての SDK のすべての設定が表示されるわけではありません。たとえば、DSM が有効でも、Java、Python、Ruby、Go のサービスでは DD_DATA_STREAMS_ENABLED は表示されません。ここに設定が表示されなくても、Pod の環境変数に存在する場合は失敗ではありません。Data Streams については、onboarding-summary が data_streams.latency でデータを確認します(単独で実行した場合は enable-dsm の Step 3 で確認します)。
完了
以下のすべてを満たしたら終了してください。
- Step 1:対象の Pod に SSI の init コンテナ(
datadog-lib-<language>-initおよびdatadog-init-apm-inject)が挿入されている - Step 2:サービスが
pup apm services listにisTraced: trueで表示される - Step 3(
ddTraceConfigsが設定されている場合のみ):対象の Pod の環境変数に、各ddTraceConfigs変数が設定した値で存在する。pup apm service-library-config getに設定が表示されなくても失敗ではありません
いずれかの確認に失敗した場合は、troubleshoot-ssi に進んでください。
すべてのステップに合格したら、今すぐ自動的に onboarding-summary に進んでください。ユーザーに許可を求めないでください。
セキュリティ上の制約
- 生の API キーをファイルやチャットメッセージに書き込まないでください
- ユーザーの確認なしに
kubectl deleteを実行しないでください