- 重要な情報
- アプリ内
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Datadog Agent 6 以降は、コンテナからログを収集します。ECS コンテナからログを収集するための推奨される方法は、datadog-agent-ecs.json
または datadog-agent-ecs1.json
ファイル内でコンテナ化されたログを有効にすることです。ただし、アプリケーションが任意の容量のファイルにログ (stdout
/stderr
に書き込まれないログ) を出力する場合は、オートディスカバリーをコンテナラベルとともに使用するか (Agent v7.25.0+/6.25.0+ で使用可能)、ホストに Datadog Agent をデプロイし、カスタムログ収集を使用してファイルを調整する必要があります。
ECS コンテナ内で実行中のアプリケーションにより書き込まれるログをすべて収集し、Datadog アプリケーションに送信する方法は、以下のとおりです。
Amazon ECS のセットアップ手順に従います。
次の構成で 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"
}
ログが stdout/stderr
に書き込まれ、Agent によって収集されるように、コンテナ定義に logConfiguration.logDriver
パラメーターが含まれていないことを確認してください。このパラメーターが awslogs
に設定されている場合、AWS Lambda を使用して CloudWatch から ECS ログを収集することで、Agent なしで Amazon ECS ログを収集します。
Amazon ECS のセットアップ手順に従います。
次の構成を使用して 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"
}
ログが 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 のログのオートディスカバリー ガイドを参照してください。
お役に立つドキュメント、リンクや記事: