AWS ECS向けCloudWatch Container Insightsのパブリックプレビューが開始したので、使用開始方法をまとめてみた

## はじめに
こんにちわ。Wano株式会社エンジニアのnarikawaと申します。
<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">／<br>  Amazon ECS 向けの CloudWatch Container Insights のパブリックプレビューを開始しました！！<br>＼<br><br>/ &quot;Introducing Amazon CloudWatch Container Insights for Amazon ECS and AWS Fargate - Now in Preview&quot; <a href="https://t.co/b1jaSGtg3x">https://t.co/b1jaSGtg3x</a></p>&mdash; ポジティブな Tori (@toricls) <a href="https://twitter.com/toricls/status/1148756543489347588?ref_src=twsrc%5Etfw">July 10, 2019</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>



<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">個人的にはこっちの手順が分かり易かったです！<a href="https://t.co/UXiIwErG5B">https://t.co/UXiIwErG5B</a></p>&mdash; nari@エンタメ系エンジニア (@fukubaka0825) <a href="https://twitter.com/fukubaka0825/status/1148767582943498240?ref_src=twsrc%5Etfw">July 10, 2019</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

**ということで、以下の手順書を参考に試しに設定してみました。**
[Amazon ECS CloudWatch Container Insights - Amazon Elastic Container Service](https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/cloudwatch-container-insights.html)
ところどころわかりづらいところがあったり、**日本語訳が提供されていないこともあったので、整理して発信しようと思い、この記事を書いています。**
全てを訳せているわけではないので、詳細は大元の手順書を参考にしていただけると幸いです。

## 対象読者
- **CloudWatch Container Insightsの設定が、プレビュー時に使っていなくてよくわからない方**
- **手順書が英語しか対応していないため嫌厭してまだ試せていない方**
- **CloudWatch Container Insightsでどんなことができるか知りたい方**

## 導入手順
### 1.まずは設定いじる
#### GUI(console)で設定する
- **ecsのAccount Settingのタブに移動する**　　
<img width="972" alt="スクリーンショット 2019-07-10 11.06.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321850/9a4de3dc-16ed-33ef-7c9c-82521c1020fd.png">


**※この際、ルートユーザーまたはコンテナーインスタンスのIAMロールを使用していることが前提**  

- **すると以下のような見慣れない設定チェックボックスがあるので、チェックして有効にする**
<img width="1700" alt="スクリーンショット 2019-07-10 11.06.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321850/b5d46c30-5ab7-fce0-50f0-aa009c973b4a.png">

**※この際、実行しようとしているIAM usersとIAM role はecs:PutAccountSetting permissionがこのアクションに必要**
#### CUIで設定する
- **自分のアカウント全てのIAM usersとIAM roleのdefaultの設定をcontainer insightsをenabledにしたい**

 **put-account-setting-default (AWS CLI)の場合**

```
aws ecs put-account-setting-default --name containerInsights --value enabled --region us-east-1
```

**Write-ECSAccountSettingDefault (AWS Tools for Windows PowerShell)の場合**


```
Write-ECSAccountSettingDefault -Name containerInsights -Value enabled -Region us-east-1 -Force
```

- **自分のアカウントのあるIAM usersとIAM roleのdefaultの設定をcontainer insightsをenabledにしたい(root userのみ)**

**put-account-setting (AWS CLI)の場合(特定のuser設定変更)**

```
aws ecs put-account-setting --name containerInsights --value enabled --principal-arn arn:aws:iam::aws_account_id:user/userName --region us-east-1
```

**Write-ECSAccountSetting (AWS Tools for Windows PowerShell)の場合(特定のuser設定変更)**

```
Write-ECSAccountSetting -Name containerInsights -Value enabled -PrincipalArn arn:aws:iam::aws_account_id:user/userName -Region us-east-1 -Force
```

### 2.クラスターを作る
<img width="1833" alt="スクリーンショット 2019-07-10 11.05.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321850/c535226a-0579-d252-1d02-74c01613563b.png">

- **その際、以下のような新しいチェックボックスがあるので、enableにチェックする**
<img width="982" alt="スクリーンショット 2019-07-10 12.24.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321850/bd18b442-96c0-a34c-8771-3d0204d08435.png">

### 3.いつも通りサービスかタスクを立ち上げる
### 4.誘導に従って、cloudwatchのcontainer insightsを見る

- クラスタのメトリクスのタブに移動すると、見慣れない青枠の誘導があるので、View Container Insightsのボタンをクリックする

<img width="1874" alt="スクリーンショット 2019-07-10 11.05.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321850/0c709024-9eb0-11b8-ee68-2add621377f2.png">

- そうすると以下のような、docker stats相当の情報が観れる

<img width="1893" alt="スクリーンショット 2019-07-10 11.34.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321850/e83c11aa-f589-1bd8-cf14-dd175b9fc29c.png">

- 以下のように時間でも絞れるし
<img width="623" alt="スクリーンショット 2019-07-10 11.34.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321850/3486215d-92be-8ff2-347f-a477cdb050d2.png">

- 以下のように特定のクラスタ、サービス、タスクでもfilterをかけれるようになっている

<img width="250" alt="スクリーンショット 2019-07-10 11.34.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/321850/3b80a46e-8225-8452-1b17-1ff194282f61.png">


## container insightsのいいところ
- **コンテナインスタンスにsshして、docker statsしなくてもコンテナの状態を監視できる**

## 疑問点
- **まだterraformでは対応していない？**
  - public previewだから多分対応していない
  - clusterのパラメタで早く切り替えれると嬉しい。。
- **既存のクラスタをいじって設定を足せないのか**
  - terraformで建ててから手動で切り替えようと思ったらできなかった(そもそもクラスターの設定修正画面がない)
  - CLIならいけるのか??
    - [ecs — AWS CLI 1.16.195 Command Reference](https://docs.aws.amazon.com/cli/latest/reference/ecs/index.html)　見当たらない、、
  - ~~わかる方ぜひ教えて欲しいです、、わりと切実~~
  - [追記 2019/7/10]以下の回答いただけました！、正式なリリースでの対応が待ち遠しい
 <blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">ありがとうございます！<br>既存クラスタでの有効化は現時点ではできないので新規クラスタでお試しいただく感じになります🙏</p>&mdash; ポジティブな Tori (@toricls) <a href="https://twitter.com/toricls/status/1148800893250428928?ref_src=twsrc%5Etfw">July 10, 2019</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
  - [追記 2019/8/24]ContainerInsightsの設定をdefaultでonにして、クラスターを作り直してもデフォルトモニタリングのままな現象が発生しました。解決策は、クラスター名を変更して再構築するときちんとContainerInsightsモードに切り替わりますので注意してください

## 終わりに
- 週1投稿に関して、これは先週分ってことで許してください(遅れてすみません。。)