AWS CPU使用率が高騰したときにCloudWatchで通知する


今回のゴール

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状態と判定されメールで通知された事を確認しました。


コメントを残す

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