Datadog Agent をインストールしてテストデータを収集する

テスト結果を Datadog に報告するには、Datadog Agent が必要です。

CI 環境で Agent をセットアップする方法は 2 つあります。

  • Agent を長時間実行プロセスとして各ワーカーノードにインストールします (オンプレミスインストールに推奨)。
  • 各ビルドでサービスコンテナとして Agent のエフェメラルインスタンスを実行します (SaaS CI プロバイダーに推奨)。

CI の各ワーカーノードに Agent をインストールする

オンプレミスの CI プロバイダー上でテストを実行している場合は、Agent のインストール手順に従って各ワーカーノードに Datadog Agent をインストールします。

CI プロバイダーがコンテナベースのエグゼキューターを使用している場合は、ビルド内の localhost が Datadog Agent が実行されている基底のワーカーノードではなく、コンテナ自体を参照するため、すべてのビルド (デフォルトは localhost) の DD_AGENT_HOST 環境変数をビルドコンテナ内からアクセス可能なエンドポイントに設定します。

Kubernetes エグゼキューターを使用している場合、Datadog は Admission Controller を使用することをお勧めします。これにより、ビルドポッドの DD_AGENT_HOST 環境変数が自動的に設定されてローカルの Datadog Agent と通信します。

Datadog Agent を各ビルドのサービスコンテナとしてインストールする

基底のワーカーノードにアクセスできない SaaS CI プロバイダーを使用している場合は、コンテナ内の Datadog Agent をビルドサービスとして実行します。このメソッドは、各ワーカーノードへの Datadog Agent のインストールというオプションがない場合に、コンテナベースのエグゼキューターを使用するオンプレミス CI プロバイダーでも使用できます。

単純な結果フォワーダーとして機能するコンテナとして Datadog Agent を実行するには、Docker イメージ gcr.io/datadoghq/agent:latest と次の環境変数を使用します。

DD_API_KEY (必須)
テスト結果のアップロードに使用される Datadog API キー
デフォルト: (なし)
DD_INSIDE_CI (必須)
基底のホストにアクセスできないため、Datadog Agent コンテナの監視を無効にします。
デフォルト: false
必要な値: true
DD_HOSTNAME (必須)
基底のホストを監視できないため、テストに関連付けられたホスト名のレポートを無効にします。
デフォルト: (自動検出)
必要な値: none

さらに、選択したサイトを使用するように Datadog サイトを構成します ():

DD_SITE (必須)
結果をアップロードする Datadog サイト
デフォルト: datadoghq.com
選択したサイト:

CI プロバイダーのコンフィギュレーション例

次のセクションでは、Agent を実行し、テスト情報を報告するよう構成するために必要となる CI プロバイダー固有の手順をご説明します。

Azure Pipelines で Datadog Agent を実行するには、resources セクションで新しいコンテナを定義し、それを service コンテナとして宣言しているジョブと関連付けます:

azure-pipeline.yml

variables:
  ddApiKey: $(DD_API_KEY)

resources:
  containers:
    - container: dd_agent
      image: gcr.io/datadoghq/agent:latest
      ports:
        - 8126:8126
      env:
        DD_API_KEY: $(ddApiKey)
        DD_INSIDE_CI: "true"
        DD_HOSTNAME: "none"

jobs:
  - job: test
    services:
      dd_agent: dd_agent
    steps:
      - script: make test

azure-pipeline.yml

variables:
  ddApiKey: $(DD_API_KEY)

resources:
  containers:
    - container: dd_agent
      image: gcr.io/datadoghq/agent:latest
      ports:
        - 8126:8126
      env:
        DD_API_KEY: $(ddApiKey)
        DD_INSIDE_CI: "true"
        DD_HOSTNAME: "none"
        DD_SITE: "datadoghq.eu"

jobs:
  - job: test
    services:
      dd_agent: dd_agent
    steps:
      - script: make test

Datadog API キーを、キー DD_API_KEY と合わせてプロジェクト環境変数に追加します。

GitLab で Agent を実行するには、 services 下で Agent コンテナを定義します:

.gitlab-ci.yml

variables:
  DD_API_KEY: $DD_API_KEY
  DD_INSIDE_CI: "true"
  DD_HOSTNAME: "none"
  DD_AGENT_HOST: "datadog-agent"

test:
  services:
    - name: gcr.io/datadoghq/agent:latest
  script:
    - make test

.gitlab-ci.yml

variables:
  DD_API_KEY: $DD_API_KEY
  DD_INSIDE_CI: "true"
  DD_HOSTNAME: "none"
  DD_AGENT_HOST: "datadog-agent"
  DD_SITE: "datadoghq.eu"

