AWS メモリの使用率が高騰したときにCloudWatchで通知する。


今回のゴール

EC2インスタンスのメモリ使用率が高騰した時にSNSを使用して通知します。

※今回は負荷テストが行いやすいように利用率を40%に設定しております。(本番環境では90%など環境に合わせて設定してください。)

  • メモリの使用率が40%以上(アラート)
  • メモリの使用率が40%未満(OK)
  • 測定不可(INSUFFICIENT_DATA)
  • アラームが開始直後であるか、メトリクスが利用できないか、データが不足していてアラームの状態を判定できない状態です。

下準備

SNSトピックの作成は下記を参照ください。

メモリの使用率は標準メトリクスで取得できません。
カスタムメトリクスで取得可能です。

カスタムメトリクスを取得するにはCloudWatchAgentをインストールする必要があります。

詳細は下記を参照ください。

設定

アラートの設定

CloudWatchサービスの[アラーム]より「アラームの作成」をクリックします。

「メトリクスの選択」をクリック

[全てのメトリクス]タブの[CWAgent]ー[ImageId,InstanceId,InstanceType]と進み、取得したいEC2インスタンスの”mem_used_percent”の行にチェックを付けて「メトリクスの選択」をクリックします。

【条件】
[アラームの条件]:以上
[…よりも]:40

[欠損データの処理]:欠損データをみつかりませんとして処理(デフォルト)

[SNSトピックの選択]:”既存のSNSトピックを選択”にチェック
[通知の連絡先]:CloudWatch_Alarms_Test(登録済のSNSトピックを選択

[アラーム名]:alarm_ec2_mem(任意)

OKの設定

アクションの設定まではアラートと同じ設定です。

[アラーム状態のトリガー]:OKを選択します。

[アラーム名]:alarm_ec2_mem_OK(任意)

測定不能

アクションの設定まではアラートと同じ設定です。

[アラーム状態のトリガー]:”データ不足”を選択します。

[アラーム名]:alarm_ec2_mem_insufficient(任意)

設定確認

stressコマンドを使用してメモリに負荷をかけて使用率を上げます。

SSHでEC2インスタンスに接続して、下記コマンドを実行してstressコマンドをインストールします。

wget http://ftp.riken.jp/Linux/dag/redhat/el7/en/x86_64/rpmforge/RPMS/stress-1.0.2-1.el7.rf.x86_64.rpm
sudo rpm -ivh stress-1.0.2-1.el7.rf.x86_64.rpm

stressコマンドを実行します。
パラメータは以下の通りです。環境により変更してください。
-m:ワーカー数
–vm-bytes 200M:1ワーカーに付き200M確保

 stress -m 4 --vm-bytes 200M

暫くするとアラーム状態と判定されメールで通知されました。

次にstressコマンドをctrl+cで終了します。

暫くするとOK状態と判定されメールで通知されました。

最後に、EC2インスタンスを停止して暫くすると、insufficient状態と判定されメールで通知されました。


コメントを残す

メールアドレスが公開されることはありません。