FargateにDatadog Agent導入してみた

soichiro tsuchida

2022.4.26

  • はじめに
  • Datadog Agent のインストール
  • あとがき
  • 参考

はじめに

Sreake事業部の槌田です。

普段はSREとして設計、構築、監視まで業務をこなしています。

最近、監視業務でDatadogを使うことが多くなってきて興味を持ち始めたので検証や知見を書いていく予定です!

先日案件でECS on FargateにDatadog Agentを入れたのでインストール方法や知見を書いていきます。

Datadog Agent のインストール

DatadogをFargateで使うためのステップ

① DatadogにAWSアカウントを連携する(前提)

② ECS on Fargateのtask definitionにDatadogの環境変数を追加する

③ DatadogのインテグレーションでECSをインストールする

④ ダッシュボードでFargateのメトリクスを確認する

早速本題です。

① DatadogにAWSアカウントを連携する※

ステップ①は前提なので、設定してない場合はDatadog公式のAWSを参照してください。

②ECS on Fargateのtask definitionにDatadogの環境変数を追加する

ECS on FargateをDatadogで監視するためにtask definitionで使用した設定は下記になります。

{
    "name": "datadog-agent",
    "image": "datadog/agent:latest",
    "logConfiguration": {
      "logDriver": "awslogs",
      "options": {
        "awslogs-group": "${log_group}",
        "awslogs-region": "ap-northeast-1",
        "awslogs-stream-prefix": "datadog"
      }
    },
    "cpu": 10,
    "memory": 256,
    "essential": true,
    "mountPoints": [],
    "portMappings": [
      {
        "hostPort": 8126,
        "protocol": "tcp",
        "containerPort": 8126
      }
    ],
    "environment": [
      {
        "name": "ECS_FARGATE",
        "value": "true"
      },
      {
        "name": "DD_PROCESS_AGENT_ENABLED",
        "value": "true"
      },
      {
        "name": "DD_DOGSTATSD_NON_LOCAL_TRAFFIC",
        "value": "true"
      },
      {
        "name": "DD_APM_ENABLED",
        "value": "true"
      },
      {
        "name": "DD_APM_NON_LOCAL_TRAFFIC",
        "value": "true"
      }
    ],
    "secrets": [
      {
        "name": "DD_API_KEY",
        "valueFrom": "${dd_api_key}"
      }
    ],
    "networkMode": "awsvpc"
  }

今回のECS on Fargateはterraformで作成する予定でした。なので、同じものを使いまわせるように一部環境変数にしています。

上記の設定を監視したいtask definitionに追記してコンテナを作成します。

③ DatadogのインテグレーションでECSをインストールする

DatadogのインテグレーションでECSをインストールされているか確認しましょう。

インストールされてない場合はインストールし、下記のようにインストールされているか確認します。

④ ダッシュボードでFargateのメトリクスを確認する

デフォルトで準備されているECSのダッシュボードでメトリクスを取得できていれば導入完了です。

ここからは設定などの細かな話をしていきます。

まずはDatadogのAPI Keyの管理方法です。

冒頭でも記載しましたが今回の環境はTerraformでコード化しているのですべてGitで管理しています。

なのでシークレット情報を直書きするのはよくないですよね?

それを解決してくれたのがAWS Secret Manager※です。このサービスを使うことによりAPI Keyの管理、保護を容易にできるようになりました。

secrets情報を記載する際はsecretsブロックを下記のように記述しましょう。

"secrets": [
      {
        "name": "",
        "valueFrom": ""
      }
]

次にFargateに必要なenviromentについてです。Fargateの場合はdatadog.yamlでカスタマイズできないので、enviromentsで指定します。Fargateでは実装できない環境変数もあるのであらかじめ確認しましょう。※

APM設定の話はcoming soon

あとがき

Datadogの導入もECS on Fargate使うのも初めてでしたが、今回で理解が強くなったと思います。

Fargate自体もかなり構築しやすくDatadogの導入も容易なので皆さんもぜひ使ってみてください。

今後はもっとDatadogを使って情報を発信していきます!

SrekeではDatadogの導入支援サービスも提供しております。ぜひお気軽にお問い合わせください。

Datadogの導入、活用ついてのご質問・ご相談などお気軽にお問い合わせください

Datadog

場所や規模に関係なく、あらゆるスタック/アプリケーションの内部を監視できるDataDogの導入、構築を支援いたします。

資料請求・お問い合わせはこちら

参考

ブログ一覧へ戻る

お気軽にお問い合わせください

SREの設計・技術支援から、
SRE運用内で使用する
ツールの導入など、
SRE全般についてご支援しています。

資料請求・お問い合わせ