👀
CloudWatchでメモリを監視する
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