👀

CloudWatchでメモリを監視する

2024/06/12に公開

Amazon CloudWatchではデフォルトでEC2インスタンスのメモリ使用量を直接監視することはできません。なのでカスタムメトリクスを使用してメモリ使用量を監視してみたいと思います。

CloudWatchエージェントのインストール

sudo yum install -y amazon-cloudwatch-agent

CloudWatchエージェントの設定ファイルを作成

設定ファイルの作成

sudo vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json

ファイルの中身

{
  "agent": {
    "metrics_collection_interval": 60,
    "run_as_user": "root"
  },
  "metrics": {
    "metrics_collected": {
      "mem": {
        "measurement": [
          "mem_used_percent"
        ]
      },
      "disk": {
        "measurement": [
          "used_percent"
        ],
        "resources": [
          "*"
        ]
      }
    },
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    }
  }
}

CloudWatchエージェントの開始

設定ファイルを適用し、CloudWatchエージェントを開始します。

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json -s

CloudWatchエージェントの状態を確認

CloudWatchエージェントが正しく実行されているかを確認します。

sudo systemctl status amazon-cloudwatch-agent

IAMロールに必要な権限を付与

EC2インスタンスにアタッチされているIAMロールにCloudWatchエージェントの権限"CloudWatchAgentServerPolicy"を付与します。

CloudWatchで確認

AWSマネジメントコンソールからCloudWatchを開くとカスタム名前空間に"CWAgent"が作成されています。その中の"InstanceId"をクリックするとメトリクス名"mem_userd_percent"で使用中のメモリを確認することができます。

結構簡単に設定できますね。
あとは要件に応じてアラームを設定したりしましょう。

Discussion