CloudWathLogs Agentの最小セットアップ：Windows

# やること
CloudWatchLogsで、Windowsイベントログを見たい場合の最小（？）セットアップ方法をまとめてみた。
![ここに表示されます](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185989/bd5db497-4683-2407-620a-5c080a4d7a61.png)
ここに、Windowsイベントログが表示されるというアレです。

# 概要
1. AWS管理コンソールでやる事
    1-1, 【IAM】EC2に割り当てるIAMロールを準備する
    1-2, 【EC2】インスタンスにIAMロールを割り当てる

2. WindowsOS上でやる事
    2-1, EC2インスタンス内で、Agentアプリインストール
    2-2, コンフィグファイル作成・設置
    2-3, コンフィグファイル適用・サービス起動

おはり

## 1-1, 【IAM】EC2に割り当てるIAMロールを準備する

ポリシーは👇

```json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:DescribeLogStreams"
            ],
            "Resource": [
                "arn:aws:logs:*:*:*"
            ]
        }
    ]
}
```

## 1-2, 【EC2】インスタンスにIAMロールを割り当てる
IAM ロールの割り当て/置換 で1-1のロールをEC2インスタンスに割り当てる


## 2-1, EC2インスタンス内で、Agentアプリインストール
ダウンロードリンクは、[コマンドラインを使用して CloudWatch エージェントをダウンロードおよび設定する](https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/download-cloudwatch-agent-commandline.html)

Windowsのインストーラは[このあたり](https://s3.amazonaws.com/amazoncloudwatch-agent/windows/amd64/latest/amazon-cloudwatch-agent.msi)


## 2-2, コンフィグファイル作成・設置

```json:config.json
{
  "logs": {
    "logs_collected": {
      "windows_events": {
        "collect_list": [
          {
            "event_format": "xml",
            "event_levels": [
              "WARNING",
              "ERROR",
              "CRITICAL"
            ],
            "event_name": "System",
            "log_group_name": "hogeHoge",
            "log_stream_name": "{local_hostname}"
          }
        ]
      }
    }
  }
}
```
AWS管理コンソールに、ロググループ名「hogeHoge」に、
「Windowsホスト名(local_hostname)」グループが作成されて
その中に、Windowsイベントログのうち、警告・エラー・クリティカルのSystemログが転送される
という意味です。


このファイルを
C:\Program Files\Amazon\AmazonCloudWatchAgent
におきます
ファイル名は、config.json としておく（次の項目で使う）

## 2-3, コンフィグファイル適用・サービス起動

PowerShellで

```powershell
cd "C:\Program Files\Amazon\AmazonCloudWatchAgent"
.\amazon-cloudwatch-agent-ctl.ps1 -a fetch-config -c file:config.json
```

これで、コンフィグファイルが適用（どこかにコピーされるてきな動き）されます。
正常に適用されると👇こんなメッセージになりまする。

```
Start configuration validation...
3019/08/35 00:01:01 Reading json config file path: C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\file_config.json.
tmp ...
Valid Json input schema.
No csm configuration found.
No metric configuration found.
Configuration validation first phase succeeded
Configuration validation second phase succeeded
Configuration validation succeeded
```

で、Windowsサービスを起動します

```powershell
Restart-Service -Name AmazonCloudWatchAgent
```

## 完成図
![ここに表示されます](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185989/bd5db497-4683-2407-620a-5c080a4d7a61.png)
config.jsonで指定したロググループ名が表示されてます
![スクリーンショット 2019-08-25 21.43.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185989/b3685ad3-bd1c-3d42-cc0d-1c7355ca97c5.png)
その中に、Windowsのコンピュータ名が表示されてます
![スクリーンショット 2019-08-25 21.44.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185989/32f6d726-5e75-1a1c-0667-8033ff385e62.png)
開くと、ログっぽいものが表示されてます。

## 取得したいログを増やす
config.jsonを修正
適用
サービス再起動
でできますー

## できない場合

上記手順が完了すると、すぐにログが転送されるみたいです。
ロググループ名が表示されない場合は・・・

### 環境が正しいか確認
OSからインターネットに繋がる。もしくはVPCエンドポイントへ出力できる。

### Agentログの確認
👇ここにあります
C:\ProgramData\Amazon\AmazonCloudWatchAgent\Logs