[AWS]システムを監視する方法

**2020年2月11日現在の内容です。**

構成イメージ
<img width="865" alt="スクリーンショット 2020-02-11 17.45.52.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/23997f54-9247-a9de-4528-c8ae98ac3336.png">


## 用語説明
### システム監視
システムを正常な状態に保てるよう、稼働状況やリソースを監視すること

目的

- すぐに障害発生を確認できるようにする
- 復旧にすぐに取りかかれるようにする

内容

1. 正常な状態を監視項目 + 正常な結果の形で定義する
2. 正常な状態でなくなった際の対応方法を監視項目ごとに定義する
3. 正常な状態であることを継続的に確認する
4. 正常な状態でなくなった場合に通知を行い、すぐ正常な状態に復旧させる

#### 監視の種類
死活監視

- 正常にシステムが動作していることを確認

メトリクス監視

- パフォーマンスを定量的に確認
- 指標を決め、指標が閾値以上・以下となっていることを確認

#### 監視をする際のポイント
1. システムや利用状況は変動するので、足りない監視を都度追加していく
    - 項目が多すぎると、監視疲れする
2. 最初は基本的な項目で問題ない
    - CPU,メモリ,ディスク,ネットワークの使用率・枯渇
        - これらの情報を確認できれば、障害がいつ・どこで発生したものか特定できる

### CloudWatch
AWSサービスの監視やモニタリングができる監視サービス

概要

- AWSサービスのメトリクス(リソースの状況)を監視する
- メトリクスに対して閾値を登録し、その条件を満たしたら通知する(アラーム発生)

### Amazon SNS(Simple Notification Service)
AWSサービスが提供している通知サービス
Topicを作成することで、Publisher(EC2,CloudWatchなど)がメッセージを送信し、Subscriber(Email,SMSなど)が通知を受信するための通信チャネルとして機能する

## CloudWatchのアラームを作成
AWSコンソールからCloudWatchを検索し、クリック
<img width="1680" alt="スクリーンショット 2020-02-11 20.37.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/57622d5b-df9f-229c-1f64-f3cec907873d.png">

サイドバーから「アラーム」をクリック
<img width="1680" alt="スクリーンショット 2020-02-11 20.39.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/951fba5d-89d9-5eb3-65c4-6e602831821c.png">

「アラームの作成」をクリック
<img width="1680" alt="スクリーンショット 2020-02-11 20.41.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/18a8ed0c-fc79-fd0d-36ce-24bc1a1579cc.png">

「メトリクスの作成」をクリック
<img width="1680" alt="スクリーンショット 2020-02-11 20.42.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/f8c276b5-3e22-8ba9-e649-31972743b752.png">

「EC2」をクリック
<img width="1680" alt="スクリーンショット 2020-02-11 20.44.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/4d4bf84f-e415-01a8-bff5-ae11d196c0df.png">

「インスタンス別メトリクス」をクリック
<img width="1680" alt="スクリーンショット 2020-02-11 20.45.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/452cda52-7efe-e348-c64e-4d23985f6b33.png">

「CPUUtilization」にチェックを入れ、「メトリクスの選択」をクリック
<img width="1680" alt="スクリーンショット 2020-02-11 20.47.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/5697b2fe-abc9-04fc-5782-ab3c11570a37.png">

以下の通り設定し、「次へ」をクリック
<img width="1680" alt="スクリーンショット 2020-02-11 20.50.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/b9359bca-4f30-f24a-501e-c340f237ccae.png">
<img width="1680" alt="スクリーンショット 2020-02-11 20.52.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/4f771009-3581-5732-0e51-c11d024c8b8d.png">

「新しいトピックの作成」にチェックを入れ、以下の通り設定し、「トピックの作成」をクリック
トピック名：任意名
Eメールエンドポイント：通知先のメールアドレス
<img width="1680" alt="スクリーンショット 2020-02-11 20.55.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/d7de6853-fc15-3054-df3f-5e92b3c11358.png">

通知の送信先が作成したトピックになっていることを確認し、「次へ」をクリック
<img width="1680" alt="スクリーンショット 2020-02-11 21.01.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/f71a52df-a75c-d0ef-c631-a43c3ba1a062.png">

以下の通り設定し、「次へ」をクリック
アラーム名,アラームの説明：任意名
<img width="1680" alt="スクリーンショット 2020-02-11 21.13.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/836ddc55-2298-e38b-ddf3-63c6ba1506ee.png">

設定内容に問題がないことを確認し、「アラームの作成」をクリック
<img width="1680" alt="スクリーンショット 2020-02-11 21.18.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/2eaf51c0-07f1-574d-745a-35530fb69d45.png">
<img width="1680" alt="スクリーンショット 2020-02-11 21.18.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/7266af4e-8631-4780-a5a0-dbf4c8f0dc82.png">

アラームが作成されていることを確認
**注：トピックで設定したメールアドレスに認証メールが届いているので、認証を済ませておく**
<img width="1680" alt="スクリーンショット 2020-02-11 21.36.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/de2071af-276a-bfbd-fcb5-ffecc0d7b30a.png">

作成したトピックはSNSで確認できる
<img width="1680" alt="スクリーンショット 2020-02-11 21.44.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/90425e90-b1bb-fde7-36a3-f8f0dd94c8c9.png">
<img width="1680" alt="スクリーンショット 2020-02-11 21.50.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/5e91c267-2acc-4a08-0c03-71c5887b0233.png">
<img width="1680" alt="スクリーンショット 2020-02-11 21.58.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/7239526d-e9f0-59dc-d36f-e72864827e57.png">
<img width="1680" alt="スクリーンショット 2020-02-11 21.59.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/5b386a03-ee5a-ad31-3be3-5ba28f23a97b.png">

## アラームの確認
EC2インスタンスにログイン
`ssh -i test-ssh-key.pem ec2-user@18.179.167.73`

CPUに負荷をかける

```
[ec2-user@ip-10-0-10-10 ~]$ yes > /dev/null &
[1] 20407
[ec2-user@ip-10-0-10-10 ~]$ yes > /dev/null &
[2] 20408
[ec2-user@ip-10-0-10-10 ~]$ yes > /dev/null &
[3] 20409
[ec2-user@ip-10-0-10-10 ~]$ yes > /dev/null &
[4] 20410
[ec2-user@ip-10-0-10-10 ~]$ yes > /dev/null &
[5] 20411
```

一定時間経過後、CloudWatchがアラーム状態になり、メールで通知されることを確認
<img width="1680" alt="スクリーンショット 2020-02-11 22.15.40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397642/f474729e-cc91-53e8-a201-cc5f4f7d8796.png">

## おまけ（CPUの解放）

プロセスの確認

```
[ec2-user@ip-10-0-10-10 ~]$ ps aux | grep yes
ec2-user 20407 19.3  0.0 114636   760 pts/0    R    13:10   2:09 yes
ec2-user 20408 19.2  0.0 114636   724 pts/0    R    13:10   2:07 yes
ec2-user 20409 19.2  0.0 114636   724 pts/0    R    13:10   2:07 yes
ec2-user 20410 19.1  0.0 114636   748 pts/0    R    13:10   2:06 yes
ec2-user 20411 19.1  0.0 114636   748 pts/0    R    13:10   2:06 yes
ec2-user 20467  0.0  0.0 119436   944 pts/0    S+   13:21   0:00 grep --color=auto yes
```

プロセスの削除
`kill -9 20407`
`kill -9 20408`
`kill -9 20409`
`kill -9 20410`
`kill -9 20411`

## 参考
[AWS：ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得](https://www.udemy.com/course/aws-and-infra/)