継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

ECS Fargate で Mackerel コンテナエージェントによる監視設定をする

タダです.

業務で ECS Fargate の監視をしていく時に Mackerel のコンテナエージェントをセットアップするやり方を確認しました.設定方法をこの記事でまとめていきます.

確認した環境

今回のセットアップを確認した環境はコンテナエージェントのバージョンが1.4.0 で確認しています.

コンテナエージェントのセットアップ

コンテナエージェントのセットアップについてはドキュメントの記載があり,サイドカーとして ECS クラスターの中で動作させます.コンテナエージェントを動作させるには,Fargate のプラットフォームバージョンが 1.3.0以降である必要があります.

AWS Fargate プラットフォームバージョン 1.3.0以降

mackerel.io mackerel.io

また,サイドカーとして動かすコンテナはタスク定義で以下の設定が必要です.

  • コンテナ名:mackerel-container-agent
  • コンテナイメージ: mackerel/mackerel-container-agent:latest
  • メモリ制限: ハード制限: 128
  • 環境変数: MACKEREL_CONTAINER_PLATFORM: "ecs",MACKEREL_APIKEY: Mackerel API キー

Systems Manager Parmeter Store に Mackerel API キーを保管

Mackerel API キーは直に環境変数に設定するのではなく Systems Manager Paramater Store に Secure String として Mackerel API キーの文字列を入れてコンテナ起動時に読み込むよう事前準備で設定しておきます.

f:id:sadayoshi_tada:20210420230701p:plain

ECS Fargate のタスク定義にコンテナエージェントの設定を追加

そして,アプリケーションのコンテナのタスク定義と一緒に次のような定義を追加していきます.また,タスクの実行ロールで Systems Manager Paramater Store の読み取り権限も付与して準備が完了です.

      {
        "name":"mackerel-container-agent",
        "image":"mackerel/mackerel-container-agent:latest",
        "memoryReservation": 128,
        "essential":true,
        "environment": [
          {
            "value": "ecs",
            "name": "MACKEREL_CONTAINER_PLATFORM"
          }
        ],
        "secrets": [
          {
            "valueFrom": "mackerel_agent_apikey",
            "name": "MACKEREL_APIKEY"
          }
        ]     
      }

コンテナエージェント起動後の Mackerel 管理画面での確認

コンテナエージェントが正常に起動すれば Mackerel に監視対象ホストとして登録されます.コンテナごとの CPU 使用量,コンテナごとのメモリ使用量,コンテナごとのインタフェースの送受信バイト数がメトリックとして確認できるようになりました.

f:id:sadayoshi_tada:20210420231120p:plain

まとめ

ECS Fargate 環境での Mackerel コンテナエージェントの導入方法をまとめていきました.この記事では触れられてないですがEC2 の監視同様にプラグイン監視も公開されたイメージを使うことで監視ができるようになるため適宜利用していきましょう.

hub.docker.com