CloudWatchのアラームでメール通知機能を使う(途中まで

#CloudWatchのアラームでメール通知機能を使う
今回は、CloudWatchを使ってCPUが指定の使用率以上になったら、
メール通知し、EC2インスタンスを落としてみる
※未完で途中までです。　


そもそもCloudWatchのアラーム機能とは？
EC2やEBSなど、CloudWatchでAWSリソース(以外も可？)を監視し、メトリクス(設定値)が規定の上限を上回った場合にメール通知などを行うことができる

##アラームの作成
AWSのメニューからCloudWatchを選択し、アラーム項目を開く
![スクリーンショット 2019-11-10 22.49.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/ada5d5be-0d1c-23d3-efd9-9d30468b7705.png)

メトリクスを選択する
![スクリーンショット 2019-11-10 22.49.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/d6b270dd-a326-11a0-8b27-a336d9a405d8.png)


今回は、以前に作成したEC2のCPU使用率を監視する
すべてのメトリクスからCPUUtilizationを選択する
![スクリーンショット 2019-11-10 22.50.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/9c80295e-f8d0-f245-8c55-6c6896cecf6a.png)

グラフ化したメトリクスの項目で1分ごとにCPU使用率の"最大値"を測定するように設定する
![スクリーンショット 2019-11-10 22.50.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/13bb69ab-1974-c321-7bbf-c64e1b344259.png)


線グラフ化するので、横軸の時間は日本のタイムゾーンに設定する
![スクリーンショット 2019-11-10 23.38.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/64fe0446-ebab-9b22-0c53-f650f77173ea.png)

設定完了させると、設定値が表示される
![スクリーンショット 2019-11-10 22.50.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/5586448f-0197-adae-e9c7-84dda7009670.png)

閾値の設定をする
CPUの使用率が > 10% を超えた場合に設定
![スクリーンショット 2019-11-10 22.51.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/3e06fcea-5c4e-ed4d-c5fe-9705db047758.png)

※アラーム作成後に動作が安定しないため、下記の項目を追加した。
![スクリーンショット 2019-11-10 23.34.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/a5e44292-4bd9-dcd9-4945-705158ece94a.png)

これは、EC2のCPU使用率をCloudWatchが監視する場合、監視値が取得できないときは欠落データとして無視するように設定する

通知に関する設定をする
今回はメールを送るためのトピックという機能を追加する
下記の項目を入力してトピックの作成を押下

![スクリーンショット 2019-11-10 22.51.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/5662ed3f-42b6-0fea-4a1b-c8f2d376b9d4.png)

入力したメールアドレスにメールが届くので、承認する
※メール内容
![スクリーンショット 2019-11-10 22.53.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/88235cd4-edfc-bace-74e3-9c79fc8db09a.png)

これで通知するメールが設定できる
![スクリーンショット 2019-11-10 22.53.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/e7a0bd0d-1339-c751-5ba6-72f40f8c75f5.png)

アラーム時はEC2を停止するように設定
![スクリーンショット 2019-11-10 23.05.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/193f1a20-a15a-e936-52f7-ec16000e5517.png)


アラーム名を設定する
![スクリーンショット 2019-11-10 22.54.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/5a967ff9-2c24-e0ff-ca52-23afb45b2b4f.png)

作成後のアラームを確認
EC2を起動させていない、また、アラームの作成直後でCPUのデータを収集できていないためデータ不足が発生している
![スクリーンショット 2019-11-10 22.54.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/1d4cf502-9730-fd5d-7e6f-8a08bfdc1bf4.png)


EC2を起動させてしばらく時間が経つと、OKに変わりCPU使用率が表示される
![スクリーンショット 2019-11-10 23.23.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/d327b613-5722-60c2-09dc-efd39387d604.png)


##アラームとEC2の停止を確認する
HTTP GET DOS攻撃でEC2を落とす。
(CPU使用率の閾値が大きすぎるため10%から1%に変更する。)


画面の"編集"ボタンから編集画面を開く
![スクリーンショット 2019-11-11 0.12.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/0348a059-dca3-c814-12ba-9285afb78651.png)


![スクリーンショット 2019-11-11 0.13.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/2e36690d-9339-9843-0c81-47af1bf17389.png)

アラームの更新で設定完了


EC2にapacheを入れているので、エンドポイントに向けて短時間でcurlコマンドを送る(HTTP GET DOS攻撃)

使用したShellは下記
(※下記のIPはセキュリティ制限を行なっています。)
[dos.sh]

```
#!/bin/sh


for i in `seq 10000`
do
  curl http://ec2-54-65-248-190.ap-northeast-1.compute.amazonaws.com &
done

```

ローカルホストからEC2に向けて実行する
レスポンスは[apache test]で実行される


```
bash dos.sh 
apache test
apache test
apache test
apache test
apache test
apache test
```

EC2インスタンスで監視する
sar -Pコマンドを使用する

50秒あたりから、user/systemの値が表示されている。
ここでいうuser/systemの合計値が実際のCPU使用率になるので
下記より、最大値で4~5%使用していることがわかる
(※stealに関しては不明、今後調査予定)

CloudWatchの設定で、1分間ごとにCPU使用率の最大値を取得しているので、
ここで5%程度の値がプロットされているか確認する必要がある

```
sar -P ALL 1 10
15時20分48秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
15時20分49秒     all      0.00      0.00      0.00      0.00      0.00    100.00
15時20分49秒       0      0.00      0.00      0.00      0.00      0.00    100.00

15時20分49秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
15時20分50秒     all      0.00      0.00      0.00      0.00      0.00    100.00
15時20分50秒       0      0.00      0.00      0.00      0.00      0.00    100.00

15時20分50秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
15時20分51秒     all      0.99      0.00      0.99      0.00      0.00     98.02
15時20分51秒       0      0.99      0.00      0.99      0.00      0.00     98.02

15時20分51秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
15時20分52秒     all      0.00      0.00      0.00      0.00      1.01     98.99
15時20分52秒       0      0.00      0.00      0.00      0.00      1.01     98.99

15時20分52秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
15時20分53秒     all      0.00      0.00      0.00      0.00      0.00    100.00
15時20分53秒       0      0.00      0.00      0.00      0.00      0.00    100.00

15時20分53秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
15時20分54秒     all      1.01      0.00      1.01      0.00      0.00     97.98
15時20分54秒       0      1.01      0.00      1.01      0.00      0.00     97.98

15時20分54秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
15時20分55秒     all      1.02      0.00      1.02      0.00      0.00     97.96
15時20分55秒       0      1.02      0.00      1.02      0.00      0.00     97.96

15時20分55秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
15時20分56秒     all      1.04      0.00      3.12      0.00      1.04     94.79
15時20分56秒       0      1.04      0.00      3.12      0.00      1.04     94.79

15時20分56秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
15時20分57秒     all      0.00      0.00      1.00      0.00      0.00     99.00
15時20分57秒       0      0.00      0.00      1.00      0.00      0.00     99.00

15時20分57秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
15時20分58秒     all      0.00      0.00      0.00      0.00      0.00    100.00
15時20分58秒       0      0.00      0.00      0.00      0.00      0.00    100.00

平均値:      CPU     %user     %nice   %system   %iowait    %steal     %idle
平均値:      all      0.40      0.00      0.71      0.00      0.20     98.69
平均値:        0      0.40      0.00      0.71      0.00      0.20     98.69
```


EC2の時間設定を行なっていないので時間表示が間違っているが、
JSTで00:20:55あたりの時刻をCloudWatchで確認する

うーん、最大値測定で0.3%程度・・・
彼は何を見ていたのだろう（笑
![スクリーンショット 2019-11-11 0.33.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526203/f582290a-9102-6a75-a90a-479f562c5c25.png)

現在は、監視時間の粒度が1分おきになっているが、今後粒度を小さくして確認する

夜も遅いので、今後この記事に追記していきます。

以上