シングルステップインスツルメンテーションを使用した ASM の脅威検出および防御機能の有効化は、現在プレビュー版です。

要件

  • 最小 Agent バージョン 7.53.0
  • Helm の最小対応バージョン: 3.62.0 (Kubernetes デプロイ向け)
  • 対応言語およびアーキテクチャ: シングルステップ ASM インスツルメンテーションは、x86_64 および arm64 アーキテクチャ上で、Java、Python、Node.js、.NET Core の各サービスのトレースのみをサポートします。
  • オペレーティングシステム: Linux VM (Debian、Ubuntu、Amazon Linux、CentOS/Red Hat、Fedora)、Docker、Kubernetes クラスター (Linux コンテナ)

ワンステップで有効化

[Datadog Agent をインストールまたはアップデート][1]する際に Enable Threat Protection (new) オプションを選択すると、Agent がインストールされ ASM が有効な状態に構成されます。これにより、追加のインストールや設定を行わずにアプリケーションを自動的にインスツルメントできます。この変更を反映させるには、サービスを再起動してください。

アカウント設定 (Ubuntu セットアップページ) で、APM インスツルメンテーションと Threat Protection の有効化トグルが強調表示されている様子。

以下の例では、各インフラストラクチャーのタイプでどのように動作するかを示しています。

1 つのコマンドで Agent のインストール、構成、起動を行うと同時に、ASM によるサービスのインスツルメンテーションも可能です。

Ubuntu ホストの場合

  1. 1 行のインストールコマンドを実行します。

    DD_API_KEY=<YOUR_DD_API_KEY> DD_SITE="<YOUR_DD_SITE>" DD_APM_INSTRUMENTATION_ENABLED=host DD_APM_INSTRUMENTATION_LIBRARIES="java:1,python:2,js:5,dotnet:3" DD_APPSEC_ENABLED=true bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_agent7.sh)"
    

    a. <YOUR_DD_API_KEY> を自分の Datadog API キーに置き換えます。

    b. <YOUR_DD_SITE> を自分の Datadog サイトに置き換えます。

  2. 現在のシェルセッションを終了します。

  3. 新しいシェルセッションを開始します。

  4. ホストまたは VM 上のサービスを再起動します。

  5. Datadog でサービスのパフォーマンス可観測性を調べます

注: ASM Threat Protection とコードセキュリティの両方をシングルステップで有効化するには、DD_APPSEC_ENABLED=trueDD_IAST_ENABLED=true の両環境変数をインストールコマンド (1行) に追加してください。

トレーシングライブラリのバージョン指定

デフォルトでは、サーバーで APM を有効化すると、Java、Python、Node.js、.NET Core の各サービスがサポートされます。これらの中から一部の言語のみで実装されたサービスがある場合は、インストールコマンド (1行) で DD_APM_INSTRUMENTATION_LIBRARIES を設定してください。

DD_APM_INSTRUMENTATION_LIBRARIES="java:1.25.0,python" DD_API_KEY=<YOUR_DD_API_KEY> DD_SITE="<YOUR_DD_SITE>" DD_APM_INSTRUMENTATION_ENABLED=host DD_APPSEC_ENABLED=true DD_ENV=staging bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_agent7.sh)"

言語名の後にコロンを置き、トレーシングライブラリのバージョンを指定することで、オプションでトレーシングライブラリのバージョン番号を指定できます。バージョンを指定しない場合、デフォルトは最新バージョンになります。言語名はカンマ区切りです。

サポートされている言語は以下の通りです。

  • .NET (dotnet)
  • Python (python)
  • Java (java)
  • Node.js (js)

: Node.js のトレーシングライブラリについては、Node.js のバージョンによって互換性があります。詳細は Datadog/dd-trace-js: JavaScript APM トレーサーを参照してください。

環境による可観測性データのタグ付け

Agent を通過するインスツルメンテーションされたサービスやその他のテレメトリーに、特定の環境を自動的にタグ付けするには、Linux 用の 1 行インストールコマンドで DD_ENV を設定します。例えば、Agent がステージング環境にインストールされている場合、DD_ENV=staging を設定して可観測性データを staging に関連付けます。

例:

DD_API_KEY=<YOUR_DD_API_KEY> DD_SITE="<YOUR_DD_SITE>" DD_APM_INSTRUMENTATION_ENABLED=host DD_APM_INSTRUMENTATION_LIBRARIES="java:1,python:2,js:5,dotnet:3" DD_APPSEC_ENABLED=true DD_ENV=staging bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_agent7.sh)"

Docker Linux コンテナの場合

  1. ライブラリインジェクターをインストールします。
    DD_APM_INSTRUMENTATION_ENABLED=docker DD_APM_INSTRUMENTATION_LIBRARIES="java:1,python:2,js:5,dotnet:3" DD_NO_AGENT_INSTALL=true DD_APPSEC_ENABLED=true bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_agent7.sh)"
    
  2. Docker で Agent を構成します。
    docker run -d --name dd-agent \
      -e DD_API_KEY=${YOUR_DD_API_KEY} \
      -e DD_APM_ENABLED=true \
      -e DD_APPSEC_ENABLED=true \
      -e DD_APM_NON_LOCAL_TRAFFIC=true \
      -e DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true \
      -e DD_APM_RECEIVER_SOCKET=/opt/datadog/apm/inject/run/apm.socket \
      -e DD_DOGSTATSD_SOCKET=/opt/datadog/apm/inject/run/dsd.socket \
      -v /opt/datadog/apm:/opt/datadog/apm \
      -v /var/run/docker.sock:/var/run/docker.sock:ro \
      gcr.io/datadoghq/agent:7
    
    <YOUR_DD_API_KEY> を自分の Datadog API に置き換えます。
  3. Docker コンテナを再起動します。
  4. Datadog でサービスのパフォーマンス可観測性を調べます

