- 重要な情報
- はじめに
- 用語集
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Amazon ECS は、Docker コンテナに対応する、拡張性とパフォーマンスに優れたコンテナオーケストレーションサービスです。Datadog Agent と使用すると、クラスター内のすべての EC2 インスタンスの ECS コンテナおよびタスクを監視できます。
このページは Datadog コンテナ Agent を使用した Amazon ECS のセットアップについて説明します。他のセットアップについては、以下を参照してください。
注: ECS on Fargate をセットアップする場合は、Amazon ECS on AWS Fargate の手順を参照してください。EC2 インスタンスにデプロイされた Datadog Agent コンテナは、Fargate Tasks を監視することはできません。また、AWS Batch はサポートされていません。
ECS の Datadog Agent は、ECS クラスター内の各 EC2 インスタンスに一度、コンテナとしてデプロイする必要があります。これは、Datadog Agent コンテナ用のタスク定義を作成し、それをデーモンサービスとしてデプロイすることで実現します。各 Datadog Agent コンテナは、それぞれの EC2 インスタンス上の他のコンテナを監視します。
稼働中の EC2 Container Service クラスターが構成されていない場合は、ECS ドキュメント内の Getting Started セクションを参照してクラスターを設定、構成します。構成したら、下記のセットアップ手順に従います。
注: ECS および Docker を併用して Datadog のオートディスカバリーを実行すると、環境内で実行中のタスクを自動的に検出して監視できます。
タスク定義は、必要な構成で Datadog Agent コンテナを起動します。Agent の構成を変更する必要がある場合、このタスク定義を更新し、必要に応じてデーモンサービスを再デプロイします。タスク定義は、AWS CLI ツールまたは Amazon Web Console のいずれかを使用して構成することができます。
以下のサンプルは、コアインフラストラクチャーを監視するための最小限の構成です。しかし、様々な機能を有効にした追加のタスク定義のサンプルが Agent の追加機能の設定のセクションで提供されていますので、それらを代わりに使用することができます。
Linux コンテナの場合、datadog-Agent-ecs.json をダウンロードします。
ベースとなるタスク定義ファイルを編集する
<YOUR_DATADOG_API_KEY>
にアカウントの Datadog API キー を設定します。
環境変数 DD_SITE
に を設定します。
注: DD_SITE
環境変数が明示的に設定されていない場合、値はデフォルトで US
サイトの datadoghq.com
に設定されます。その他のサイト (EU
、US3
、または US1-FED
) のいずれかを使用しており、これを設定しない場合は、API キーのメッセージが無効になります。ドキュメントのサイト選択ドロップダウンを使用して、使用中のサイトに適したドキュメントを確認してください。
オプション - 以下を ECS タスクの定義に追加して ECS Anywhere クラスターにデプロイします。
"requiresCompatibilities": ["EXTERNAL"]
オプション - ECS タスク定義に Agent ヘルスチェックを追加する
"healthCheck": {
"retries": 3,
"command": ["CMD-SHELL","agent health"],
"timeout": 5,
"interval": 30,
"startPeriod": 15
}
これらの例では、環境変数 DD_API_KEY
に、AWS Secret Manager に保存されている “Plaintext” シークレットの ARN を参照することで代用することができます。追加のタグは環境変数 DD_TAGS
によって追加することができます。
タスク定義ファイルを作成したら、以下のコマンドを実行して、これを AWS に登録します。
aws ecs register-task-definition --cli-input-json file://<path to datadog-agent-ecs.json>
タスク定義ファイルを作成したら、AWS コンソールにログインしてこれを登録することができます。
理想的には、各 EC2 インスタンス上で 1 つの Datadog Agent コンテナを実行します。これを実現する最も簡単な方法は、Datadog Agent タスク定義をデーモンサービスとして実行することです。
DAEMON
を選択し、サービス名を入力したら Next をクリックします。上記の最初のタスク定義は、かなり最小限のものです。このタスク定義は、E CSクラスタ内のコンテナに関するコアメトリクスを収集するための基本構成を持つ Agent コンテナをデプロイします。この Agent は、対応するコンテナ上で発見された Docker オートディスカバリーラベルに基づいて、Agent インテグレーションを実行することも可能です。
もし、
DogStatsD を使用している場合、以下のように Datadog Agent のコンテナ定義に 8125/udp のホストポートマッピングを追加します。
"portMappings": [
{
"hostPort": 8125,
"protocol": "udp",
"containerPort": 8125
}
]
このポートマッピングに加えて、環境変数 DD_DOGSTATSD_NON_LOCAL_TRAFFIC
を true
に設定します。
この設定により、DogStatsD のトラフィックは、アプリケーションコンテナからホストとホストポートを経由して、Datadog Agent コンテナにルーティングされるようになります。ただし、アプリケーションコンテナは、このトラフィックにホストのプライベート IP アドレスを使用する必要があります。これは、環境変数 DD_AGENT_HOST
に EC2 インスタンスのプライベート IP アドレスを設定することで有効になり、インスタンスメタデータサービス (IMDS) から取得することができます。また、初期化時にコードで設定することもできます。DogStatsD の構成は APM と同じで、Agent のエンドポイントを設定する例については Trace Agent のエンドポイントを構成するを参照してください。
EC2 インスタンスのセキュリティグループ設定で、APM と DogStatsD のポートが公に公開されていないことを確認します。
Live Container のデータは、Datadog Agent コンテナによって自動的に収集されます。全てのコンテナの Live Process 情報を収集し、Datadog に送信するには、環境変数でタスク定義を更新してください。
{
"name": "DD_PROCESS_AGENT_ENABLED",
"value": "true"
}
この機能は、Linux でのみ使用可能です
linuxParameters
を追加できないため、CLI で行う必要があります。{
"containerDefinitions": [
(...)
"mountPoints": [
(...)
{
"containerPath": "/sys/kernel/debug",
"sourceVolume": "debug"
},
(...)
],
"environment": [
(...)
{
"name": "DD_SYSTEM_PROBE_NETWORK_ENABLED",
"value": "true"
}
],
"linuxParameters": {
"capabilities": {
"add": [
"SYS_ADMIN",
"SYS_RESOURCE",
"SYS_PTRACE",
"NET_ADMIN",
"NET_BROADCAST",
"NET_RAW",
"IPC_LOCK",
"CHOWN"
]
}
},
],
"requiresCompatibilities": [
"EC2"
],
"volumes": [
(...)
{
"host": {
"sourcePath": "/sys/kernel/debug"
},
"name": "debug"
},
(...)
],
"family": "datadog-agent-task"
}
Agent バージョン 6.10 以降は、ホストインスタンスのセキュリティグループが関連するポート上の適用可能なコンテナに到達できるよう、セキュリティグループが設定されている場合には、適用可能なコンテナに awsvpc
モードが対応しています。
Agent を awsvpc
モードで実行することは可能ですが、これは推奨されるセットアップではありません。Agent を DogStatsD メトリクスや APM トレースに到達させるための ENI IP を取得することが難しい可能性があるからです。
代わりに、ブリッジモードで Agent をポートマッピングとともに実行すると、メタデータサーバを介するホスト IP を簡単に取得できます。
Datadog の GOVCLOUD データセンターにデータを送信するには、fips-proxy
サイドカーコンテナを追加し、コンテナポートを開いてすべての機能に適切な通信を確保します。
注: この機能は、Linux でのみ使用可能です
{
"containerDefinitions": [
(...)
{
"name": "fips-proxy",
"image": "datadog/fips-proxy:0.5.0",
"portMappings": [
{
"containerPort": 9803,
"protocol": "tcp"
},
{
"containerPort": 9804,
"protocol": "tcp"
},
{
"containerPort": 9805,
"protocol": "tcp"
},
{
"containerPort": 9806,
"protocol": "tcp"
},
{
"containerPort": 9807,
"protocol": "tcp"
},
{
"containerPort": 9808,
"protocol": "tcp"
},
{
"containerPort": 9809,
"protocol": "tcp"
},
{
"containerPort": 9810,
"protocol": "tcp"
},
{
"containerPort": 9811,
"protocol": "tcp"
},
{
"containerPort": 9812,
"protocol": "tcp"
},
{
"containerPort": 9813,
"protocol": "tcp"
},
{
"containerPort": 9814,
"protocol": "tcp"
},
{
"containerPort": 9815,
"protocol": "tcp"
},
{
"containerPort": 9816,
"protocol": "tcp"
}
],
"essential": true,
"environment": [
{
"name": "DD_FIPS_PORT_RANGE_START",
"value": "9803"
},
{
"name": "DD_FIPS_LOCAL_ADDRESS",
"value": "127.0.0.1"
}
]
}
],
"family": "datadog-agent-task"
}
また、Datadog Agent のコンテナの環境変数を更新して、FIPS プロキシを介したトラフィックの送信を可能にする必要があります。
{
"containerDefinitions": [
{
"name": "datadog-agent",
"image": "public.ecr.aws/datadog/agent:latest",
(...)
"environment": [
(...)
{
"name": "DD_FIPS_PORT_RANGE_START",
"value": "9803"
},
{
"name": "DD_FIPS_HTTPS",
"value": "false"
},
],
},
],
"family": "datadog-agent-task"
}
ご不明な点は、Datadog のサポートチームまでお問合せください。