今回のゴール
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状態と判定されメールで通知されました。
