今回のゴール
EC2インスタンスのCPU使用率が高騰した時にSNSを使用して通知します。
- CPUの使用率が80%以上(アラート)
- CPUの使用率が80%未満(OK)
- 測定不可(INSUFFICIENT_DATA)
アラームが開始直後であるか、メトリクスが利用できないか、データが不足していてアラームの状態を判定できない状態です。
下準備
SNSトピックの作成は下記を参照ください。
設定
アラートの設定
CloudWatchサービスの[アラーム]より「アラームの作成」をクリックします。

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

[全てのメトリクス]タブの[EC2]ー[インスタンス別メトリクス]と進み、メトリクスの選択で”CPU”で検索して取得したいEC2インスタンスの”CPUUtilization”の行にチェックを付けて「メトリクスの選択」をクリックします。

【条件】
[アラームの条件]:以上
[…よりも]:80
[アラームを実行するデータポイント]:1/1
今回はアラートを早く出したかったので、デフォルトの1/1としましたが、例えば2/5とすると5回のデータポイントの内2回閾値を超えればアラーム通知されるような事もできます。
[欠損データの処理]:欠損データをみつかりませんとして処理(デフォルト)

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

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

OKの設定
アクションの設定まではアラートと同じ設定です。
[アラーム状態のトリガー]:OKを選択します。

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

測定不能
アクションの設定まではアラートと同じ設定です。
[アラーム状態のトリガー]:”データ不足”を選択します。

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

設定確認
CPUに負荷をかけて使用率を上げます。
SSHでEC2インスタンスに接続して、下記コマンドを実行します。(1回だけでは負荷があまりかからないので、複数回実行します。)
yes > /dev/null &
yes > /dev/null &
yes > /dev/null &
yes > /dev/null &
yes > /dev/null &
暫くするとアラーム状態と判定されメールで通知されました。

次にCPUに負荷をかけていたプロセスを終了します。
EC2インスタンスを再起動するのが簡単ですが、下記の方法でも可能です。
下記のコマンドで実行されているプロセスを確認します。
jobs
[1] Running yes > /dev/null &
[2] Running yes > /dev/null &
[3] Running yes > /dev/null &
[4]- Running yes > /dev/null &
[5]+ Running yes > /dev/null &
下記コマンドで起動されているプロセスを終了します。
kill %1 %2 %3 %4 %5
暫くするとOK状態と判定されメールで通知されました。

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

最後に、EC2インスタンスを開始して暫く待ちOK状態と判定されメールで通知された事を確認しました。