ECSとFargateのメトリクスを一括取得するCloudWatch Container Insightsがプレビューリリースです!

しばらく前に、EKSでプレビューリリースされていたCloudWatch Container Insightsが、ECSとFargateに対応したというニュースが飛び込んできました!

まだ、パブリックプレビューの状態なので、本番環境への適用には注意が必要ですが、設定自体は非常に簡単(5分程度)なので、是非一度、CloudWatchで観測するコンテナメトリクスの世界を堪能いただければと思います!

提供リージョンには、我らが東京リージョンも含まれているため、今すぐ試すことができます。

ECSコンテナ丸見えきたか…!!

  ( ゚д゚) ガタッ
  /   ヾ
__L| / ̄ ̄ ̄/_
  \/   /

CloudWatch Container Insightsとは?

公式ドキュメントはこちら(日本語表示になった場合情報が古いので、右上のドロップダウンリストより「English」を選択ください)。

Using Container Insights - Amazon CloudWatch

CloudWatch Container Insightsを使用して、AWS上のコンテナワークロードのメトリクスとログを収集、集約、分析することができます。メトリクスには、CPU、メモリ、ディスク、ネットワークなどが含まれ、コンテナの再起動失敗などの診断情報も提供されます。もちろんメトリクスには、CloudWatchアラームを設定できます。CloudWatchの自動ダッシュボードや、CloudWatch Logs Insightsを使って、コンテナデータの表示も可能です。

以前、以下の記事で書いたとおり、EKSは既にプレビューリリースされていたものが、ECS、Fargateにもやってきたというものです。

CloudWatch Container Insightsが利用できるリージョン

以下のリージョンで、ECS、Fargateのプレビューリリースが利用できます。3リージョンしかないところの、なんと東京リージョンが使えるという僥倖!

  • US East (Ohio)
  • EU (Frankfurt)
  • Asia Pacific (Tokyo)

Container InsightsをECSにセットアップする

セットアップマニュアルはこちら。

Webコンソールから実施可能です。WebコンソールのECSメニューを開いて、「Account Settings」をクリックします。

画面中、一番下に、「CloudWatch Container Insights」のオプトインチェックボックスがあるので、チェックし「保存」をクリックで、設定は完了です。

あとは、個別のECSクラスターにセッティングしていきます。クラスターの新規作成画面に、「CloudWatch Container Insights」の欄が追加されているので、利用する場合はこれにチェックすればOK。

セットアップの注意事項

2019年7月10日時点では、既に作成されているECSクラスターをあとからContainer Insightsの対象にすることはできないようです。残念。まぁこれも、本番リリース(GA)までに対応されることを期待しましょう!

CloudWatch Container Insightsの確認

取り急ぎ、パブリックIPでアクセスできる簡単なPHPコンテナを3つ起動するECSサービスを用意してみました。

Container Insightsで無事クラスタの情報が転送されていると、CloudWatchのコンソールの「概要」横の下矢印を押すと、ドロップダウンの中に「Container Insights(プレビュー)」と表示されているので、それをクリックします。

そうすると、Container Insightsの画面が表示されます!

ECSクラスターを選択している場合は、以下のメトリクスが表示されています。

  • CPU Utilization
  • Memory Utilization
  • Network
  • Container Instance Count
  • Task Count
  • Service Count

最初一番重要なのは、左上のドロップダウンで、閲覧対象のAWSコンテナワークロードをきちんと選択する必要があります。上の初期画面では、「ECS Cluster」を選択しています。

「ECS Services」を選択すると、画面が切り替わり取得可能メトリクスが増えます。

ダッシュボードは上部のドロップダウンで、クラスター名、サービス名でのフィルタリングが可能なので、特定サービスのメトリクス一覧の把握が容易です。

「ECS Serivices」で取得できるメトリクス一覧

  • CPU Utilization
  • Memory Utilization
  • Network TX
  • Network RX
  • Number of Deesired Tasks
  • Number of Running Tasks
  • Number of Pending Tasks
  • Number of Task Sets
  • Number of Deployments

メトリクスで注目なのは、「Number of Running Tasks」。今までは、CloudWatchのメトリクスの標準では、この超重要なタスク数が標準でメトリクス提供されておらず、サービスのCPU利用率を統計サンプルとしてタスク数として利用していました。

これが、マネージドで提供されるようになったのはありがたくわかりやすい。グラフを選択するとすぐにメトリクスの詳細画面に遷移するので、そこからアラームの設定も簡単。

タスク選択後、「View performance logs」で、CloudWatch logs insights画面に遷移します。便利。

以上、ざーっとでしたが、CloudWatch Container InsightsのECS、Fargateの紹介でした。

「ECS、Fargate環境のメトリクス取得環境が急激進化」

今までも、ECSやFargateの各種メトリクスはCloudWatchで取得可能でしたが、コンテナ周辺のCloudWatchメトリクスは、サードパーティーのコンテナ系監視サービス(Datadog、Mackerelなど)に比べて、機能が貧弱と言わざるを得ませんでした。

今回の、CloudWatch Container InsightsのEKS、ECS、Fargate対応は、そのあたりをマネージドで解決するための大きな進歩と言えます。

まだ、パブリックプレビューのため本番運用には適さないものですが、設定自体は非常に簡単なので、みなさんのコンテナワークロードで、どのようなメトリクスが取得できるか、どのようなダッシュボードの使い方ができるのかを、是非一度お試しいただければと思います。

それでは、今日はこのへんで。濱田(@hamako9999)でした。