AWSソリューションのAmazon CloudWatchのモニタリングフレームワークを試してみる

#はじめに
![00_aws_solution.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/0387fe3d-16d3-22eb-13ef-9906fefd9cb6.png)

本記事では、[AWS ソリューション実装](https://aws.amazon.com/jp/solutions/?solutions-all.sort-by=item.additionalFields.sortDate&solutions-all.sort-order=desc&awsf.AWS-Product%20Category=*all&awsf.AWS-Industry=*all&awsf.Technology-Source=*all)で提供している[Amazon CloudWatch のモニタリングフレームワーク](https://aws.amazon.com/solutions/implementations/amazon-cloudwatch-monitoring-framework/?did=sl_card&trk=sl_card)を試してみましたので、その内容について簡単にまとめたものです。

より詳細は、下記に記載されています。
[実装ガイド](https://docs.aws.amazon.com/solutions/latest/amazon-cloudwatch-monitoring-framework/amazon-cloudwatch-monitoring-framework.pdf)

#Amazon CloudWatch のモニタリングフレームワークとは
EC2内で稼働している Apache の主要なパフォーマンスメトリクスやログを事前に設定された CloudWatch のダッシュボードで、即座に監視できるようにするソリューションで、トラフィックパターンの分析、サーバーをスケールアップするかスケールアウトするかの判断、Apache ワークロードに関するボトルネックやその他のパフォーマンスの問題の検出などができるようになります。

#ソリューションの主な機能
+ **Apache のワークロード用に構成された CloudWatch のダッシュボードの実装機能**

+ **タグ付けメカニズムを使って、モニタリングするインスタンスをダッシュボードに自動で追加（削除）する機能**

+ **特定のワークロード用の CloudWatch エージェントの構成ファイル**

#ソリューションの全体構成
[実装ガイド](https://docs.aws.amazon.com/solutions/latest/amazon-cloudwatch-monitoring-framework/amazon-cloudwatch-monitoring-framework.pdf)より抜粋
![cw-monit-framework-diagram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/3c0a92fe-0cfb-27b1-3b41-05d763a7723c.png)

**追加されるリソース**
[CloudFormation](https://aws.amazon.com/jp/cloudformation/)
[Systems Manager](https://aws.amazon.com/jp/systems-manager/)
[CloudWatch](https://aws.amazon.com/jp/cloudwatch/)
[Lambda](https://aws.amazon.com/jp/lambda/)
[IAM](https://aws.amazon.com/jp/iam/)

#ソリューションを実装した場合のコスト
バージニア北部 で算出すると 1ヶ月あたり **$3.16**
内訳( [実装ガイド](https://docs.aws.amazon.com/solutions/latest/amazon-cloudwatch-monitoring-framework/amazon-cloudwatch-monitoring-framework.pdf)より）：

| AWS Service | Dimension | Total Cost |
| :--- | :--- | :--- |
| Amazon CloudWatch | 1 Dashboard | $3.00 |
| AWS Lambda | 15,000 requests with average billed duration of 500ms and memory allocated 512MB | $0.06 |
| AWS SSM | 1 Advanced parameter storage cost + 10,000 API interactions cost | $0.10 |
|| Total | $3.16 |

#ソリューションを実装してみる
**1 下記のリンクにアクセス**
[Amazon CloudWatch のモニタリングフレームワーク](https://aws.amazon.com/solutions/implementations/amazon-cloudwatch-monitoring-framework/?did=sl_card&trk=sl_card)
![cw-monit-framework-top-page.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/99bd5268-fb9d-7d6b-75f3-313437f480cb.png)
**2 AWS コンソールで起動する ボタンを押下**
![01_cw-monit-framework.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/8e536f6b-37bb-b8c9-8c6a-b2b507449fec.png)
**3 CloudFormation の管理コンソールが起動され、スタックの作成 に遷移するので、そこで東京リージョンを選択して、次へ**
![02_cw-monit-framework.png.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/9cedfb07-ca35-c177-51d0-163536544fa4.png)
**4 スタックの詳細を指定で、スタックの名前を入力して、それ以外はそのままで次へ**
![02_cw-monit-framework_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/b4fe32e1-045f-25e4-b06c-9bca96e0c257.png)

| 設定 | デフォルト | 説明 |
| :--- | :--- | :--- |
|スタックの名前|-|任意で設定してください（必須）|
|Deploy|Yes|CloudWatchダッシュボードをデプロイしてApacheワークロードをモニターしますか？|
|Apache Tagging Schema|{"Key":"CW-Dashboard","Value":"Apache"}|Aacheワークロードインスタンスを識別するためのタグ付けについて|
|Apache Demo Instance|Yes|必要な設定とApacheワークロードが実行されているデモ用のEC2インスタンスが必要ですか？|
**5 スタックオプションの設定で、そのまま次へ**
![03_cw-monit-framework.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/78142cbd-7998-e64b-e838-0ba700e41d4e.png)

**6 レビューで、下記2つにチェックをつけて、スタックの作成を押下**
![04__cw-monit-framework.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/f76a5062-93b5-6858-9ddd-99270edb2881.png)

**7 CloudFormation の管理コンソール > スタック でスタックの作成が完了していることを確認**
![cw-monit-framework-stack-result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/7878edc9-4d45-2469-8534-b82a07f6b3ff.png)

**8 デモ用で構築した EC2 の Apache には、http://{EC2のグローバルIP} でアクセスできます**
![apache-access.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/c3ba61e7-739a-912e-943d-e21656616d7c.png)
#ソリューションを使用してみる
**1 EC2 管理コンソールにアクセスして、 CW-Monitoring-Framework-Stack でデモ用のEC2を検索**

**2 デモ用のEC2を選択し、タグ > タグを管理 を押下**
![ec2-tagging.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/8035f03c-d932-d69a-d3a8-59f927383ff0.png)


**3 タグを管理で、キーに CW-Dashboard を、値に Apache を設定して 保存 を押下**
![ec2-tagging_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/b3a1a124-b6a4-6422-299a-ac21b6ae14cc.png)

**4 約5分後、CloudWatch 管理コンソール > ダッシュボードにアクセスして ApacheDashboard-ap-northeast-1 が自動で実装されていることを確認**
![cw-dashboard.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/8a6adce7-9eb9-7c6d-ebb6-8631687d4157.png)

**5 自動で実装された ApacheDashboard-ap-northeast-1 を押下して、ダッシュボードを確認**
![cw-dashboard_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/1630456f-418f-f0bc-0f75-5b0fe2d6a0a6.png)

#ソリューションを削除する
**1 CloudFormation の管理コンソール > スタック で、[ネストされた]のラベルがないスタックを選択して削除**
![cw-monit-framework-delete.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/eeb8afe3-20e9-5226-5e4d-7f59f8d6cf66.png)

**2 CloudWatch Logs の管理コンソールで作成された下記のロググループを削除**

```
/aws/lambda/XXDashboardHandlerXX
/aws/lambda/XXhelperProviderframeworkXX
/aws/lambda/XXTagHandlerXX
/aws/lambda/XXApach-HelperXX
/cw-monitoring-framework/apache/access
/cw-monitoring-framework/apache/error
linux/var/log/boot
linux/var/log/cron
linux/var/log/messages
linux/var/log/secure
```

#さいごに
詳細は、[実装ガイド](https://docs.aws.amazon.com/solutions/latest/amazon-cloudwatch-monitoring-framework/amazon-cloudwatch-monitoring-framework.pdf)にありますが、本記事が、このソリューションの検証を開始する時の参考になれば幸いです。