トレーシングライブラリのバージョン指定

デフォルトでは、サーバーで APM を有効にすると、Java、Python、Node.js、.NET サービスのサポートがインストールされます。これらの言語の一部で実装されたサービスしかない場合は、インストールスクリプトを実行するときに DD_APM_INSTRUMENTATION_LIBRARIES を設定します。

例えば、Java トレーシングライブラリの v1.25.0 と最新の Python トレーシングライブラリのみのサポートをインストールするには、インストールコマンドに以下を追加します。

DD_APM_INSTRUMENTATION_LIBRARIES="java:1.25.0,python" DD_APM_INSTRUMENTATION_ENABLED=docker DD_NO_AGENT_INSTALL=true DD_APPSEC_ENABLED=true bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_agent7.sh)"

言語名の後にコロンを置き、トレーシングライブラリのバージョンを指定することで、オプションでトレーシングライブラリのバージョン番号を指定できます。バージョンを指定しない場合、デフォルトは最新バージョンになります。言語名はカンマ区切りです。

サポートされている言語は以下の通りです。

  • .NET (dotnet)
  • Python (python)
  • Java (java)
  • Node.js (js)
  • Ruby (ruby)

: Node.js のトレーシングライブラリについては、Node.js のバージョンによって互換性があります。詳細は Datadog/dd-trace-js: JavaScript APM トレーサーを参照してください。

環境による可観測性データのタグ付け

Agent を通過するインスツルメンテーションされたサービスやその他のテレメトリーに、自動的に特定の環境をタグ付けするには、Docker 用のライブラリインジェクタのインストールコマンドで DD_ENV を設定します。例えば、Agent がステージング環境にインストールされている場合、DD_ENV=staging を設定して可観測性データを staging に関連付けます。

例:

docker run -d --name dd-agent \
  -e DD_API_KEY=${YOUR_DD_API_KEY} \
  -e DD_APM_ENABLED=true \
  -e DD_APPSEC_ENABLED=true \
  -e DD_ENV=staging \
  -e DD_APM_NON_LOCAL_TRAFFIC=true \
  -e DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true \
  -e DD_APM_RECEIVER_SOCKET=/opt/datadog/apm/inject/run/apm.socket \
  -e DD_DOGSTATSD_SOCKET=/opt/datadog/apm/inject/run/dsd.socket \
  -v /opt/datadog/apm:/opt/datadog/apm \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  gcr.io/datadoghq/agent:7

Datadog Helm チャートで Agent をインストールすることで、APM を有効にすることができます。これにより、Datadog Agent が DaemonSet で Linux ベースの Kubernetes クラスターの全ノードにデプロイされます。

: シングルステップインスツルメンテーションは、Datadog Agent をインストールしたネームスペース内のアプリケーションをインスツルメントしません。そのため、アプリケーションを実行しない別のネームスペースに Agent をインストールすることを推奨します。

要件

  • Helm がインストールされていることを確認します。

インストール

Helm でシングルステップのインスツルメンテーションを有効にするには

  1. Helm Datadog リポジトリを追加します。

    helm repo add datadog https://helm.datadoghq.com
    helm repo update
    
  2. Datadog の API キーを保存する Kubernetes Secret を作成します。

    kubectl create secret generic datadog-secret --from-literal api-key=$DD_API_KEY
    

シングルステップ APM および ASM インスツルメンテーションを Agent から削除する方法

特定のサービス、ホスト、VM、コンテナのトレースデータを収集したくない場合は、次の手順を実行します。

特定のサービスについてインスツルメンテーションを削除する

以下のコマンドを実行してサービスを再起動すると、そのサービスへのライブラリ注入およびトレースの生成が停止します。

  1. サービス起動コマンドに環境変数 DD_INSTRUMENT_SERVICE_WITH_APM を追加します。
    DD_INSTRUMENT_SERVICE_WITH_APM=false <service_start_command>
    
  2. サービスを再起動します。
  3. ASM を無効化するには、アプリケーションの構成から DD_APPSEC_ENABLED=true 環境変数を削除し、サービスを再起動してください。
  1. サービス起動コマンドに環境変数 DD_INSTRUMENT_SERVICE_WITH_APM を追加します。
    docker run -e DD_INSTRUMENT_SERVICE_WITH_APM=false <service_start_command>
    
  2. サービスを再起動します。
  3. ASM を無効化するには、アプリケーションの構成から DD_APPSEC_ENABLED=true 環境変数を削除し、サービスを再起動してください。
  1. ポッド仕様の admission.datadoghq.com/enabled: ラベルを "false" に設定します。
    spec:
      template:
        metadata:
          labels:
            admission.datadoghq.com/enabled: "false"
    

インフラストラクチャー上のすべてのサービスについて APM を削除する

トレースの生成を停止するには、ライブラリインジェクタを削除し、インフラストラクチャーを再起動します。

  1. 次を実行します。
    dd-host-install --uninstall
    
  2. ホストを再起動します。
  1. ローカルライブラリインジェクションをアンインストールします。
    dd-container-install --uninstall
    
  2. Docker を再起動します。
    systemctl restart docker
    
    または、環境に応じたコマンドを使用してください。
  1. apm: の下で、datadog-values.yaml 内の instrumentation: と以下の構成を削除します。
  2. datadog-values.yaml 内 の asm: セクションから threats: と その後 に続くすべての設定項目を削除してください。
  3. 次のコマンドを実行します。
    helm upgrade datadog-agent -f datadog-values.yaml datadog/datadog
    
[1]: https://app.datadoghq.com/account/settings/agent/latest [2]: /ja/agent/remote_config