kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

datadogでfargateのコンテナ監視をする

datadogでコンテナ内の詳細なメトリクスが取得できるようになります。

上記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_TAGSDD_DOCKER_ENV_AS_TAGS を使うこともできるようですが、
datadogとしては下記の方法を推奨しているようです。
https://docs.datadoghq.com/ja/getting_started/tagging/unified_service_tagging/?tab=ecs

今回はアプリケーション側にenvがないので、 部分的なコンフィギュレーション で設定しています。

追加のインテグレーションのメトリクス収集

こちらで

インテグレーションメトリクスの収集の詳細については、ECS Fargate のインテグレーションセットアップを参照してください。

とあるのですが、最初なんのことか分からず困りました。
要はアプリケーション側がdatadogが対応しているインテグレーション(ミドルウェアなど)であれば、
追加でさらに詳細なメトリクスを収集できますよ。
ということのようです。

参考