test:
  services:
    - name: gcr.io/datadoghq/agent:latest
  script:
    - make test

Datadog API キーを、キー DD_API_KEY と合わせてプロジェクト環境変数に追加します。

GitHub Actions で Agent を実行するには、services 下で Agent コンテナを定義します:

jobs:
  test:
    services:
      datadog-agent:
        image: gcr.io/datadoghq/agent:latest
        ports:
          - 8126:8126
        env:
          DD_API_KEY: ${{ secrets.DD_API_KEY }}
          DD_INSIDE_CI: "true"
          DD_HOSTNAME: "none"
    steps:
      - run: make test

jobs:
  test:
    services:
      datadog-agent:
        image: gcr.io/datadoghq/agent:latest
        ports:
          - 8126:8126
        env:
          DD_API_KEY: ${{ secrets.DD_API_KEY }}
          DD_INSIDE_CI: "true"
          DD_HOSTNAME: "none"
          DD_SITE: "datadoghq.eu"
    steps:
      - run: make test

Datadog API キーを、キー DD_API_KEY と合わせてプロジェクト環境変数に追加します。

CircleCI で Agent を実行するには、テストを実行する前に datadog/agent CircleCI orb を使用して Agent コンテナを起動し、結果が Datadog に送信されたことを確認してから停止します。

例:

.circleci/config.yml

version: 2.1

orbs:
  datadog-agent: datadog/agent@0

jobs:
  test:
    docker:
      - image: circleci/<language>:<version_tag>
    steps:
      - checkout
      - datadog-agent/setup
      - run: make test
      - datadog-agent/stop

workflows:
  test:
    jobs:
      - test

.circleci/config.yml

version: 2.1

orbs:
  datadog-agent: datadog/agent@0

jobs:
  test:
    docker:
      - image: circleci/<language>:<version_tag>
    environment:
      DD_SITE: "datadoghq.eu"
    steps:
      - checkout
      - datadog-agent/setup
      - run: make test
      - datadog-agent/stop

workflows:
  test:
    jobs:
      - test

Datadog API キーを、キー DD_API_KEY と合わせてプロジェクト環境変数に追加します。

Docker Compose の使用

お使いの CI プロバイダーの種類にかかわらず、Docker Compose を使用してテストを実行している場合、Datadog Agent はひとつのサービスとして実行されます:

docker-compose.yml

version: '3'
services:
  datadog-agent:
    image: "gcr.io/datadoghq/agent:latest"
    environment:
      - DD_API_KEY
      - DD_INSIDE_CI=true
      - DD_HOSTNAME=none
    ports:
      - 8126/tcp

  tests:
    build: .
    environment:
      - DD_AGENT_HOST=datadog-agent

docker-compose.yml

version: '3'
services:
  datadog-agent:
    image: "gcr.io/datadoghq/agent:latest"
    environment:
      - DD_API_KEY
      - DD_INSIDE_CI=true
      - DD_HOSTNAME=none
      - DD_SITE=datadoghq.eu
    ports:
      - 8126/tcp

  tests:
    build: .
    environment:
      - DD_AGENT_HOST=datadog-agent

代わりに、Agent コンテナとテストコンテナ間で同じネットワークのネームスペースを共有します:

docker-compose.yml

version: '3'
services:
  datadog-agent:
    image: "gcr.io/datadoghq/agent:latest"
    environment:
      - DD_API_KEY
      - DD_INSIDE_CI=true
      - DD_HOSTNAME=none

  tests:
    build: .
    network_mode: "service:datadog-agent"

docker-compose.yml

version: '3'
services:
  datadog-agent:
    image: "gcr.io/datadoghq/agent:latest"
    environment:
      - DD_API_KEY
      - DD_INSIDE_CI=true
      - DD_HOSTNAME=none
      - DD_SITE=datadoghq.eu

  tests:
    build: .
    network_mode: "service:datadog-agent"

この場合、DD_AGENT_HOST は必要ありません。デフォルトで localhost に設定されています。

その後、DD_API_KEY 環境変数に Datadog API キーを入力してテストを実行します。

DD_API_KEY=<YOUR_DD_API_KEY> docker-compose up \
  --build --abort-on-container-exit \
  tests

注: この場合、必要となるすべての CI プロバイダーの環境変数を追加する必要があります。こうすることで、コンテナテストで記載の通り、各テスト結果にビルド情報が追加されます。

その他の参考資料

選択した Datadog サイト () は、現時点ではサポートされていません。