AWS Compute Optimizer で Amazon EC2 のメモリ使用率が表示されない

AWS

2023.7.13

Topics

はじめに

Compute Optimizer では、様々なメトリックを見比べながら EC2 インスタンスの最適化が行なえます。
ある日、Compute Optimizer を見てインスタンスが最適化されているかを見ていました。
ただ、メモリ使用率の欄だけ空白でその原因が気になったので調査しました。

なお、Compute Optimizer を使った EC2 最適化方法については以下をご覧下さい。

関連記事
AWS Compute Optimizer を使った最適化分析

状況

なお、前提として CloudWatch Agent を入れていない場合はメモリ使用率は表示されません。
今回の場合は、CloudWatch Agent をインストールしており、CloudWatch メトリクスでメモリ使用率が確認できている状態だが Compute Optimizer では表示されない場合としております。

メモリ使用率 (パーセント)
このインスタンスに Amazon CloudWatch エージェントをインストールして、メモリメトリクスを有効にします。

以下、Compute Optimizer で対象の EC2 の推奨事項を表示した画面です。

Compute Optimizerでメモリ使用率が表示されていない画面

本来であれば、以下のようにほか項目と同じように値が表示されています。

Compute Optimizerでメモリ使用率が表示されている画面

CloudWatch メトリクスでは該当インスタンスのメモリ使用率が取れている状態です。

CloudWatchメトリックのメモリ使用率の画面

メモリ使用率が表示されない原因

原因は至ってシンプルです。
カスタムメトリクスの名前空間がデフォルトと異なり対象外と判定されているから。

CloudWatchメトリックのカスタム名前空間の画像

Compute Optimizer が読み取ってくれる名前空間は以下の通りです。
それ以外に CloudWatch Agent の Config で指定している場合は読み取ってくれません。

  • Linux OS の場合
    • CWAgent 名前空間内の mem_used_percent メトリクス
    • System/Linux 名前空間内のレガシー MemoryUtilization メトリクス
  • Windows OS の場合
    • CWAgent 名前空間内の Available MBytes メトリクス
    • Available MBytesMemory % Committed Bytes In UseCWAgent とメトリクスの両方が名前空間で設定されている場合、Compute OptimizerAvailable MBytes は推奨値を生成するプライマリメモリメトリックとして選択します。

AWS Compute Optimizer で分析されたメトリクス – AWS Compute Optimizer

解決方法

それぞれの OS に合わせた名前空間に変更することで正しく表示されるようになります。

Linux OS の場合
「namespace」で「CWAgent」を明示的に指定すれば OK です。

{
  "metrics": {
    "namespace": "CWAgent",
    "metrics_collected": {
      "mem": {
        "measurement": ["mem_used_percent"]
      }
    }
  }
}

Windows OS の場合
「namespace」のデフォルト値が「CWAgent」なので、明示的に記述しなくても大丈夫です。

{
  "metrics": {
    "metrics_collected": {
      "Memory": {
        "measurement": [
          {
            "name": "Available MBytes"
          }
        ]
      }
    }
  }
}

CloudWatch エージェント設定ファイルを手動で作成または編集する – Amazon CloudWatch

参考資料

CloudWatch エージェントを使用して Amazon EC2 インスタンスとオンプレミスサーバーからメトリクスとログを収集する – Amazon CloudWatch
AWS Compute Optimizer とは? – AWS Compute Optimizer
AWS Compute Optimizer で分析されたメトリクス – AWS Compute Optimizer

Cold-Airflow

2021年新卒入社。インフラエンジニアです。RDBが三度の飯より好きです。 主にデータベースやAWSのサーバレスについて書く予定です。あと寒いのは苦手です。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら