[小ネタ]ECSのCPUUtilizationとCPUUtilizedは同じ指標?

両方とも同じCPUを表す指標ですが、異なるメトリクスです。
2023.03.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!AWS事業本部のおつまみです。

みなさん、ECSのパフォーマンス監視やっていますか?
ECSにはCPUを表す指標としてCPUUtilizationとCPUUtilizedがあります。

「同じCPUを表す指標だけど、その違いって何だろう?」と疑問に思ったので、今回はその違いについてご紹介します。

いきなり結論

2つの指標を各観点でまとめると、以下の通りです。

指標名 単位 有効なディメンション 確認方法 説明
CPUUtilization パーセンテージ ClusterName、ServiceName CloudWatchのAWS名前空間もしくはECSコンソール クラスターやサービスで使用されている CPU の割合
CPUUtilized CPUユニット TaskDefinitionFamily、ClusterName

ServiceName、ClusterName

ClusterName

CloudWatchのカスタム名前空間 使用しているディメンションセットによって指定されるリソースのタスクにより使用されている CPU ユニット数

CPUUtilization

CPUUtilizationはCPUユニットの使用率をパーセンテージで表しています。

つまり、CPUUtilization=(実際に使用されているCPUユニット数)/(全体ユニット数)で表すことができます。
例えば現在100ユニットをクラスターに割り当てていて、そのうち30ユニットを使用している場合、CPUUtilizationは30%となります。

そして有効なディメンションはClusterName、ServiceNameとなっています。
CloudWatchのCloudWatchのAWS名前空間もしくはECSコンソールから確認することができます。

  • CloudWatchのコンソール画面より

  • ECSのコンソール画面より

CPUUtilizationは、ECSクラスター・サービス単位でしかメトリクスが取得できません。
そのためタスクごとにCPU使用率を確認したい場合、後述するCPUUtilizedを使用します。

CPUUtilized

CPUUtilizedは使用しているCPUユニットの数を表しています。

有効なディメンションはTaskDefinitionFamily、ClusterName・ServiceName、ClusterName・ClusterNameClusterName、ServiceNameとなっています。
CloudWatchのCloudWatchのカスタム名前空間から確認することができます。

このメトリクスを使ってタスク単位でCPU使用率を表示させたい場合は、別途ロググループでのメトリクスフィルターの設定が必要です。
設定方法はこちらのブログをご参考ください。

まとめ

今回は、「CPUUtilization」と「CPUUtilized」のメトリクスについて、それぞれの指標の違いをご紹介しました。

ECSを使用する上で、パフォーマンス監視を行うことは非常に重要です。
ぜひ今回の内容を参考に、正しく監視を行っていただければ幸いです。

最後までお読みいただきありがとうございました!

以上、おつまみ(@AWS11077)でした!

参考

Amazon ECS CloudWatch メトリクス - Amazon Elastic Container Service Amazon ECS Container Insights メトリクス - Amazon CloudWatch