【GCP】GCEにCPU負荷テストを実施&アラートを設定する

# 概要
本書はGCPで作成したGCEにCPUを大量に使用させる負荷テストを実施します。またCPU使用率が100%になったらアラートを出すようにGCPのモニタリング機能で設定します。

## 0.前提条件
* GCPのアカウントを作成していること。
* 本書ではGCP無料枠であるf1-microを使用します。
* 本書で使用するCentOS8のバージョンは下記の通りです。

```
$ cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
```

## 1. アラートの作成

1. 「モニタリング」→「アラート」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/ad48c931-937a-2c7c-3f37-d17516646ff4.png)

2. 「CREATE POLICY」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/72bd4d99-60f6-f126-c927-4c45d9d5cb58.png)

3. 「ADD CONDITION」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/11f6dfed-ffb9-bf94-1872-6149d03b15d3.png)

4. 下記のように監視する内容を設定する。(下記はVMインスタンス(GCE)のCPU使用率を計測します)
    * Resource type : VM Instance
    * Metric : CPU utilization
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/7456327e-4ef6-a7d2-576f-2ce8e8ec9db7.png)

5. 「Configuration」にてアラートを発報するタイミングを設定し、「SAVE」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/82cf8de1-7259-0a6b-33af-0cdacde5e399.png)

6. 「次へ」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/fe8a6f7a-4602-3cd9-2463-c4ced09a056a.png)

7. 「Notification Channels」にアラート発報するオプション(メールアドレス宛に発報など)を設定し、「NEXT」をクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/35ca5146-9e76-4647-2880-fb29efbe1acf.png)

8. 下記の項目を入力し、「SAVE」をクリックする。
    * アラート名
    * ドキュメント : アラート発報時に作成されるインシデント詳細に表示する文章(アラート発報時の対処方法など)をMarkdown形式で記載する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/4bd5b256-0e04-9096-a9c8-e648eac2cdd1.png)

9. アラートが作成されたこと、またアラートが有効になっていることを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/d720bfeb-f85f-f1fe-74eb-c17b268001c3.png)

## 2. CPU負荷テスト

1. GCEにログインする。

2. 下記のCPUを故意に消費させるコマンドを複数回実行する。(バックグラウンドで`/dev/null/`に`y`を無限に出力させます)

    ```
    $ yes > /dev/null &
    ```

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/819f8f53-3322-089a-01bf-7a49bd1c7946.png)

3. `top`コマンドを実行し、CPU使用率が100%になったことを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/c7ecd88a-c4bf-a2ae-42db-5747c1894a5e.png)

## 3. テスト結果

### GCPダッシュボード

1. CPU使用率100%のアラートが発報されたことを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/ef41b890-e5f6-95a6-4c0f-6ca9e2c8dcb4.png)

2. 発報されたアラートをクリックし、インシデント詳細を確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/76228472-bc3b-7701-3b84-3a55036258f7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/f18fbb8b-97a3-8bbe-ee10-9c586b3a8b6b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/cc693cbc-ba0b-2cba-6359-1e5ab0a2e0fe.png)

### メールアドレス宛にアラートを発報する設定した場合

下記のようなアラートメールを受信したことを確認する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/034c0f42-3f4d-0282-075b-d4be487dd654.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/fcb09bf8-904a-c6c0-0605-09089aa2c39b.png)

## 4. テスト終了

### GCEでやること

`top`コマンドを実行し、`yes`プロセス(故意にCPUを消費させているプロセス)のPIDを控える。その後、下記のコマンドを実行し、全ての`yes`プロセスを終了させる。

```
$ kill PID 
```

その後、`top`コマンドを実行し、CPU使用率が減少したことを確認する。

### ダッシュボード、アラートメール

インシデント詳細にて障害から回復したと更新されたことを確認する。またメールアドレス宛にアラートメールを発報するように設定している場合、障害回復後に「Alert recovered」のメールを受信したことを確認する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/6a4ee71d-11d1-862a-8270-590d2d0f88d4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/a954cefe-5469-184e-3925-85042c1d56bf.png)

## 最後に

GCPのモニタリング機能やアラートを設定することで、CPUが大量に使用されているなどの障害に気付くことができます。