【小ネタ】AWS/ECS名前空間のMemoryUtilizationメトリクスとECS/ContainerInsights名前空間のMemoryUtilizedメトリクスは単位が違う

【小ネタ】AWS/ECS名前空間のMemoryUtilizationメトリクスとECS/ContainerInsights名前空間のMemoryUtilizedメトリクスは単位が違う

ささいな内容ではありますが、字面が似ていて意外と間違えやすい&ミスった場合の影響が大きいということでブログにしました。
Clock Icon2024.11.29

Amazon ECSでメモリ関連のメトリクスを取りたい

Amazon ECS(以下、ECS)のコンテナ群を監視する際は、Amazon CloudWatch(以下、CloudWatch)メトリクスを参照することが多いです。この際、参照するメトリクスによっては、メモリ使用とメモリ使用を間違える可能性がある(筆者は間違えてました)ので、今回紹介します。

ざっくり要約

  • AWS/ECS名前空間のMemoryUtilizationメトリクスと、ECS/ContainerInsights名前空間のMemoryUtilizedメトリクスとでは、単位が違う
  • AWS/ECS名前空間のMemoryUtilizationメトリクス:%
  • ECS/ContainerInsights名前空間のMemoryUtilizedメトリクス:MB

解説

ECSのメトリクスを取得する場合は、ECS標準で取得できるメトリクスと、Container Insightsで取得できるメトリクスがあります。ECS標準のメトリクスはAWS/ECS名前空間で、Container InsightsメトリクスはECS/ContainerInsights名前空間で取得できます。

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/available-metrics.html

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-ECS.html

これら2つのメトリクスでは、どちらもメモリ関連のメトリクスを取得することができます。しかし、ECS標準メトリクスではメモリ使用を、ContainerInsightsメトリクスではメモリ使用を取得するという違いがあります。

以下、ECS標準メトリクスより

MemoryUtilization
クラスターまたはサービスで使用されているメモリの割合。

(中略)

単位: パーセント。

こちらはContainer Insightsメトリクスより

MemoryUtilized
使用しているディメンションセットによって指定されるリソースのタスクにより使用されているメモリ。

(中略)

単位: メガバイト

注意するべきシチュエーションと対策

上記の通りMemoryUtilizationMemoryUtilizedで字面が似ています。そのため、メモリ使用率を取得するために設定したメトリクスが誤ってMemoryUtilizedになっているケースなどが想定されます。

これにより、もともと取得したい値が取れていないことになり、想定した監視ができなくなる可能性が高いです。

具体的にいうと、例えばCloudWatchアラームの閾値を設定する場合、メモリ使用率とメモリ使用量では絶対値が異なります。ですので、間違ったメトリクスを設定したためにアラームが発出されない・または頻繁に意図せぬアラームが発出されてしまう恐れもあります。

ですので、メトリクスを設定する際は単位に気をつけて、本当に意図した値が取れているのか確認するようにしましょう。

メトリクスの単位には気をつけよう

タイトルで【小ネタ】と表現したように、要は「メトリクスの設定ミスに気をつけようね」という内容なのですが、仮にメトリクスを間違えた場合は運用に大きな影響を及ぼすことが考えられます。

しっかり確認していないと意外とミスしそうな内容でしたので、この記事を読んだ方はいちどCloudWatchメトリクスの種類や単位をしっかり確認して、意図した設定になっているか確認してみましょう。では!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.