Container Insightsを活用したECSクラスターの監視

はじめに

先日、Amazon Elastic Container ServiceにてSpring Bootで作ったアプリを動かすことをしました。

miyohide.hatenablog.com

今回は、このアプリに対してContainer Insights機能を試してみます。

Container Insightsとは

コンテナ化されたアプリのメトリクスやログを収集・集計・要約できるCloudWatchの機能のようです。詳細は以下を参照。

docs.aws.amazon.com

タスクやコンテナレベルでメトリクスやログを収集することが可能ということで、実際にやっています。

実装

実装と言っても、Amazon Elastic Container Serviceのクラスタを作成時にContainer Insightsのチェックを入れるだけです。

これだけでCloudWatchのContainer InsightsにてCPU使用率やメモリ使用率などが表示可能となります。

「コンテナマップ」ではクラスタのしたにサービスとタスク定義が表現されます。今回は大変単純なのであまりありがたみがわかりませんが、数が多くなると有用なのかもしれません。

リソースごとの表示をするとそれぞれのCPU利用率やメモリ使用率が表示できるので、これは有用なのかもしれません。

CloudWatchのロググループを見ると、「/aws/ecs/containerinsights/クラスタ名/performance」というロググループが作られていました。この中身がContainer Insightsの実態なのかなと思われます。

料金

お手軽に導入できるContainer Insightsですが、料金については以下のページを参照します。

aws.amazon.com

ただ、あまりわかりやすいものではないので、同ページにある例に目を通しておきます。この記事を書いているときには例12が該当します。

メトリクスの量に依存するので、以下のページに記載されているメトリクス一覧で数を確認します。

docs.aws.amazon.com

何かの方法で取得するメトリクスを選択できれば節約には良さそうなのですが、どうも設定できなさそうです。

メトリクスの月額コストは2024年2月現在、0.30USD(東京リージョン)です。結構高額です。

あわせてServiceが少なめのECSクラスターにて、Container Insightsをオンにして料金を確認すると良いかなと思います。

考察

Container Insightsの利用にアプリケーション上の設定などは必要ないので、利用できるものであれば利用すれば良いかなと思います。

唯一の懸念点は料金です。Serviceの数が増えると必然的にメトリクスの数が増えてしまうので、最初は少ないServiceしかないクラスターで有効化するとよいのかなと思います。