cloudwatchでEC2のアラームをメールで通知してみた

## 構成

構成はEC2インスタンスを立てて、cloudwatchでCPU使用率を監視します。
わざとCPU使用率を上げて、アラームをメールで飛ばしてみます。

![1# cloudwatchでEC2のアラートをメールで通知してみた - diagrams.net -.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/314e6695-5a56-508d-ea0a-09ee640d7a06.png)


## EC2インスタンスを構築

適当なEC2インスタンスを立てました。
作成方法は [こちら](https://qiita.com/miyuki_samitani/items/61e1548cb61f4053e78d)をごらんください

このインスタンスのインスタンスIDを後で使うので控えておいてください。
`i-xxxxxx` ってやつです。

![2021-04-07 100インスタンス _ EC2 Management Console - Google Chrome 20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/6b808726-747e-876f-6b30-03e6cbf51a16.png)


## cloudwatchでアラームを作成

- 移動

ホーム > cloudwatch > アラーム > アラーム で、
アラームを作成します。

![1CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/927201f2-e236-59eb-adb1-fbec1def4e1a.png)


- メトリクスと条件の指定

ここではメトリクスの選択をします。
`何を監視するか` を決めます。

![2CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/36b2ba44-c2aa-b2a9-0a38-d63980b51d03.png)


今回はEC2インスタンスの使用率(CPUUtilization)を見るので、
EC2 > インスタンス別メトリクス とたどっていきます。

![3CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/883176f2-fddd-5237-b3bb-3a4b8b45568a.png)


![4CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/3de1e7a6-e875-3239-a649-10964e6fc05d.png)


ここで、 先程控えておいたインスタンスID(i-xxxxx) と CPUUtilization(CPU使用率)  を検索窓で検索します

![5CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/ca028ed6-2de5-d8b4-13a7-c05709aea691.png)


検索結果が出てきます。
こちらが先ほど作成したEC2インスタンスのCPU使用率を確認するメトリクスになります。

![6CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/4435f442-ccdf-07fb-7a8d-68d12a8605af.png)


これにチェックを入れてメトリクスを選択します。

![7CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/8ed00750-e5b8-58c0-c0d2-8ed079018c50.png)


メトリクスの条件が出てきましたが、あまり待ってられないので期間を5分にします。

![8CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/3531001e-78c2-f63b-c016-00c6660edca6.png)


アラームの条件としては
これでCPU使用率(指定したメトリクス)が20%以上になればアラームが鳴る条件にしました。
普通に使う分であれば80%などでOKだと思います。

![9CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/4bf08e72-f56d-de99-295f-ab327d343153.png)


- アクションの設定

ここでは通知を行いたいので、アラーム状態のときのトリガーを定義します。
SNSトピックで通知を行うことができ、
トピック名と通知先のメールアドレスを記載し、トピックを作成します。

![10CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/0fae190f-4649-aa5c-c0ad-58ae75ddbad4.png)


トピックが設定されたらこのような状態になります。

![11CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/dc60f562-f2db-accc-2b29-2b1f18fbe166.png)


他のアクションは何もしなくてOKです。

- 名前と説明を追加

アラーム名とそれに対する説明を記載します。

![12CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/575ec891-b9c0-d72c-ebce-9d5e67932ffd.png)


- プレビューと作成

設定に問題ないことを確認して、作成を行います。

![13CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/9b12c3f1-6e39-cefd-efd1-d2684fe1edc3.png)


- 作成完了

アラームが作成されました。

![14CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/2b4edcdf-55d6-5f0a-10a8-54dc2a18815e.png)

※宛先のメールにSNSの承認メールが来ているので承認が必要です。


## アラームが鳴ることを確認

- 対象のEC2インスタンスで負荷を上げる

yesコマンドで負荷をかけます。
`yes dev/null &`

- 負荷の確認

実行前のtopコマンド
特に負荷が上がってる感じはありません。

```
top - 13:20:54 up 41 min,  2 users,  load average: 0.00, 0.00, 0.00
Tasks:  94 total,   1 running,  57 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1006896 total,   490820 free,    91708 used,   424368 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   774884 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND        
    1 root      20   0  125504   5376   3976 S  0.0  0.5   0:01.80 systemd        
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd       
    4 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 kworker/0:0H 
```

実行後のtopコマンド
yesコマンドが上位にきており、CPU使用率は20%を超えています。

```
top - 13:23:18 up 43 min,  2 users,  load average: 0.50, 0.11, 0.04
Tasks:  95 total,   3 running,  56 sleeping,   0 stopped,   0 zombie
%Cpu(s): 28.9 us, 63.5 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  7.6 si,  0.0 st
KiB Mem :  1006896 total,   490152 free,    92376 used,   424368 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   775844 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND        
 3306 ec2-user  20   0  150524   4472   3144 R 36.7  0.4   1:01.77 sshd           
 3552 root      20   0  114636    676    616 R 36.7  0.1   0:06.03 yes            
 1565 root      20   0       0      0      0 I 26.3  0.0   0:20.25 kworker/u30:3
```

- メールの確認

アラームのメールが来ておりました。
画像忘れちゃいました、すみません


## 勉強後イメージ

案外簡単だったなー
cloudwatchのメトリクス自体は触ったことあったからそんなに難しくなかったかも
次はlambdaと連携とかしてみたい