AWS EC2にCloudWatchエージェントをインストールして、メモリとディスクの監視アラームを設定する手順をまとめました。LightsailではできないメモリやディスクのI監視が、EC2ではCloudWatchエージェントを使うことで実現できます。
LightsailとEC2のCloudWatch対応の違い
LightsailはCloudWatchとの連携が限定的で、メモリやディスクの監視は標準ではできません。EC2ではCloudWatchエージェントをインストールすることで、より細かい監視が可能になります。
| 機能 | EC2 | Lightsail |
|---|---|---|
| CPUメトリクス | ✅ フル対応 | ✅ 独自画面あり |
| メモリ監視 | ✅ エージェント導入で可 | ⚠️ 標準では取れない |
| ディスク監視 | ✅ エージェント導入で可 | ⚠️ 標準では取れない |
| CloudWatchアラーム | ✅ | ⚠️ Lightsail独自のみ |
| CloudWatch Logs | ✅ | ❌ 基本NG |
事前準備:IAMロールにCloudWatch権限を追加する
CloudWatchエージェントがメトリクスを送信するには、EC2インスタンスにアタッチされたIAMロールにCloudWatchの権限が必要です。
- AWSコンソール → IAM → ロール
- EC2インスタンスにアタッチされているロールを選択
- 「許可を追加」→「ポリシーをアタッチ」
- CloudWatchAgentServerPolicy を検索してチェックを入れる
- 「許可を追加」をクリック
CloudWatchエージェントのインストール
EC2にSSH接続してから以下のコマンドを実行します。
sudo dnf install -y amazon-cloudwatch-agent
設定ウィザードの実行
インストールが完了したら、対話形式の設定ウィザードを実行します。
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
ウィザードの回答は以下の通りです。
| 質問(英語) | 意味 | 回答 |
|---|---|---|
| On which OS are you planning to use the agent? | OSの種類 | 1(linux) |
| Are you using EC2 or On-Premises hosts? | EC2かオンプレか | 1(EC2) |
| Which user are you planning to run the agent? | 実行ユーザー | 1(cwagent) |
| Do you want to turn on StatsD daemon? | StatsDデーモン | 2(no) |
| Do you want to monitor metrics from CollectD? | CollectD | 2(no) |
| Do you want to monitor any host metrics? | ホストメトリクスの監視 | 1(yes) |
| Do you want to monitor cpu metrics per core? | コアごとのCPUメトリクス | 2(no) |
| Do you want to add ec2 dimensions? | EC2ディメンションの追加 | 1(yes) |
| Do you want to aggregate ec2 dimensions? | EC2ディメンションの集約 | 1(yes) |
| Would you like to collect your metrics at high resolution? | 収集間隔 | 4(60s) |
| Which default metrics config do you want? | デフォルトメトリクス設定 | 1(Basic) |
| Are you satisfied with the above config? | 設定の確認 | 1(yes) |
| Do you have any existing CloudWatch Log Agent configuration file? | 既存Log Agent設定のインポート | 2(no) |
| Do you want to monitor any log files? | ログファイルの監視 | 2(no) |
| Do you want the CloudWatch agent to also retrieve X-ray traces? | X-rayトレース | 2(no) |
| Do you want to store the config in the SSM parameter store? | SSMへの保存 | 2(no) |
Basicを選択すると、メモリ使用率(mem_used_percent)とディスク使用率(disk_used_percent)が自動的に収集対象になります。
エージェントの起動
設定ファイルを読み込んでエージェントを起動します。
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
-a fetch-config \
-m ec2 \
-c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json \
-s
起動状態を確認します。
sudo systemctl status amazon-cloudwatch-agent
Active: active (running) と表示されれば起動成功です。
CloudWatchコンソールでメトリクスを確認する
数分後にCloudWatchコンソールで確認できます。
- AWSコンソール → CloudWatch → メトリクス → すべてのメトリクス
- 検索バーに「CWAgent」と入力
- 「CWAgent」の名前空間が表示される
- 「ImageId,InstanceId,InstanceType,device,fstype,path」→ disk_used_percent
- 「ImageId,InstanceId,InstanceType」→ mem_used_percent
アラームの作成
メトリクスを選択した状態で「アラームの作成」からアラームを設定します。今回は2つ作成しました。
① メモリ使用率アラーム(EC2-Memory-High)
| 項目 | 設定値 |
|---|---|
| メトリクス | mem_used_percent |
| 条件 | 以上(>=) |
| しきい値 | 80% |
| 期間 | 5分 |
| 通知 | SNSトピック「CloudWatch-Alerts」 |
② ディスク使用率アラーム(EC2-Disk-High)
| 項目 | 設定値 |
|---|---|
| メトリクス | disk_used_percent(path: /) |
| 条件 | 以上(>=) |
| しきい値 | 80% |
| 期間 | 5分 |
| 通知 | SNSトピック「CloudWatch-Alerts」 |
SNSトピックとメール通知の設定
アラーム作成時に「新しいトピックの作成」を選択してSNSトピックを作成します。初回作成時は確認メールが届くので、メール内の「Confirm subscription」リンクをクリックして承認する必要があります。承認しないとアラーム通知が届かないので注意してください。
2つ目以降のアラームは「既存のSNSトピックを選択」で作成済みのトピックを選択すればOKです。
まとめ
| アラーム名 | メトリクス | しきい値 | 目的 |
|---|---|---|---|
| EC2-Memory-High | mem_used_percent | 80%以上 | メモリ逼迫の検知 |
| EC2-Disk-High | disk_used_percent(/) | 80%以上 | ディスク枯渇の検知 |
CloudWatchエージェントを導入することで、EC2の標準メトリクスでは取れないメモリとディスクの監視が可能になります。次のステップとしてCloudWatchダッシュボードを作成し、複数のメトリクスを一画面で確認できる環境を整える予定です。

