MENU
オンライン講座開催中

AWS EC2にCloudWatchエージェントを導入してメモリ・ディスクを監視する方法

AWS EC2にCloudWatchエージェントを導入してメモリ・ディスクを監視する方法

AWS EC2にCloudWatchエージェントをインストールして、メモリとディスクの監視アラームを設定する手順をまとめました。LightsailではできないメモリやディスクのI監視が、EC2ではCloudWatchエージェントを使うことで実現できます。

目次

LightsailとEC2のCloudWatch対応の違い

LightsailはCloudWatchとの連携が限定的で、メモリやディスクの監視は標準ではできません。EC2ではCloudWatchエージェントをインストールすることで、より細かい監視が可能になります。

機能EC2Lightsail
CPUメトリクス✅ フル対応✅ 独自画面あり
メモリ監視✅ エージェント導入で可⚠️ 標準では取れない
ディスク監視✅ エージェント導入で可⚠️ 標準では取れない
CloudWatchアラーム⚠️ Lightsail独自のみ
CloudWatch Logs❌ 基本NG

事前準備:IAMロールにCloudWatch権限を追加する

CloudWatchエージェントがメトリクスを送信するには、EC2インスタンスにアタッチされたIAMロールにCloudWatchの権限が必要です。

  1. AWSコンソール → IAM → ロール
  2. EC2インスタンスにアタッチされているロールを選択
  3. 「許可を追加」→「ポリシーをアタッチ」
  4. CloudWatchAgentServerPolicy を検索してチェックを入れる
  5. 「許可を追加」をクリック

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?CollectD2(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コンソールで確認できます。

  1. AWSコンソール → CloudWatch → メトリクス → すべてのメトリクス
  2. 検索バーに「CWAgent」と入力
  3. 「CWAgent」の名前空間が表示される
  4. 「ImageId,InstanceId,InstanceType,device,fstype,path」→ disk_used_percent
  5. 「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-Highmem_used_percent80%以上メモリ逼迫の検知
EC2-Disk-Highdisk_used_percent(/)80%以上ディスク枯渇の検知

CloudWatchエージェントを導入することで、EC2の標準メトリクスでは取れないメモリとディスクの監視が可能になります。次のステップとしてCloudWatchダッシュボードを作成し、複数のメトリクスを一画面で確認できる環境を整える予定です。

目次