CloudWatch Logs Insights でコンテナ単位のCPU・メモリ使用量などを確認する

改めてCloudWatchは奥が深い...
2021.04.02

ちゃだいん(@chazuke4649)です。

前回のブログの過程で、Container Insights画面以外でサクッとコンテナ単位のCPU・メモリ使用量を確認する方法があったので共有します。

今回紹介するのは2パターンです。

1.Container Insights画面から飛ぶ方法
2.サンプルクエリをそのまま実行する方法

前提

Container Insights画面ではみませんが、Container Insightsを有効化し、これによるカスタムメトリクスやログを収集する必要があります。

その他Container Insightsに関係する有用情報を下記ブログで紹介しているので、ぜひ見てみてください。

Container Insights でコンテナ単位のCPU・メモリ使用率を表示させる | DevelopersIO

1.Container Insights画面から飛ぶ方法

CloudWatchコンソールを開き、Container Insights画面を開きます。左上のプルダウンで[ECS Tasks]を選択し、下の方へスクロールします。

対象のコンテナにチェックを入れて、[Actions]で[View performance logs]を押します。

すると、Logs Insights画面に遷移し、すでにクエリが入った状態でまでいけますので、あとはクエリを実行するだけです。

ログ一覧が表示され1つ開いてみると、以下の通りコンテナnginxにて、CPUユニット数が151.92...、メモリが47MiB使用されているのが確認できました。

2.サンプルクエリをそのまま実行する方法

以下ドキュメントに記載のサンプルクエリをそのまま実行する方法です。

Container Insights メトリクスの表示 - Amazon CloudWatch

stats avg(CpuUtilized) as CPU, avg(MemoryUtilized) as Mem by TaskId, ContainerName
| sort Mem, CPU desc

※上記URLの「ユースケース: Amazon ECS コンテナでタスクレベルのメトリクスを表示する」より引用

CloudWatchコンソールから Logs Insight画面を直接開いて、プルダウンから対象のロググループ/aws/ecs/containerinsights/hogehoge-cluster/performanceを選択し、サンプルクエリをコピペして、クエリ実行するだけです。

範囲を1hに指定していたので、1時間の平均使用CPUユニット数58.8289と平均使用メモリ40.7321MiBを確認できました。

確認は以上です。

終わりに

CloudWatch内のサービス群が様々な連携をしており、やり込んでいくと面白そうです。ぜひ一度お試しください。

それではこの辺で。ちゃだいん(@chazuke4649)でした。