Amazon ECS ログ収集

概要

Datadog Agent 6 以降は、コンテナからログを収集します。ECS コンテナからログを収集するための推奨される方法は、datadog-agent-ecs.json または datadog-agent-ecs1.json ファイル内でコンテナ化されたログを有効にすることです。ただし、アプリケーションが任意の容量のファイルにログ (stdout/stderr に書き込まれないログ) を出力する場合は、オートディスカバリーコンテナラベルとともに使用するか (Agent v7.25.0+/6.25.0+ で使用可能)、ホストに Datadog Agent をデプロイし、カスタムログ収集を使用してファイルを調整する必要があります。

インストール

ECS ファイル

ECS コンテナ内で実行中のアプリケーションにより書き込まれるログをすべて収集し、Datadog アプリケーションに送信する方法は、以下のとおりです。

  1. Amazon ECS のセットアップ手順に従います。

  2. 次の構成で datadog-agent-ecs.json ファイル (オリジナルの Amazon Linux AMI を使用している場合は datadog-agent-ecs1.json) を更新します。

    {
        "containerDefinitions": [
        (...)
          "mountPoints": [
            (...)
            {
              "containerPath": "/opt/datadog-agent/run",
              "sourceVolume": "pointdir",
              "readOnly": false
            },
            {
              "containerPath": "/var/lib/docker/containers",
              "sourceVolume": "containers_root",
              "readOnly": true
            },
            (...)
          ],
          "environment": [
            (...)
            {
              "name": "DD_LOGS_ENABLED",
              "value": "true"
            },
            {
              "name": "DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL",
              "value": "true"
            },
            (...)
          ]
        }
      ],
      "volumes": [
        (...)
        {
          "host": {
            "sourcePath": "/opt/datadog-agent/run"
          },
          "name": "pointdir"
        },
        {
          "host": {
            "sourcePath": "/var/lib/docker/containers/"
          },
          "name": "containers_root"
        },
        (...)
      ],
      "family": "datadog-agent-task"
    }
    
  3. ログが stdout/stderr に書き込まれ、Agent によって収集されるように、コンテナ定義に logConfiguration.logDriver パラメーターが含まれていないことを確認してください。このパラメーターが awslogs に設定されている場合、AWS Lambda を使用して CloudWatch から ECS ログを収集することで、Agent なしで Amazon ECS ログを収集します。

  1. Amazon ECS のセットアップ手順に従います。

  2. 次の構成を使用して datadog-agent-ecs-win.json ファイルを更新します。

    {
      "containerDefinitions": [
        (...)
          "mountPoints": [
            (...)
            {
              "containerPath": "C:/programdata/datadog/run",
              "sourceVolume": "pointdir",
              "readOnly": false
            },
            {
              "containerPath": "c:/programdata/docker/containers",
              "sourceVolume": "containers_root",
              "readOnly": true
            },
            (...)
          ],
          "environment": [
            (...)
            {
              "name": "DD_LOGS_ENABLED",
              "value": "true"
            },
            {
              "name": "DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL",
              "value": "true"
            },
            (...)
          ]
        }
      ],
      "volumes": [
        (...)
        {
          "name": "pointdir",
          "dockerVolumeConfiguration": {
            "autoprovision": true,
            "scope": "shared",
            "driver": "local"
          }
        },
        {
          "host": {
            "sourcePath": "c:/programdata/docker/containers"
          },
          "name": "containers_root"
        },
        (...)
      ]
      "family": "datadog-agent-task"
    }
    
  3. ログが stdout/stderr に書き込まれ、Agent によって収集されるように、コンテナ定義に logConfiguration.logDriver パラメーターが含まれていないことを確認してください。このパラメーターが awslogs に設定されている場合、AWS Lambda を使用して CloudWatch から ECS ログを収集することで、Agent なしで Amazon ECS ログを収集します。

カスタムログ収集

構成ファイル

コンテナがログをファイルに書き込む場合は、カスタムログ収集のドキュメントに従って、ログのファイルを調整します。

<PATH_LOG_FILE>/<LOG_FILE_NAME>.log に保存されているログを <APP_NAME> アプリケーションから収集するには、Agent のコンフィギュレーションディレクトリのルートに以下の内容の <APP_NAME>.d/conf.yaml ファイルを作成します。

logs:
  - type: file
    path: "<PATH_LOG_FILE>/<LOG_FILE_NAME>.log"
    service: "<APP_NAME>"
    source: "<SOURCE>"

: コンテナメタデータはカスタムログ収集では取得されないため、Agent はコンテナタグをログに自動的に割り当てません。カスタムタグを使用してコンテナタグを作成します。

コンテナラベル

Agent v7.25.0+/6.25.0+ では、コンテナラベルを使用してファイルの追跡を有効化することができます。こうすることで、ラベルが送信されたコンテナのタグを収集対象のログで受け取ることができます。使用すべき正確なラベルの詳細は、このを参照してください。

: ファイルパスは常に Agent との相対パスになります。ファイルに書き込みを行うコンテナと Agent コンテナ間でディレクトリを共有するために、関連する ECS タスクでの追加コンフィギュレーションが必要です。ECS でのボリュームマネジメントの詳細については、AWS Bind マウントのドキュメントを参照してください。

ログのインテグレーションを有効にする

各コンテナに使用するインテグレーションを特定するには、source 属性を使用します。この属性をコンテナのラベルで直接上書きすれば、ログのインテグレーションが有効になります。このプロセスの詳細については、Datadog のログのオートディスカバリー ガイドを参照してください。

その他の参考資料