【ふりかえり】AWSにおける監視の基本

# はじめに
* AWS Hands-on for Begginersのひとつ、[監視編 サーバーのモニタリングの基本を学ぼう](https://aws.amazon.com/jp/events/aws-event-resource/hands-on/)を先日実施したので、振り返りも含めたアウトプット資料として記事に残したいと思います。
* 



# CloudWatch Metrics
* CloudWatchで発行されたメトリクスを収集＋統計を取得

## メトリクス監視で測定すべき項目
* リソース監視（CPUやメモリの使用率）
* アプリケーションの性能管理（アプリケーションの処理時間）

## 用語
* メトリクス
* 名前空間
* ディメンション
メトリクスを一意に識別する名前や値のペアのこと

## メトリクスの種類
* 標準メトリクス
* カスタムメトリクス

## 画面例
CloudWatchより、`メトリクス` > `すべてのメトリクス`と選択する
![cw_1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3501605/892e2c95-ff9b-df1c-938b-48dc26d30a89.png)


名前空間：`EC2` > `インスタンス別メトリクス` と選択する
![cw_2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3501605/abd97b99-d23a-37bc-9d20-2ccc2df5be67.png)

* 検索ボックスより`CPU Utilization`のメトリクスに絞る
* 画面上部の時間軸から、グラフの幅を調整する
* `Custom`から、タイムゾーンの表示設定を変更できる
![cw_3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3501605/6db10180-5575-6ffa-6d31-dcfc8a5f3661.png)

* ALBのタイプ別、TG別メトリクスの表示例
![cw_4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3501605/4cac9424-f74a-ebcf-ae93-a7d4ee6fd750.png)

* RDSのメトリクス表示例

RDSはデフォルトで取得している値は1分間隔
必要に応じて、`期間`を変更することでグラフの表示間隔を更新する
細かい粒度で確認できる

![cw_5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3501605/b776a275-7955-1d03-9474-aa94794ae499.png)

数値で表示した例
![cw_6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3501605/7036bad8-f95e-f5c8-8689-4a7d47a06caa.png)

* CloudWatch Agentの表示例
![cw_7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3501605/d345d171-12fc-4d3c-82b3-a1e290f34e2a.png)

WEBサーバ#1のメトリクス`disk_used_percent`を確認したいときの例

# CloudWatch Alarms
条件を指定することで、自動アクションを実行◎
アラートメールの通知など

状態は以下の3種類
* OK
正常値
* ALARM
異常値（しきい値を上回る）
* INSUFFICIENT_DATA
判定不能（データ不足）

# CloudWatch Logs
AWSサービスや顧客システムのログを監視・保存・アクセスを提供する

* ディレクトリ階層がある
ロググループ・ログストリーム・ログイベント

ログを集約することで受けるメリット
* サーバ数が増加した際に確認が大変
* 障害・容量不足によるログイン×


![cw_8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3501605/9105a262-cd40-1602-0d01-cac0322ec1d6.png)
オンプレミス環境で行うようなログ検索も◎

# CloudWatch Logs Insights


ログ分析することで受けるメリット
* 集約データの中から必要となる情報を抽出し、改善へとつなげる

送信されるログ毎に3つのフィールド
| フィールド　       |説明| 
|:-----------------|:------------------|
| @message      |未解析のログイベント | 
| @timestamp      |ログイベントが追加された時間 |
| @logStream      |追加先のログストリーム名|

VPC、Route53、Lambdaは自動フィールド検出されるので簡易的に分析◎

## クエリ構文
| コマンド　       |説明|
|:-----------------|:-----------------|
| fields　       |指定フィールドをログイベントから抽出する|
| filter　       |クエリ結果を条件によってフィルタリング|
| stats　       |ログフィールド値により集約統計を計算する|
| sort　       |取得したログイベントをソートする|
| limit　       |クエリから帰ってくるログイベント数を制限する|
| parse　       |ログフィールドからデータ抽出＋エフェメラルフィールドを作る|

アクセスログの分析
![cw_9.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3501605/09cc5a9b-52da-3071-41b1-4e02ac7dd27e.png)

ログの中身
![cw_10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3501605/1027b684-a9fe-79db-7507-6f9dac72cf22.png)

クエリを編集してログ分析する
![cw_12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3501605/6715932d-62ea-c4cd-0e58-3882070e9e39.png)

`クエリのヘルプ`から対象のクエリ構文を選択し、「適用」を選択することでクエリ構文に追加できる
![cw_11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3501605/ef54e79f-c711-804f-f090-384ffc44376b.png)

# CloudWatch Dashboards
* コンソール画面でカスタマイズできる
* 異なるリージョンでも1つのダッシュボードに集約◎

## Automatic Dashboard
* 推奨するベストプラクティスに基づいたダッシュボード
* 自動的に作成してくれる

# CloudWatch Events
* リソース変更のイベントに対するアクションを実行
* EC2が【停止】→自動的に【イベント】を生成→【ルール】の条件に一致
→【アクション】実行（SNS.Lambdaなど）

## ユースケース
* EC2のrunningイベントをトリガーにし、指定されたタグがない場合にterminate
* スケジュール式をトリガーにした、EBSスナップショット取得

# まとめ
* 実際に手を動かすことで、資格勉強や知識だけではイメージしづらいCloudWatchの機能を理解することができた
* 以前運用保守の部署で監視の業務に携わった経験があるので、当時を思い出しながらAWS環境における監視の業務をイメージすることができた