datadogでコンテナ内の詳細なメトリクスが取得できるようになります。
- https://docs.datadoghq.com/ja/integrations/ecs_fargate/
- https://www.datadoghq.com/ja/blog/monitor-aws-fargate/
上記2つを参考に進めていけばあっさりと設定できます。
コンテナ定義
[ { "cpu": 0, "memoryReservation": 1024, "name": "foo-app", "image": "xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/foo-app-repository:latest", "essential": true, "dockerLabels": { "com.datadoghq.tags.env": "prd", "com.datadoghq.tags.service": "foo-app" }, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "foo-app-log-group", "awslogs-region": "ap-northeast-1", "awslogs-stream-prefix": "ecs" } }, "secrets": [ { "name": "DB_HOST", "valueFrom": "/DB_HOST" }, { "name": "DB_USER", "valueFrom": "/DB_USER" }, { "name": "DB_PASS", "valueFrom": "/DB_PASS" }, { "name": "DB_NAME", "valueFrom": "/DB_NAME" } ] }, { "cpu": 10, "memoryReservation": 256, "name": "datadog-agent", "image": "datadog/agent:latest", "essential": true, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "datadog-agent-log-group", "awslogs-region": "ap-northeast-1", "awslogs-stream-prefix": "ecs" } }, "secrets": [ { "name": "DD_API_KEY", "valueFrom": "/DD_API_KEY" } ], "environment": [ { "name": "ECS_FARGATE", "value": "true" } ] } ]
アプリケーション側の dockerLabels
datadogのタグ付けを行っています。
DD_DOCKER_LABELS_AS_TAGS
や DD_DOCKER_ENV_AS_TAGS
を使うこともできるようですが、
datadogとしては下記の方法を推奨しているようです。
https://docs.datadoghq.com/ja/getting_started/tagging/unified_service_tagging/?tab=ecs
今回はアプリケーション側にenvがないので、 部分的なコンフィギュレーション
で設定しています。
追加のインテグレーションのメトリクス収集
インテグレーションメトリクスの収集の詳細については、ECS Fargate のインテグレーションセットアップを参照してください。
とあるのですが、最初なんのことか分からず困りました。
要はアプリケーション側がdatadogが対応しているインテグレーション(ミドルウェアなど)であれば、
追加でさらに詳細なメトリクスを収集できますよ。
ということのようです。