はじめに
こんにちはおきたと申します。
今回は、AWS試験であるあるなネタの1つ、
「CPU使用率の監視×SNS通知」
を題材として扱っていきます。
イメージとしては下記の図の通りです。
なぜCPU使用率を監視するのか
CPUとはパソコンやスマホの頭脳に当たる、物事を処理するのに必要な装置です。この装置を監視する理由としては以下の通りです。
➀CPU使用率が高い状態だと動作が遅くなるため
➁タイムアウトやエラーが発生しやすくなるため
➂最悪の場合、システムが落ちる可能性があるため
イメージとしては、
「人間が考えすぎて倒れこんでしまう」
といった感じです。
これを防ぐため、CPU使用率を監視し、ある一定の閾値になるとSNSで通知する
ことをシステムとして構築します。
(AWS試験の場合AutoScalingと掛け合わせることがあるが、今回は簡単なものに挑戦します)
手順
本操作のStepとしては以下の通りです。
・VPCを作成する
・EC2を用意する
・SNS通知設定
・CloudWatch Alarmの作成
・EC2のCPUに負荷をかける
・動作確認
Step1:VPCを作成する
今回はプライベートサブネットにEC2を設置するための場所づくりをするために設定します。
以下に条件を設定します。
1.VPCの作成
VPCのCIDRアドレスを10.0.0.0/16にします。
VPCのDNS解決を有効化します。
(VPCサービス外に通信をつなぐ場合、DNS有効化をしないといけない)
2.サブネットの作成
1で作成したVPCに関連付けてサブネットを作成します。
CIDRアドレスを10.0.0.0/24にします。
(1.VPCの作成よりもCIDRアドレスは小さく設定してください。)
3.ルートテーブルの設定
VPCを作成すると自動的に作成されます。
今回は、パブリックサブネットを作成する必要がないのでそのままにします。
4.セキュリティグループの設定
EC2の中身にSystems Managerで接続したいため、HTTPS接続を許可するよう、インバウンドルールを設定します。
アウトバウンドルールは「すべてのトラフィックを許可する」ようにします。
5.エンドポイントの作成

com.amazonaws.ap-northeast-1.ssm
com.amazonaws.ap-northeast-1.ec2messages
com.amazonaws.ap-northeast-1.ssmmessages
これら3種類を作成する必要があります。
(これによってSystems Manager Session Managerに接続できるようになります。)
Step2:EC2を用意する
まず初めに監視対象となるEC2を用意します。
1.IAMロールの作成
IAMロールの許可ポリシーに「AmazonSSMManagedInstanceCore」「AmazonEC2FullAccess」を追加します。
2.EC2を作成

ネットワーク、サブネットはStep1で作成したものを使用してください。
〇セキュリティグループについて
Step1_4で作成したセキュリティグループを使用してください。
〇IAMロール
1で設定したIAMロールを適用してください。
緑色になっていればOK!
Step3:SNSで通知
CloudWatch Alarmでのエラーをメールにて通知するため、SNSを設定します。
今回は「Eメール」を設定します。
Step4:CloudWatch Alarm作成
アラームを図のように設定します。
今回はCPU使用率に焦点を当てているため、
CloudWatch AlarmをCPUUtilizationにします。
条件は80%よりも大きい場合、アラームが鳴ることにします。
既存のSNSトピックを選択するところはStep3で作成した物を選択してください
Step5:異常を起こす
CPUに負荷をかけるため、以下のコマンドを打ちます。
yes > /dev/null &
top
この2つのコマンドを入力すると以下の図になります。
% CPU が100になっていることを確認してください
Step6:動作確認
5分以降すると、上図のようなエラーがメールに届きます。
このようにメールが届けばOkです。
最後に
AWS試験でよくある「EC2のCPU使用率を監視して、SNSで通知する」を実施してみました。
実際構築してみて、
・SNSの設定方法
・CloudWatch Alarmの設定方法
を学ぶことが出来ました。
みなさんもぜひやってみてください!




