Amazon ECS on AWS Fargate
このページでは、ECS Fargate インテグレーションについて説明します。EKS Fargate については、Datadog の
EKS Fargate インテグレーション に関するドキュメントをご覧ください。
ECS Fargate で実行されているすべてのコンテナからメトリクスを取得します。
CPU/メモリ使用量および制限のメトリクス Datadog インテグレーションまたはカスタムメトリクスを使用して、Fargate で実行されているアプリケーションを監視 Datadog Agent は、ECS のタスクメタデータエンドポイントでタスク定義のコンテナのメトリクスを取得します。このエンドポイントに関する ECS のドキュメント には、以下のように記載されています。
このエンドポイントは、タスクに関連付けられたすべてのコンテナの Docker 統計 JSON を返します。返される統計の詳細については、Docker API ドキュメント内の ContainerStats を参照してください。 タスクメタデータエンドポイントは、タスク定義自体の内部からのみ使用できます。このため、Datadog Agent を監視する各タスク定義内の追加コンテナとして実行する必要があります。
このメトリクスの収集を有効にするために必要な構成は、タスク定義内で環境変数 ECS_FARGATE
を "true"
にすることだけです。
注 : Network Performance Monitoring (NPM) は、ECS Fargate ではサポートされていません。
以下の手順では、AWS ECS Fargate 内で Datadog Container Agent をセットアップします。注 : Fargate インテグレーションを最大限活用するには、Datadog Agent バージョン 6.1.1 以降が必要です。
Datadog Agent を持たないタスクも Cloudwatch でメトリクスを報告しますが、Autodiscovery、詳細なコンテナメトリクス、トレーシングなどの機能には Agent が必要です。さらに、Cloudwatch メトリクスは粒度が低く、Datadog Agent を通じて直接発送されるメトリクスより報告のレイテンシーが高くなります。
Datadog で ECS Fargate タスクを監視するには、アプリケーションコンテナと同じタスク定義 内のコンテナとして Agent を実行します。Datadog でメトリクスを収集するには、各タスク定義にアプリケーションコンテナのほかに Datadog Agent コンテナを含める必要があります。以下のセットアップ手順を実行します。
ECS Fargate タスクの作成 IAM ポリシーの作成と修正 レプリカサービスとしてのタスクの実行 Fargate の主要な作業単位はタスクで、これはタスク定義内で設定されます。タスク定義は、Kubernetes のポッドに相当します。タスク定義には 1 つ以上のコンテナが含まれる必要があります。Datadog Agent を実行するには、アプリケーションコンテナおよび Datadog Agent コンテナを実行するためのタスク定義を作成します。
以下の手順は、Amazon Web Console 、AWS CLI ツール 、または AWS CloudFormation を使用したタスクの構成方法を示します。
AWS Web Console にログインし、ECS セクションに移動します。左メニューの Task Definitions をクリックし、Create new Task Definition ボタンをクリックするか、既存の Fargate タスク定義を選択します。 新しいタスク定義の場合起動タイプとして Fargate を選択し、Next step ボタンをクリックします。 Task Definition Name にタスク定義名を入力します (my-app-and-datadog
など)。タスク実行 IAM ロールを選択します。下の IAM ポリシーの作成と修正 セクションで、権限の要件を確認します。 ニーズに合わせて Task memory と Task CPU を選択します。 Datadog Agent コンテナの追加を開始するには、Add container ボタンをクリックします。Container name に datadog-agent
と入力します。Image に public.ecr.aws/datadog/agent:latest
と入力します。Env Variables には、Key DD_API_KEY
を追加し、値として Datadog API キー を入力します。キー ECS_FARGATE
と値 true
を使用して、もう 1 つ環境変数を追加します。Add をクリックしてコンテナを追加します。Key DD_SITE
と値 datadoghq.com
を使用して、別の環境変数を追加します。設定しない場合、これはデフォルトで datadoghq.com
になります。(Windows のみ) 作業ディレクトリとして C:\
を選択します。 タスク定義に他のアプリケーションコンテナを追加します。インテグレーションメトリクスの収集の詳細については、ECS Fargate のインテグレーションセットアップ を参照してください。 Create をクリックしてタスク定義を作成します。
datadog-agent-ecs-fargate.json をダウンロードします。注 : Internet Explorer をお使いの場合は、以下に記載の JSON ファイルを含む gzip ファイルとしてダウンロードされる場合があります。
JSON を TASK_NAME
、Datadog API キー 、および適切な DD_SITE
(datadoghq.com
) で更新します。注 : 環境変数 ECS_FARGATE
はすでに "true"
に設定されています。
タスク定義に他のアプリケーションコンテナを追加します。インテグレーションメトリクスの収集の詳細については、ECS Fargate のインテグレーションセットアップ を参照してください。
オプション - Agent 健全性チェックを追加します。
ECS タスク定義に次を追加して、Agent 健全性チェックを作成します。
"healthCheck" : {
"retries" : 3 ,
"command" : [ "CMD-SHELL" , "agent health" ],
"timeout" : 5 ,
"interval" : 30 ,
"startPeriod" : 15
}
Copy
次のコマンドを実行して ECS タスク定義を登録します。
aws ecs register-task-definition --cli-input-json file://<ファイルへのパス>/datadog-agent-ecs-fargate.json
AWS CloudFormation テンプレートを使用して Fargate コンテナを構成することができます。CloudFormation テンプレート内で AWS::ECS::TaskDefinition
リソースを使用して Amazon ECS タスクを設定し、そのタスクで必要な起動タイプとして FARGATE
を指定します。
下記の CloudFormation テンプレートに Datadog API キー を入れて更新します。また、必要に応じて適切な DD_SITE
(datadoghq.com
) 環境変数も設定します。設定しない場合、デフォルトは datadoghq.com
になります。
Resources :
ECSTaskDefinition :
Type : 'AWS::ECS::TaskDefinition'
Properties :
NetworkMode : awsvpc
RequiresCompatibilities :
- FARGATE
Cpu : 256
Memory : 512
ContainerDefinitions :
- Name : datadog-agent
Image : 'public.ecr.aws/datadog/agent:latest'
Environment :
- Name : DD_API_KEY
Value : <DATADOG_API_KEY>
- Name : ECS_FARGATE
Value : true
Copy
最後に、他のアプリケーションコンテナを ContainerDefinitions
内に含め、CloudFormation を通してデプロイします。
CloudFormation のテンプレートと統語法に関する詳細は、AWS CloudFormation タスク定義のドキュメント をご参照ください。
ECS Fargate では、タスクを Replica サービス として実行する唯一のオプションがあります。Datadog Agent は、アプリケーションやインテグレーションコンテナと同じタスク定義内で実行されます。
AWS Web Console にログインし、ECS セクションに移動します。必要に応じて、Networking only クラスターテンプレートを使用してクラスターを作成します。Datadog Agent を実行するクラスターを選択します。 Services タブで、Create ボタンをクリックします。Launch type で、FARGATE を選択します。Task Definition で、先ほど作成したタスクを選択します。Service name に入力します。Number of tasks に 1
と入力し、Next step ボタンをクリックします。Cluster VPC 、Subnets 、および Security Groups を選択します。Load balancing と Service discovery をオプションで設定します。Next step ボタンをクリックします。Auto Scaling は、オプションで設定します。Next step ボタンをクリックし、Create service ボタンをクリックします。AWS CLI ツール を使用して次のコマンドを実行します。
注 : Fargate バージョン 1.1.0 以降が必要です。したがって、以下のコマンドでは、プラットフォームバージョンを指定します。
必要に応じてクラスターを作成します。
aws ecs create-cluster --cluster-name "<クラスター名>"
クラスターのサービスとしてタスクを実行します。
aws ecs run-task --cluster <CLUSTER_NAME> \
--network-configuration "awsvpcConfiguration={subnets=[" <PRIVATE_SUBNET>"],securityGroups=[" <SECURITY_GROUP>"]}" \
--task-definition arn:aws:ecs:us-east-1:<AWS_ACCOUNT_NUMBER>:task-definition/<TASK_NAME>:1 \
--region <AWS_REGION> --launch-type FARGATE --platform-version 1.4.0
CloudFormation テンプレートでは、前の例で作成した ECSTaskDefinition
リソースを、作成する AWS::ECS::Service
リソースに参照させることができます。この後、レプリカサービスに Cluster
や DesiredCount
など、アプリケーションに必要なパラメーターを指定します。
Resources :
ECSTaskDefinition :
#(...)
ECSService :
Type : 'AWS::ECS::Service'
Properties :
Cluster : <CLUSTER_NAME>
TaskDefinition :
Ref : "ECSTaskDefinition"
DesiredCount : 1
#(...)
Copy
CloudFormation のテンプレートと統語法に関する詳細は、AWS CloudFormation ECS サービスのドキュメント をご参照ください。
Datadog API キーをシークレットとして提供するには、 シークレットの使用 を参照してください。
AWS Batch ジョブを Datadog で監視するには、ECS Fargate と Datadog Agent を使った AWS Batch を参照してください。
ECS Fargate のメトリクスを収集するには、次のアクセス許可を Datadog IAM ポリシー に追加します。詳細については、AWS ウェブサイト上の ECS ポリシー を参照してください。
AWS アクセス許可 説明 ecs:ListClusters
使用できるクラスターをリストします。 ecs:ListContainerInstances
クラスターのインスタンスをリストします。 ecs:DescribeContainerInstances
リソースおよび実行中のタスクに関するメトリクスを追加するためのインスタンスを記述します。
環境変数 DD_API_KEY
に API キーをプレーンテキストで代入する代わりに、AWS Secrets Manager に格納されているプレーンテキストのシークレットの ARN を参照することもできます。タスクまたはジョブ定義ファイルの containerDefinitions.secrets
セクションの下に DD_API_KEY
環境変数を配置します。タスクやジョブの実行ロールが AWS Secrets Manager からシークレットを取得するのに必要な権限を持っていることを確認します。
上述のように Datadog Agent をセットアップすると、オートディスカバリーを有効にした状態で ecs_fargate チェック がメトリクスを収集します。その他のメトリクスを収集するには、同じタスク内の他のコンテナに Docker ラベルを追加します。
インテグレーションは Linux と Windows で動作しますが、一部のメトリクスは OS に依存します。Windows で実行したときに公開されるメトリクスは、すべて Linux でも公開されますが、Linux でしか利用できないメトリクスもあります。このインテグレーションで提供されるメトリクスの一覧は、データ収集 を参照してください。このリストでは、どのメトリクスが Linux 専用であるかも指定されています。
インテグレーションメトリクスの収集の詳細については、ECS Fargate のインテグレーションセットアップ を参照してください。
メトリクスは DogStatsD を使用して UDP ポート 8125 を介して収集されます。
Docker Agent コンテナと共に使用できる環境変数については、Docker Agent ページを参照してください。注 : 一部の変数は Fargate では使用できません。
環境変数 説明 DD_DOCKER_LABELS_AS_TAGS
docker コンテナラベルを抽出します DD_CHECKS_TAG_CARDINALITY
タグをチェックメトリクスに追加します DD_DOGSTATSD_TAG_CARDINALITY
タグをカスタムメトリクスに追加します
グローバルなタグ付けには、DD_DOCKER_LABELS_AS_TAGS
の使用をお勧めします。Agent は、この方法を使用して、コンテナラベルからタグを取得します。それには、他のコンテナに適切なラベルを追加する必要があります。ラベルは、タスク定義 で直接追加できます。
Agent コンテナのフォーマット
{
"name" : "DD_DOCKER_LABELS_AS_TAGS" ,
"value" : "{\"<収集するラベル名>\":\"<DATADOG_用タグキー>\"}"
}
Copy
Agent コンテナの例
{
"name" : "DD_DOCKER_LABELS_AS_TAGS" ,
"value" : "{\"com.docker.compose.service\":\"service_name\"}"
}
Copy
CloudFormation 例 (YAML):
ContainerDefinitions :
- #(...)
Environment :
- Name : DD_DOCKER_LABELS_AS_TAGS
Value : "{\"com.docker.compose.service\":\"service_name\"}"
Copy
注 : DD_HOSTNAME
を使用しないでください。Fargate には、ユーザーに対するホストという概念がないからです。このタグを使用すると、タスクがインフラストラクチャーリストの APM ホストとして表示されるようになり、請求に影響が出る可能性があります。代わりに、従来からホストタグを割り当てるために DD_TAGS
が使用されています。Datadog Agent バージョン 6.13.0 では、DD_TAGS
環境変数を使用してインテグレーションメトリクスにグローバルタグを設定することもできます。
Datadog Agent によって収集されるメトリクスのほかに、Datadog には CloudWatch ベースの ECS インテグレーションがあります。このインテグレーションは、Amazon ECS CloudWatch メトリクス を収集します。
そこに記載されているように、Fargate タスクも次のようにメトリクスを報告します。
使用できるメトリクスは、クラスターまたはバッチジョブ内のタスクとサービスの起動タイプによって異なります。サービスに Fargate 起動タイプを使用している場合は、サービスの監視に役立つように、CPU とメモリの使用率メトリクスが提供されます。
この方法は Datadog Agent を使用しないため、インテグレーションタイルで ECS をチェックすることで、AWS インテグレーションを構成する必要があります。これで、自動的に Datadog が CloudWatch メトリクス (Datadog 内の aws.ecs.*
ネームスペースを使用) を取得します。ドキュメントの収集データ セクションを参照してください。
必要なメトリクスがこれだけの場合は、このインテグレーションに依存して CloudWatch メトリクスを使用して収集できます。注 : CloudWatch データは粒度が低く (有効にした監視の種類に応じて 1-5 分)、Datadog への報告にも遅延があります。これは、Agent を使用して Datadog にデータをプッシュするのではなく、AWS の API 制限の範囲内で CloudWatch からデータを収集する必要があるためです。
Datadog のデフォルトの CloudWatch クローラーは、10 分ごとにメトリクスをポーリングします。クローリングスケジュールを速くする必要がある場合は、それが可能かどうかを Datadog のサポートチーム にお問い合わせください。注 : CloudWatch の API 呼び出しは課金対象なので、AWS 側のコストが増大します。
Fargate のログを監視するには、次のどちらかを使用します。
Datadog の Fluent Bit 出力プラグインで構築した AWS FireLens インテグレーションで、ログを Datadog に直接送信 ログドライバー awslogs
を使って CloudWatch Log Group にログを保存し、Lambda 関数で Datadog にログをルーティング Datadog では、Fargate のタスクで直接 Fluent Bit を構成できるため、AWS FireLens の利用を推奨しています。
注 : Fluent Bit と FireLens によるログ収集は、AWS Batch on ECS Fargate ではサポートされていません。
Datadog の Fluent Bit アウトプットプラグインに組み込まれている AWS FireLens インテグレーションを構成して、監視している FireLens のログデータを Datadog ログと接続します。この構成の完全なタスク定義例はこちら にあります。
既存の Fargate タスクで Fluent Bit FireLens ログルーターコンテナを追加します。 FireLens の有効化については、専用の AWS Firelens ドキュメント を参照してください。Fargate コンテナの定義については、AWS コンテナ定義ドキュメント を参照してください。AWS では、リージョン別 Docker イメージ の使用を推奨しています。下記に、Fluent Bit イメージが構成されたタスク定義の例を示します。
{
"essential" : true ,
"image" : "amazon/aws-for-fluent-bit:stable" ,
"name" : "log_router" ,
"firelensConfiguration" : {
"type" : "fluentbit" ,
"options" : { "enable-ecs-log-metadata" : "true" }
}
}
Copy
コンテナがシリアル化された JSON ログを stdout 上で公開している場合は、ログが Datadog 内で正しくパースされるよう、次の 追加 FireLens コンフィギュレーション を使用する必要があります。
{
"essential" : true ,
"image" : "amazon/aws-for-fluent-bit:stable" ,
"name" : "log_router" ,
"firelensConfiguration" : {
"type" : "fluentbit" ,
"options" : {
"enable-ecs-log-metadata" : "true" ,
"config-file-type" : "file" ,
"config-file-value" : "/fluent-bit/configs/parse-json.conf"
}
}
}
Copy
これにより、シリアル化された JSON が log:
フィールドから上位レベルのフィールドに変換されます。詳細については、JSON がシリアル化されたコンテナの stdout ログをパースしている AWS サンプルを参照してください。
次に、同じ Fargate タスクで、ログを送信する目的のコンテナに対して、ログ構成を定義します。このログ構成は、AWS FireLens をログドライバーとし、Fluent Bit にデータを出力するものである必要があります。下記に、ログドライバーに FireLens が使用され、Fluent Bit にデータを出力しているタスク定義の例を示します。
{
"logConfiguration" : {
"logDriver" : "awsfirelens" ,
"options" : {
"Name" : "datadog" ,
"apikey" : "<DATADOG_API_KEY>" ,
"Host" : "http-intake.logs.datadoghq.com" ,
"dd_service" : "firelens-test" ,
"dd_source" : "redis" ,
"dd_message_key" : "log" ,
"dd_tags" : "project:fluentbit" ,
"TLS" : "on" ,
"provider" : "ecs"
}
}
}
Copy
{
"logConfiguration" : {
"logDriver" : "awsfirelens" ,
"options" : {
"Name" : "datadog" ,
"apikey" : "<DATADOG_API_KEY>" ,
"Host" : "http-intake.logs.us3.datadoghq.com" ,
"dd_service" : "firelens-test" ,
"dd_source" : "redis" ,
"dd_message_key" : "log" ,
"dd_tags" : "project:fluentbit" ,
"TLS" : "on" ,
"provider" : "ecs"
}
}
}
Copy
{
"logConfiguration" : {
"logDriver" : "awsfirelens" ,
"options" : {
"Name" : "datadog" ,
"apikey" : "<DATADOG_API_KEY>" ,
"Host" : "http-intake.logs.us5.datadoghq.com" ,
"dd_service" : "firelens-test" ,
"dd_source" : "redis" ,
"dd_message_key" : "log" ,
"dd_tags" : "project:fluentbit" ,
"TLS" : "on" ,
"provider" : "ecs"
}
}
}
Copy
{
"logConfiguration" : {
"logDriver" : "awsfirelens" ,
"options" : {
"Name" : "datadog" ,
"apikey" : "<DATADOG_API_KEY>" ,
"Host" : "http-intake.logs.datadoghq.eu" ,
"dd_service" : "firelens-test" ,
"dd_source" : "redis" ,
"dd_message_key" : "log" ,
"dd_tags" : "project:fluentbit" ,
"TLS" : "on" ,
"provider" : "ecs"
}
}
}
Copy
{
"logConfiguration" : {
"logDriver" : "awsfirelens" ,
"options" : {
"Name" : "datadog" ,
"apikey" : "<DATADOG_API_KEY>" ,
"Host" : "http-intake.logs.ddog-gov.datadoghq.com" ,
"dd_service" : "firelens-test" ,
"dd_source" : "redis" ,
"dd_message_key" : "log" ,
"dd_tags" : "project:fluentbit" ,
"TLS" : "on" ,
"provider" : "ecs"
}
}
}
Copy
注 : apikey
と Host
は、それぞれのサイト http-intake.logs.
datadoghq.com
から相対的に設定します。利用可能なパラメーターの完全なリストは、Datadog Fluent Bit ドキュメント に記載されています。
dd_service
、dd_source
、dd_tags
は、任意のタグに調整することができます。
Fargate タスクの実行中は常に、Fargate タスクが管理するコンテナの情報を含むコンテナログが、Fluent Bit から Datadog に送信されるようになります。Log Explorer ページ で生ログを確認したり、ログ用のモニターを作成 し Live Container ビュー で確認したりすることが可能です。 Fluent Bit コンテナを既存のタスク定義に追加するには、Log router integration の下にある Enable FireLens integration チェックボックスをオンにすると、自動的に log_router
コンテナが作成されます。これは地域の画像を取り込みますが、latest
の代わりに stable
の画像タグを使用することをお勧めします。Apply をクリックすると、ベースとなるコンテナが作成されます。さらに firelensConfiguration
をカスタマイズするには、下部にある Configure via JSON ボタンをクリックして、手動で編集します。
これを追加した後、タスク定義でログを送信するアプリケーションコンテナを編集し、Log driver を awsfirelens
に変更し、Log options に上記の例で示されたキーを記入します。
既存の JSON タスク定義ファイルを編集して、前のセクションで説明したように、log_router
コンテナとアプリケーションコンテナの更新した logConfiguration
を含めます。これが終わったら、次のコマンドでタスク定義の新しいリビジョンを作成します。
aws ecs register-task-definition --cli-input-json file://<ファイルへのパス>/datadog-agent-ecs-fargate.json
AWS CloudFormation のテンプレートを使用するには、AWS::ECS::TaskDefinition
リソースを使用し、Datadog
オプションを設定して、ログ管理を構成する必要があります。
例えば、Fluent Bit が Datadog にログを送信するように構成する場合
Resources :
ECSTaskDefinition :
Type : 'AWS::ECS::TaskDefinition'
Properties :
NetworkMode : awsvpc
RequiresCompatibilities :
- FARGATE
Cpu : 256
Memory : 1GB
ContainerDefinitions :
- Name : tomcat-test
Image : 'tomcat:jdk8-adoptopenjdk-openj9'
LogConfiguration :
LogDriver : awsfirelens
Options :
Name : datadog
apikey : <DATADOG_API_KEY>
Host : http-intake.logs.datadoghq.com
dd_service : test-service
dd_source : test-source
TLS : 'on'
provider : ecs
MemoryReservation : 500
- Name : log_router
Image : 'amazon/aws-for-fluent-bit:stable'
Essential : true
FirelensConfiguration :
Type : fluentbit
Options :
enable-ecs-log-metadata : true
MemoryReservation : 50
Copy
Resources :
ECSTaskDefinition :
Type : 'AWS::ECS::TaskDefinition'
Properties :
NetworkMode : awsvpc
RequiresCompatibilities :
- FARGATE
Cpu : 256
Memory : 1GB
ContainerDefinitions :
- Name : tomcat-test
Image : 'tomcat:jdk8-adoptopenjdk-openj9'
LogConfiguration :
LogDriver : awsfirelens
Options :
Name : datadog
apikey : <DATADOG_API_KEY>
Host : http-intake.logs.us3.datadoghq.com
dd_service : test-service
dd_source : test-source
TLS : 'on'
provider : ecs
MemoryReservation : 500
- Name : log_router
Image : 'amazon/aws-for-fluent-bit:stable'
Essential : true
FirelensConfiguration :
Type : fluentbit
Options :
enable-ecs-log-metadata : true
MemoryReservation : 50
Copy
Resources :
ECSTaskDefinition :
Type : 'AWS::ECS::TaskDefinition'
Properties :
NetworkMode : awsvpc
RequiresCompatibilities :
- FARGATE
Cpu : 256
Memory : 1GB
ContainerDefinitions :
- Name : tomcat-test
Image : 'tomcat:jdk8-adoptopenjdk-openj9'
LogConfiguration :
LogDriver : awsfirelens
Options :
Name : datadog
apikey : <DATADOG_API_KEY>
Host : http-intake.logs.us5.datadoghq.com
dd_service : test-service
dd_source : test-source
TLS : 'on'
provider : ecs
MemoryReservation : 500
- Name : log_router
Image : 'amazon/aws-for-fluent-bit:stable'
Essential : true
FirelensConfiguration :
Type : fluentbit
Options :
enable-ecs-log-metadata : true
MemoryReservation : 50
Copy
Resources :
ECSTaskDefinition :
Type : 'AWS::ECS::TaskDefinition'
Properties :
NetworkMode : awsvpc
RequiresCompatibilities :
- FARGATE
Cpu : 256
Memory : 1GB
ContainerDefinitions :
- Name : tomcat-test
Image : 'tomcat:jdk8-adoptopenjdk-openj9'
LogConfiguration :
LogDriver : awsfirelens
Options :
Name : datadog
apikey : <DATADOG_API_KEY>
Host : http-intake.logs.datadoghq.eu
dd_service : test-service
dd_source : test-source
TLS : 'on'
provider : ecs
MemoryReservation : 500
- Name : log_router
Image : 'amazon/aws-for-fluent-bit:stable'
Essential : true
FirelensConfiguration :
Type : fluentbit
Options :
enable-ecs-log-metadata : true
MemoryReservation : 50
Copy
Resources :
ECSTaskDefinition :
Type : 'AWS::ECS::TaskDefinition'
Properties :
NetworkMode : awsvpc
RequiresCompatibilities :
- FARGATE
Cpu : 256
Memory : 1GB
ContainerDefinitions :
- Name : tomcat-test
Image : 'tomcat:jdk8-adoptopenjdk-openj9'
LogConfiguration :
LogDriver : awsfirelens
Options :
Name : datadog
apikey : <DATADOG_API_KEY>
Host : http-intake.logs.ddog-gov.datadoghq.com
dd_service : test-service
dd_source : test-source
TLS : 'on'
provider : ecs
MemoryReservation : 500
- Name : log_router
Image : 'amazon/aws-for-fluent-bit:stable'
Essential : true
FirelensConfiguration :
Type : fluentbit
Options :
enable-ecs-log-metadata : true
MemoryReservation : 50
Copy
CloudFormation のテンプレートと統語法に関する詳細は、AWS CloudFormation ドキュメント をご参照ください。
注 : プレーンテキストで apikey
を公開しないようにするには、TaskDefinition シークレット を使用します。
awslogs
ログドライバーと Lambda 関数を使用して Fargate ログを監視し、Datadog にルーティングします。
ログを収集したいタスクまたはジョブのアプリケーションコンテナで、ログドライバーを awslogs
として定義します。手順は、AWS Fargate デベロッパーガイド を参照してください。
これは、Fargate タスクまたはジョブがログ情報を Amazon CloudWatch Logs に送信するように構成します。次は、awslogs ログドライバーを構成するためのタスク/ジョブ定義のスニペットです。
{
"logConfiguration" : {
"logDriver" : "awslogs" ,
"options" : {
"awslogs-group" : "/ecs/fargate-task|job-definition" ,
"awslogs-region" : "us-east-1" ,
"awslogs-stream-prefix" : "ecs"
}
}
}
Copy
タスクまたはジョブ定義で awslogs
ログドライバーを使用して、コンテナログを CloudWatch Logs に送信する方法については、awslogs ログドライバーを使用する を参照してください。このドライバーは、コンテナが生成したログを収集し、CloudWatch に直接送信します。
最後に、Datadog Lambda Log Forwarder 関数 を使用して CloudWatch からログを収集し、Datadog に送信します。
上の手順 に従ってタスクまたはジョブ定義に Datadog Agent コンテナを追加し、追加の環境変数 DD_APM_ENABLED
を true
に設定します。DD_SITE
変数を datadoghq.com
に設定します。設定しない場合、デフォルトで datadoghq.com
になります。
セットアップに基づいてアプリケーションをインスツルメントします。
注 : Fargate APM のアプリケーションでは、DD_AGENT_HOST
を設定しない でください。デフォルトの localhost
で動作します。
Datadog へのトレースの送信 の一般的な情報を参照してください。
アプリケーションが Datadog Agent コンテナと同じタスクまたはジョブ定義内で実行されていることを確認します。
Datadog で ECS Fargate プロセスを表示できます。ECS Fargate コンテナとの関係を確認するには、Datadog Agent v7.50.0 以降を使用します。
Live Processes ページ を使用することで、ECS Fargate のプロセスを Datadog で監視することができます。プロセス収集を有効にするには、タスク定義に PidMode
パラメーター を追加し、以下のように task
に設定します。
ECS でプロセスをフィルタリングするには、AWS Fargate
コンテナファセットを使用するか、Live Processes ページの検索クエリに fargate:ecs
と入力します。
Agent は、タグを自動検出して、タスク全体またはこのタスクまたはジョブ内の個別のコンテナにより送信されたすべてのデータに関連付けます。自動的に関連付けられるタグのリストは、Agent のカーディナリティ構成 に基づきます。
タグ カーディナリティ ソース container_name
大 ECS API container_id
大 ECS API docker_image
小 ECS API image_name
小 ECS API short_image
小 ECS API image_tag
小 ECS API ecs_cluster_name
小 ECS API ecs_container_name
小 ECS API task_arn
オーケストレーター ECS API task_family
小 ECS API task_name
小 ECS API task_version
小 ECS API availability-zone
小 ECS API region
小 ECS API
ecs.fargate.cpu.limit (gauge)Soft limit (CPU Shares) in CPU Units. ecs.fargate.cpu.percent (gauge)Percentage of CPU used per container (Linux only).Shown as percent ecs.fargate.cpu.system (gauge)System CPU time.Shown as nanocore ecs.fargate.cpu.task.limit (gauge)Task CPU Limit (shared by all containers).Shown as nanocore ecs.fargate.cpu.usage (gauge)Total CPU Usage.Shown as nanocore ecs.fargate.cpu.user (gauge)User CPU time.Shown as nanocore ecs.fargate.ephemeral_storage.reserved (gauge)The reserved ephemeral storage of this task. (Fargate 1.4.0+ required).Shown as mebibyte ecs.fargate.ephemeral_storage.utilized (gauge)The current ephemeral storage usage of this task. (Fargate 1.4.0+ required).Shown as mebibyte ecs.fargate.io.bytes.read (gauge)Number of bytes read on the disk.Shown as byte ecs.fargate.io.bytes.write (gauge)Number of bytes written to the disk.Shown as byte ecs.fargate.io.ops.read (gauge)Number of read operation on the disk. ecs.fargate.io.ops.write (gauge)Number of write operations to the disk. ecs.fargate.mem.active_anon (gauge)Number of bytes of anonymous and swap cache memory on active LRU list (Linux only).Shown as byte ecs.fargate.mem.active_file (gauge)Number of bytes of file-backed memory on active LRU list (Linux only).Shown as byte ecs.fargate.mem.cache (gauge)Number of bytes of page cache memory (Linux only).Shown as byte ecs.fargate.mem.hierarchical_memory_limit (gauge)Number of bytes of memory limit with regard to hierarchy under which the memory cgroup is (Linux only).Shown as byte ecs.fargate.mem.hierarchical_memsw_limit (gauge)Number of bytes of memory+swap limit with regard to hierarchy under which memory cgroup is (Linux only).Shown as byte ecs.fargate.mem.inactive_file (gauge)Number of bytes of file-backed memory on inactive LRU list (Linux only).Shown as byte ecs.fargate.mem.limit (gauge)Number of bytes memory limit (Linux only).Shown as byte ecs.fargate.mem.mapped_file (gauge)Number of bytes of mapped file (includes tmpfs/shmem) (Linux only).Shown as byte ecs.fargate.mem.max_usage (gauge)Show max memory usage recorded.Shown as byte ecs.fargate.mem.pgfault (gauge)Number of page faults per second (Linux only). ecs.fargate.mem.pgmajfault (gauge)Number of major page faults per second (Linux only). ecs.fargate.mem.pgpgin (gauge)Number of charging events to the memory cgroup. The charging event happens each time a page is accounted as either mapped anon page(RSS) or cache page(Page Cache) to the cgroup (Linux only). ecs.fargate.mem.pgpgout (gauge)Number of uncharging events to the memory cgroup. The uncharging event happens each time a page is unaccounted from the cgroup (Linux only). ecs.fargate.mem.rss (gauge)Number of bytes of anonymous and swap cache memory (includes transparent hugepages) (Linux only).Shown as byte ecs.fargate.mem.task.limit (gauge)Task Memory Limit (shared by all containers).Shown as byte ecs.fargate.mem.usage (gauge)Number of bytes of memory used.Shown as byte ecs.fargate.net.bytes_rcvd (gauge)Number of bytes received (Fargate 1.4.0+ required).Shown as byte ecs.fargate.net.bytes_sent (gauge)Number of bytes sent (Fargate 1.4.0+ required).Shown as byte ecs.fargate.net.packet.in_dropped (gauge)Number of ingoing packets dropped (Fargate 1.4.0+ required).Shown as packet ecs.fargate.net.packet.out_dropped (gauge)Number of outgoing packets dropped (Fargate 1.4.0+ required).Shown as packet ecs.fargate.net.rcvd_errors (gauge)Number of received errors (Fargate 1.4.0+ required).Shown as error ecs.fargate.net.sent_errors (gauge)Number of sent errors (Fargate 1.4.0+ required).Shown as error
ECS Fargate チェックには、イベントは含まれません。
fargate_check Returns CRITICAL
if the Agent is unable to connect to Fargate, otherwise returns OK
.Statuses: ok, critical
ご不明な点は、Datadog のサポートチーム までお問合せください。