OJT 番外編 その2 Apacheを監視する

## はじめに
この記事は以下の続きになります。
https://qiita.com/hamada-kc/items/9ef3dd19ab9cbdc29bb3

### 最終目的
Apacheの監視し、復旧まで行ってみる

### 利用するツール
putty

## apacheの監視設定を行っていく

### EC2にIAMロールを設定する
#### 前提知識 
- Apacheを監視するためには、対象のEC2にIAMロールを設定する必要がある
- IAMロールには特定のポリシーをアタッチ(付与)することで、機能するようになる
<br>

- IAMを開き、ロールをクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882356/4e1f6d7d-eadb-4a50-8976-cf795e22fb5d.png)
- 以下表に従い入力し、次へをクリックする

|項目|設定値|
|--|--|
|信頼されたエンティティタイプ|AWSのサービス|
|サービスまたはユースケース|EC2|
|ユースケース|EC2|

- ポリシーは「CloudWatchAgentServerPolicy」をアタッチする
- ロール名は以下にて設定し、ロールを作成をクリックする
```
OJT-[自分の苗字]-cloudwatch
```

#### EC2にロールをアタッチする
- EC2の画面に移動し、自分のインタンスを選択する
- インタンスの状態、セキュリティ、IAMロールを変更の順番でクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882356/bb0cdf6c-e914-4bee-8dc1-8ebb8e4ae847.png)
- IAMロールの選択欄にて、先ほど作成したロールを選択しIAMロールの更新をクリックする
- アタッチに成功すると以下のように先ほど作成したロールが表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882356/4219fbb9-7d4d-457b-a302-df3ed4df50cd.png)

### 作成したEC2にCloudWatch Agentをインストールする
- 作成したEC2にputtyを使いSSH接続する
- 以下コマンドを入力し、インストールし起動する
```
sudo dnf install amazon-cloudwatch-agent
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a start
```
- 起動しているか確認する
```
systemctl status amazon-cloudwatch-agent
```
- 以下画像ようになっていたら起動している
　※active(running)となっているか確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882356/61a3b2b6-fa3a-4126-9306-ef126c7fabe4.png)


### CloudWatch Agentの設定ファイルを作成する
- 以下コマンドを順番に入力し、設定ファイルを作成する
```
sudo su
cd /opt/aws/amazon-cloudwatch-agent/etc/
vi amazon-cloudwatch-agent.json
```
- viから始まるコマンドを入力すると専用の入力画面になるので、以下をコピペする
::: note info
viコマンドの操作方法は自分で調べてください。
:::
```
{
    "metrics": {
        "metrics_collected": {
            "procstat": [
                {
                    "exe": "httpd",
                    "measurement": [
                        "pid_count"
                    ],
                    "metrics_collection_interval": 60
                }
            ]
        }
    }
}
```
- 以下コマンドで、設定ファイルを適用させる
```
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json -s
```
- 5分ほど待つと、CloudWatchにhttpdのメトリクスが追加されている
### メトリクスが取得できているか確認する
- CloudWatchの画面を開き、以下画像を参考に進める
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882356/9681cb2e-8690-4770-9f24-489876476ffc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882356/cd6f75ac-746a-49e3-9101-e2800f2f785f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882356/17d3b0a0-6977-404e-bfe3-0e616cd7ba90.png)
- 自分のインタンスIDを入力すると「httpd」という名前のものが表示される
::: note info
適用したばかりだと、メトリクスになにも表示されませんが10分ほど待つと青い線が表示されます。
:::

#### アラートを設定する
- 前回行った手順を参考に進めていく
- 設定値は以下にする

|項目|設定値|
|--|--|
|統計|1分|
|しきい値の種類|静的|
|procstat_lookup_pid_count が次の時...|より低い|
|... よりも|1|
|通知|アラーム状態|
|次の SNS トピックに通知を送信|既存のSNSトピックに通知を送信<br>作成したSNSを選択|
|アラーム名|[自分の苗字]-[対象のインタンスID]-apache

:::note info
OJTの講師の方へ
どんな手段でもいいので、apacheを止めてください
:::

## アラームの確認と対応
- Apahceの停止を行いしばらくすると、個人のメールアドレスにAWSからアラートメールが届きます
- 自分で考えて復旧させてください
- 今の設定状態だと、アラートメールは届きますが復旧通知がきません
 アラートの設定変更を行い復旧通知がくるようにしてください

 ## 最後に
 これで一通りの構築から監視設定、復旧作業までできたと思います。
 
 全員が業務で常に使う知識ではないと思いますが、勉強になったら幸いです。

2025/4/28追記
viコマンドを利用し、作成するファイル名が間違っていたので修正しました。