Amazon EC2 Systems Managerを使ってCloudWatch Logs エージェントをインストールする

Amazon EC2 Systems Managerを使用してコマンド実行を実施する手順です。
試しに Systems Manager を使ってCloudWatch Logs エージェントをインストールしてみます。
内容としては初心者向けになっています。

## 事前準備
SSMエージェントのインストールは実施済みであること。
[:beginner: Amazon EC2 Simple Systems Manager (SSM) エージェントのインストール](http://qiita.com/YoshihiroMatsuda/items/fc1099b610dddd29fa20)  

## AWS マネジメントコンソールからのコマンド実行

EC2の「SYSTEMS MANAGER SERVICE > コマンドの実行」より「コマンドを実行」を選択します。

![2017-06-22-17-41-30.png](https://qiita-image-store.s3.amazonaws.com/0/11547/ec32eeab-c555-974a-2fbe-6b5972de84a0.png)


今回はLinuxへのコマンド実行を行うので「AWS-RunShellScript」を選択します。

![2017-06-22-17-42-39.png](https://qiita-image-store.s3.amazonaws.com/0/11547/89d219c0-4d8a-9876-5588-dc476af00886.png)


今回は1台のインスタンスのみを対象とするので「手動選択」で対象の1台のみ選択します。  

![2017-06-22-17-45-32.png](https://qiita-image-store.s3.amazonaws.com/0/11547/dc596a5b-92f9-a20e-d707-a189eb93dfe5.png)


「Commands」に実行したいコマンドを定義します。
今回はCloudWatch Logs エージェントのインストールと起動を実施します。  

```
yum install -y awslogs
service awslogs start
```

「Working Directory」「Execution Timeout」は必要に応じて入力して下さい。
Execution Timeoutのデフォルトは3600(1時間)です。
「Run」を選択します。  

![2017-06-22-19-36-34.png](https://qiita-image-store.s3.amazonaws.com/0/11547/ca88e548-59d7-7628-6066-0d10d2f785a7.png)

コマンドの発行は成功したようなので「結果を表示」を選択します。

![2017-06-22-17-55-58.png](https://qiita-image-store.s3.amazonaws.com/0/11547/e99b0856-1b5c-3696-2963-870c1e93e61a.png)


「ステータス」が成功(Success)になっていれば最後のコマンドの終了コードが0で返ってきています。

![2017-06-22-17-58-10.png](https://qiita-image-store.s3.amazonaws.com/0/11547/bb9aad05-4449-62fd-22ad-72f58606aee7.png)


出力タブの「出力の表示」を選択しコマンドの実行結果を確認できます。
![2017-06-22-18-00-40.png](https://qiita-image-store.s3.amazonaws.com/0/11547/bd9ba7b8-9a23-d376-3e53-b6b67fb4c687.png)


yum コマンドの実行結果が表示されています。  

![2017-06-22-18-02-33.png](https://qiita-image-store.s3.amazonaws.com/0/11547/0ad4eee0-9436-f7cd-01df-16c630b2f2ae.png)


ただし「出力の表示」で出せるのは画面にも記載のある通り2500文字までなので出力結果が多い場合は、「コマンドを実行」の詳細オプションで「S3への書き込み」をチェックし設定します。

![2017-06-22-18-06-27.png](https://qiita-image-store.s3.amazonaws.com/0/11547/79b942ca-9047-e4e3-bb02-f34dd8140ada.png)


## CloudWatch Logs に送信されたログデータの表示
CloudWatch に移動し「ログ」画面よりロググループを選択します。
ロググループ名は「awslogs.conf」の初期値が「/var/log/messages」になっています。
また、デフォルト値のリージョンが「us-east-1」になっているのでバージニア北部へ移動します。

![2017-06-22-18-51-31.png](https://qiita-image-store.s3.amazonaws.com/0/11547/bdb001e5-3e94-ef45-fe01-f2ff1d565c7b.png)


/etc/awslogs/awscli.conf  

```
[plugins]
cwlogs = cwlogs
[default]
region = us-east-1
```

/etc/awslogs/awslogs.conf  

```
~ 省略 ~
[/var/log/messages]
datetime_format = %b %d %H:%M:%S
file = /var/log/messages
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = /var/log/messages
```

ログストリーム名を選択します。
ログストリーム名は「awslogs.conf」の初期値がインスタンスのIDになっています。  

![2017-06-22-18-52-52.png](https://qiita-image-store.s3.amazonaws.com/0/11547/ef4a7881-5c07-8818-c18b-7405f65dfd99.png)


対象のインスタンスの「/var/log/messages」が表示されます。
CloudWatch Logs エージェントをインストールしたタイミングより前のログも取得できています。
ログの取得までは成功です。

![2017-06-22-19-02-32.png](https://qiita-image-store.s3.amazonaws.com/0/11547/3be709ed-7cdc-73f4-997f-f2e20710d001.png)


## 上手く行かない場合
### ポリシー設定の不足の可能性
対象インスタンスに割り当てているIAMロールにて「インラインポリシー」を設定します。  

![2017-06-22-18-34-45.png](https://qiita-image-store.s3.amazonaws.com/0/11547/5bdf0914-f568-02b1-188f-f3b7d7492e44.png)


カスタムポリシーを選択します。

![2017-06-22-18-36-49.png](https://qiita-image-store.s3.amazonaws.com/0/11547/8e1d307c-b362-b989-2898-7287e5023de3.png)


「ポリシー名」「ポリシードキュメント」を設定し「ポリシーの適用」を選択します。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html

![2017-06-22-18-39-29.png](https://qiita-image-store.s3.amazonaws.com/0/11547/63bf5cb0-7a14-3e76-137a-25905295d127.png)

![2017-06-22-18-41-17.png](https://qiita-image-store.s3.amazonaws.com/0/11547/d95ed163-e174-caf8-a309-3d3c791bb5c4.png)