mcpField
V
verify-ssi

verify-ssi

github.com/datadog-labsクラウド・DevOps180428 回インストール6 日前に更新
リポジトリ

verify-ssi について

Kubernetes ワークロードで Datadog APM のシングルステップインスツルメンテーション(SSI)が機能しているか確認するスキルです。初期化コンテナ、テレメトリー、設定時のトレーサー設定を検証します。

主な機能

  1. 01SSI 初期化コンテナの注入確認
  2. 02Datadog APM のサービステレメトリー確認
  3. 03設定済みトレーサー環境変数の検査
  4. 04適用された SSI ターゲットの確認

活用シーン

  1. 01APM 有効化後の SSI 検証
  2. 02Pod の再起動と計装適用の確認
  3. 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_NAMEdatadog-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 を実行しないでください

コメント