はじめに
この記事はEC2+CloudWatchでEC2のディスク使用率をモニタリングする方法について記述します。
環境
OS: AmazonLinux2023
EC2のディスク使用率をモニタリングするためにはCloudWatchのメトリクス中でも「カスタムメトリクス」使用する必要があります。以下は設定完了までの全体の流れです。
メトリクスって何?
メトリクスとは?
システムの状態を数値で表したデータです。主にパフォーマンスのモニタリングや分析のために使用され、時間の経過に伴って収集されたデータにの推移を把握することができます。
メトリクスの種類
種類 | 説明 | 例 |
---|---|---|
標準メトリクス | AWSサービスがデフォルトで提供するメトリクス | EC2のCPU使用率、RDSのディスクI/Oなど |
カスタムメトリクス | ユーザーが自分で定義して収集するメトリクス | ディスク使用率、リクエスト応答時間、メモリ使用率など |
作業フロー
- CloudWatch Agent設定
- IAM Role作成
- EC2のIAM Role設定
- CloudWatchのアラート設定
CloudWatch Agent設定
CloudWatch Agentインストール
カスタムメトリクスをCloudWatchに提供するためにはCloudWatch Agentが必要です。
EC2にCloudWatch Agentを入れましょう。
sudo yum install amazon-cloudwatch-agent
amazon-cloudwatch-agent.json設定
{
"metrics": {
"metrics_collected": {
"disk": {
"measurement": [
"used_percent"
],
"resources": [
"/"
],
"ignore_file_system_types": [
"sysfs", "tmpfs"
]
}
}
}
}
resources
はモニタリングしたいディレクトリを設定します。
今回はルートディレクトリを設定しました。
amazon-cloudwatch-agent.json設定を適用する
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
amazon-cloudwatch-agent.service再起動
sudo systemctl restart amazon-cloudwatch-agent.service
amazon-cloudwatch-agent.service状態確認
sudo systemctl status amazon-cloudwatch-agent.service
これでEC2側からCloudWatchにディスク容量のデータを送れるようになりました!
ログを見て動作を確認する
EC2がCloudWatchにアクセスできるようにIAM Role設定をしないと、EC2からスタムメトリクスのデータを提供することができません。
以下はエラーログです。
status code: 404, request id:
2025-02-27T08:32:42Z W! cloudwatch: 1665 retries, going to sleep 41008 ms before retrying.
2025-02-27T08:33:23Z E! cloudwatch: WriteToCloudWatch failure, err: NoCredentialProviders: no valid providers in chain
caused by: EnvAccessKeyNotFound: failed to find credentials in the environment.
SharedCredsLoad: failed to load profile, .
EC2RoleRequestError: no EC2 instance role found
caused by: EC2MetadataError: failed to make EC2Metadata request
IAM Role設定
EC2からカスタムメトリクス情報を渡すためにはそのための権限が必要です。
そのための権限を集めたものをIAM Roleとして作成します。
それではEC2に今作ったIAM Roleをアタッチしましょう
EC2のIAM Role設定
これでEC2→CloudWatchへカスタムメトリクス情報を渡せるようになりました。
CloudWatchのアラート設定
- CloudWatchの全てのアラート管理画面に移動します
- アラート作成、メトリクス選択
- CWAgent(CloudWatchAgent)クリック
モニタリングしたいEC2を選択します。
あとは、
しきい値設定
アラート名設定
アラート宛先設定
をすると完了です!
EC2からディスク容量情報をもらい、モニタリングできるようになりました。