AWS初心者による、SAA取得に向けた学習の記録④

※記事について著作権等で問題がありましたら、お手数ですがコメントいただけると幸いです。<br>早急に修正か、必要に応じて記事を削除いたします。

[AWS初心者による、SAA取得に向けた学習の記録③](https://qiita.com/t17_hr/items/5b85d13db5fb4044c01d) の続きです。

関連記事はこちらからどうぞ。

* [AWS初心者による、SAA取得に向けた学習の記録①](https://qiita.com/t17_hr/items/106838afc10a54eea3f0)
* [AWS初心者による、SAA取得に向けた学習の記録②](https://qiita.com/t17_hr/items/e8d6d6e97b8b7487a5a4)
* [AWS初心者による、SAA取得に向けた学習の記録③](https://qiita.com/t17_hr/items/5b85d13db5fb4044c01d)
* AWS初心者による、SAA取得に向けた学習の記録④
* [AWS初心者による、SAA取得に向けた学習の記録⑤](https://qiita.com/t17_hr/items/ce20a44f1c586c145da3)
* [AWS初心者による、SAA取得に向けた学習の記録⑥](https://qiita.com/t17_hr/items/cbdc5c053a7bf63fa2a6)

※参考書籍
[AWS認定資格試験テキスト AWS認定ソリューションアーキテクト・アソシエイト 改訂版第2段](https://www.amazon.co.jp/dp/B08MVXRFFN?
tag=maftracking339397-22&linkCode=ure&creative=6339) 

今回は

* CloudWatch
* CloudTrail

についての内容となります。

# CloudWatch

**CloudWatch** は、運用監視を支援するマネージドサービスです。

主な機能

* CloudWatch
* CloudWatch Logs
* CloudWatch Events


## CloudWatch

メインの機能であるCloudWatchは、各AWSリソースの状態を定期的に取得し、この状態を **メトリクス** と呼びます。

ほんの一例ですが、

* EC2インスタンスのCPU使用率
* Lambda関数ごとのエラー回数

といった、あらかじめAWSが定義しているメトリクスを **標準メトリクス** と呼びます。

標準メトリクスの一覧についてはこちらの公式ページに載っています。
[CloudWatch 標準メトリクス一覧](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)

また、これとは別に
利用者が定義するメトリクスを **カスタムメトリクス** と呼びます。

CloudWatchではこれらのメトリクスを選択し、アラームを定義することができます。

例）

* Webサーバー用のEC2インスタンスのCPU使用率が80%を上回ったとき

## CloudWatch Logs

**CloudWatch Logs** では、アプリケーションログやApacheログなどのログをモニタリングします。

このサービスを利用するには、EC2インスタンス上に独自のエージェントをインストールする必要があり、
このエージェントを介してEC2インスタンスのログをCloudWatch Logsに収集します。

（このとき、送信元のEC2インスタンスにCloudWatchのIAM権限が必要になるため、IAMロールで設定します）

また、収集したログに対してアラームを設定することができます。

* ログに「ERROR」から始まる行があったとき

といった閾値を設定することでアラームが設定でき、このアラームをトリガーとして他の処理を呼び出すことが可能です。

![CloudWatch(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1021235/817cffa3-ef17-141b-abd2-a97a165da85e.png)

画像引用元：[AWS の可用性の向上例を見てみよう！ ～ 1. EC2 インスタンス単体で行う可用性の向上 ～](https://www.cybertrust.co.jp/blog/linux-oss/high-availability-solutions/ha-on-cloud-02.html)

## CloudWatch Events

**CloudWatch Events** は、独自のトリガーとそれにより呼び出される後続アクションとの組み合わせを定義するサービスです。

* 独自のトリガー：**イベントソース**
* 後続アクション：**ターゲット**

### イベントソース

大きく分けて2種類あります。

* **スケジュール**：「3時間おきに」「金曜日の朝7時に」といった、期間、時間ベースのトリガー定義
* 各AWSリソースの **イベント**：「Auto Scalingがインスタンスを増減させたら」「CodeBuildの状態が変更されたら」といった、AWSリソースの状態変化のトリガー定義

### ターゲット

「Lambda関数をキックする」「CodePipelineを実行する」といったアクションを設定できます。
また、1つのイベントソースに複数のターゲットを定義することも可能です。

後からターゲットの追加も可能なので、非常に疎結合なサービス間連携を実現できます。

![CloudWatchEvents.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1021235/46c09fe2-cc86-733d-18a6-0d8d485bbbb0.png)

画像引用元：[AWSアカウントでEC2が作成されたときにメール通知【CloudWatch Events + AWS Config】](https://blog.serverworks.co.jp/ec2launchnotification)

# CloudTrail

**CloudTrail** は、AWSに関する操作ログを自動的に取得するサービスです。

* マネジメントコンソールからの操作
* CLIやSDKを用いたAPIによるAWSリソースの操作

こういったAWS全般の操作に対して、監査ログを残すことができます。

## CloudTrailで取得できるログの種類

CloudTrailで取得できる操作（イベント）には、以下の2種類があります。

* **管理イベント**
* **データイベント**

### 管理イベント

* マネジメントコンソールへのログイン
* EC2インスタンスの作成
* S3バケットの作成

など

### データイベント

* S3バケット上のデータ操作
* Lambda関数の実行

など

CloudTrailでは、管理イベントの取得のみがデフォルトで有効になっており、過去90日分のログをマネジメントコンソール上で確認できます。
それより前の情報も保持したい場合は、S3に残すように設定することもできます。

データイベントのログも設定を変更することでS3に証跡を残すことが可能です。

![CloudTrail.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1021235/0c23adea-fcad-a832-48d8-cf9740a7e3f8.png)

画像引用元：[【基礎から学ぶ】AWS CloudTrailの課金体系をまとめてみた](https://blog.serverworks.co.jp/tech/2017/10/20/cloudtrai-cost/)


## CloudWatch Logsとの連携

発生した問題を自動的に検知したいときに利用できるのが、CloudWatch Logsとの連携機能です。
事前に不正な操作（のログメッセージ/文字列）を登録しておくことで、実際の発生時に検知することができます。

![CloudWatch.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1021235/17263e0e-706f-4bc5-b24d-4d250ddfc616.png)

画像引用元：[20190326 AWS Black Belt Online Seminar Amazon CloudWatch](https://www.slideshare.net/AmazonWebServicesJapan/20190326-aws-black-belt-online-seminar-amazon-cloudwatch)

# 終わりに

最後まで読んでいただきありがとうございました。

関連記事はこちらからどうぞ。

* [AWS初心者による、SAA取得に向けた学習の記録①](https://qiita.com/t17_hr/items/106838afc10a54eea3f0)
* [AWS初心者による、SAA取得に向けた学習の記録②](https://qiita.com/t17_hr/items/e8d6d6e97b8b7487a5a4)
* [AWS初心者による、SAA取得に向けた学習の記録③](https://qiita.com/t17_hr/items/5b85d13db5fb4044c01d)
* AWS初心者による、SAA取得に向けた学習の記録④
* [AWS初心者による、SAA取得に向けた学習の記録⑤](https://qiita.com/t17_hr/items/ce20a44f1c586c145da3)
* [AWS初心者による、SAA取得に向けた学習の記録⑥](https://qiita.com/t17_hr/items/cbdc5c053a7bf63fa2a6)

※参考書籍
[AWS認定資格試験テキスト AWS認定ソリューションアーキテクト・アソシエイト 改訂版第2段](https://www.amazon.co.jp/dp/B08MVXRFFN?
tag=maftracking339397-22&linkCode=ure&creative=6339)