ハンズオン3-a CloudWatchでログ監視をする

(2021.10.03修正)　修正内容：構成図1cのサブネットアドレスを修正

この記事を書いている私について

インフラ系PMO歴半年でAWSクラウドプラクティショナーを取ったばかりの私が
AWS CloudTechという動画学習サービスに参加し、AWSエンジニアを目指すための備忘録です:fire:
AWSを使った運用から開発まで極めるため日々精進:fire:


この記事を書こうと思った経緯
-

 前回の記事[ハンズオン3_スケーラビリティのあるブログサービスを構築する](https://qiita.com/zetzetn/items/879768e1c1ae22e10538 "ハンズオン3_スケーラビリティのあるブログサービスを構築する")で使用したEC2を再利用して、CloudWatchにてログ監視を行いたいと思います。


本記事の目標
-
CloudWatchにてログ監視を行い、実際にログを確認するところまでが今回のゴールとなります。

EC2のログをCloudWatchに定期的に送るように設定します。
ちなみに、ログ監視はクライアント側で行います。



今回の構成図
-
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465906/c7cdb487-ed96-a309-75aa-63d30b223425.png)


※構成図の作成に[cloudcraft](https://app.cloudcraft.co/ "cloudcraft")を利用しています。
　

事前に準備すること
-
【EC2】
・監視の設定を確認するためテスト用のEC2を用意します。
　[前回](https://qiita.com/zetzetn/items/879768e1c1ae22e10538 "前回")作成したEC2を再利用しちゃいましょう。
【Apacheのインストール】
　参考サイト：https://weblabo.oscasierra.net/apache-installing-apache24-yum-centos7-1/
　　コマンド：yum -y install httpd

※注意点
・インターネットゲートウェイが設定されているパブリックサブネットにて通信する必要があります。
　（もしない場合はVPCエンドポイントを使用することになりますが、次回以降に勉強する予定です）


【参考】Appachのログとは？？
-
こちらのサイト(さくらのナレッジ)がとても参考になりました。
[「ログの見かた」～初心者でもよくわかる！VPSによるWebサーバー運用講座(1)](https://knowledge.sakura.ad.jp/3424/ "「ログの見かた」～初心者でもよくわかる！VPSによるWebサーバー運用講座(1)")
　
今回の構築ではAppachのログをCloudWatchに定期的に送ります。

Appachは主に下記の履歴をログとして残してくれます。

①誰がアクセスしているか
②エラーなく動作しているか

今回は以下の2つを監視する設定を行います。

・アクセスログ
いつ誰がどのページにアクセスしたのかを記録する。

・エラーログ
リクエストの結果がエラーになったものだけを気得する。


構築の流れ
-

以下の流れで構築を進めます。

・前回の環境を再構築
・awslogsの設定
・IAMロールの作成と紐づけ
・EC2にログを送信する権限を付与
・ログ確認



・前回作成したEC2インスタンスを開始にする
-
　前回作成したEC2インスタンスが停止済みとなっていると思いますので、開始にします。
　

・awslogsの設定
-
CloudWatchにてログ監視を行う場合はawslogsをインストールして自身で設定を追加します。

EC2にSSH接続している状態で、以下のコマンドでインストールします。

```
sudo yum install awslogs
```

次にawslogsディレクトリまで移動します。

```
cd /etc/awslogs
```

awslogsディレクトリには`awscli.conf`と`awslogs.conf`が含まれており、
これらを編集します。

###awscli.confの編集
[編集内容]
・ログ転送先のリージョンがus-east-1になっているため、現在のリージョン（ここではap-northeast-1に）に変更します。

###awslogs.confの編集
[編集内容]
・アクセスログとエラーログを取得するための設定を追加します。
　　※追加した内容はクラテクで見ることが出来ます。


・EC2にログを送信する権限を付与
-
今の状態ではEC2からCloudWatchにログを送信する権限がありません。
その為権限を付与するためIAMロールを作成します。

ポリシーは1から作る必要はなく、AWSが用意しているCloudWatchAgentServerPolicyを利用しました。
IAMロールを作成後、EC2にアタッチします。

・ログ確認
-

###awslogsを起動
下記のawslogsのデーモンを起動します。

```
sudo systemctl start awslogsd
```
次に、EC2を再起動しても再度自動で起動できるように以下のコマンドを実行します。

```
sudo systemctl enable awslogsd
```

###ログを確認する
CloudWatchコンソールのロググループをクリックし、awslogs.confに追加したロググループが表示されていることが確認できます。
※ここでは`HttpAccessLog`と`HttpErrorLog`になります。

ログの中身はログストリームから確認することが出来ます。

以上で課題は完了です。


サービス停止
-
お約束ですが、下記サービスを使わないときは切っておきましょう。

■EC2(オンデマンド)→時間単位または秒単位で計算されるため停止中にすること。


ハンズオン3-aに発生する費用一覧
-
・EC2 x 1


1時間に2円ほどです。
シンプルなのでめちゃくちゃ安いですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465906/01cb0437-4c7b-5c6f-8d50-917dfd23a845.png)




最後に
-

CloudWatchでAppachのログを監視する方法を学びました。
実務ではこのログを見てどういった対応をする必要があるのか気になります。

必要になったタイミングで学んでいきたいと思います。



AWS CloudTechの課題としてこれらが残っていますので、
やったことを今後のQiita記事にして発信していきたいと思います。

これから始められる方の参考になれば嬉しいです。

今後の学習予定↓↓↓
・独自ドメインの設定と障害時の設定
・HTTPS通信でのアクセス
・キャッシュサーバーの配置
・CloudFormationの作成、更新
・Lamda関数
・Docker

内容に不備がございましたら、ご指摘いただけますと幸いです。

この記事はAWS初学者を導く体系的な動画学習サービス「AWS CloudTech」のハンズオンを基に作成しました。
https://aws-cloud-tech.com/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465906/00637e63-5339-1b83-c3c1-720e95174ec0.png)