CloudWatch-Logs を利用としたら AWS-CentOSにインストール出来なかった話

# TL;DR
CloudWatchLogがインストール出来なかった。
yumからのインストールがAmazon Linux専用だった。しょうがないのでCentOSでインストール頑張った。

# AWSLogsインストール

この辺を参考にインストールしてみる
　[Zabbixよりも超カンタン！AWSの監視ならCloudWatchが便利すぎる](https://www.webprofessional.jp/monitoring-of-aws-cloudwatch/)
　[逆引きマニュアル: AWS: CloudWatch エージェントをEC2に入れる方法](https://www.ikemo3.com/inverted/cloudwatch/install-on-ec2/)

```
sudo yum install -y awslogs
読み込んだプラグイン:fastestmirror
Determining fastest mirrors
epel/x86_64/metalink                                                                              |  17 kB  00:00:00
 * base: ftp.iij.ad.jp
 * epel: d2lzkl7pfhq30w.cloudfront.net
 * extras: ftp.iij.ad.jp
 * remi-safe: ftp.riken.jp
 * updates: ftp.iij.ad.jp
base                                                                                              | 3.6 kB  00:00:00
epel                                                                                              | 4.7 kB  00:00:00
extras                                                                                            | 3.4 kB  00:00:00
google-chrome                                                                                     | 1.3 kB  00:00:00
mariadb                                                                                           | 2.9 kB  00:00:00
nginx                                                                                             | 2.9 kB  00:00:00
remi-safe                                                                                         | 3.0 kB  00:00:00
updates                                                                                           | 3.4 kB  00:00:00
(1/8): epel/x86_64/updateinfo                                                                     | 991 kB  00:00:00
(2/8): extras/7/x86_64/primary_db                                                                 | 201 kB  00:00:00
(3/8): google-chrome/primary                                                                      | 1.7 kB  00:00:00
(4/8): remi-safe/primary_db                                                                       | 1.4 MB  00:00:00
(5/8): epel/x86_64/primary_db                                                                     | 6.7 MB  00:00:00
(6/8): updates/7/x86_64/primary_db                                                                | 4.2 MB  00:00:00
(7/8): nginx/x86_64/primary_db                                                                    |  45 kB  00:00:01
(8/8): mariadb/primary_db                                                                         |  70 kB  00:00:01
google-chrome                                                                                                        3/3
パッケージ awslogs は利用できません。
エラー: 何もしません
```

無慈悲なエラーに遭遇。
気を取り直してもう一度。

```
sudo yum install awslogs
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: d2lzkl7pfhq30w.cloudfront.net
 * extras: ftp.iij.ad.jp
 * remi-safe: ftp.riken.jp
 * updates: ftp.iij.ad.jp
パッケージ awslogs は利用できません。
エラー: 何もしません
```
変わらず無慈悲。
どうやら `awslogs` をコマンドからインストール出来るのは `Amazon Linux` 専用の様でした。


# AWSLogsインストール(Curlから)

気を取り直してこの辺を参考にしながら作業再開。
　[CloudWatch Logsを使ってログを集める！](https://qiita.com/morozumi_h/items/a1cb930203ca8e4d1a93)
　[awslogs-agent-setup.pyの設定](https://qiita.com/kihoair/items/ab923d447c3fd056e561)

```
curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
```

上記のリンク先を参考に `/var/awslogs/etc/config/awslogs.conf` に下記の記載を先に実施。
※LaravelのAPサーバーのため、LaravelのLogとLinuxのLogを取得する設置を実施。
※awslogsの設定方法についてはこの辺がとても参考になる。
　[CloudWatch LogsでAmazonLinux上のApacheエラーログを監視する](https://dev.classmethod.jp/cloud/cloudwatch-logs-apache/)
　[Amazon CloudWatch Logsを試してみる](https://beyondjapan.com/blog/2016/07/amazon-cloudwatch-logs)

```
[general]
state_file = /var/awslogs/state/agent-state

[/var/log/messages]
datetime_format = %Y-%m-%d %H:%M:%S
file = /var/log/messages
buffer_duration = 5000
log_stream_name = /var/log/messages
initial_position = start_of_file
log_group_name = {hostname}

[laravel-web.log]
datetime_format = %Y-%m-%d %H:%M:%S
file = /var/www/laravel/storage/logs/laravel-web-*.log
buffer_duration = 5000
log_stream_name = laravel-web.log
initial_position = start_of_file
log_group_name = {hostname}

[laravel-batch.log]
datetime_format = %Y-%m-%d %H:%M:%S
file = /var/www/laravel/storage/logs/laravel-batch-*.log
buffer_duration = 5000
log_stream_name = laravel-batch.log
initial_position = start_of_file
log_group_name = {hostname}
```
で、下記コマンドを実行
`sudo python ./awslogs-agent-setup.py --region ap-northeast-1`

```
Choose Log Stream name:
  1. Use EC2 instance id.
  2. Use hostname.
  3. Custom.
Enter choice [1]:

Choose Log Event timestamp format:
  1. %b %d %H:%M:%S    (Dec 31 23:59:59)
  2. %d/%b/%Y:%H:%M:%S (10/Oct/2000:13:55:36)
  3. %Y-%m-%d %H:%M:%S (2008-09-08 11:52:54)
  4. Custom
Enter choice [1]:

Choose initial position of upload:
  1. From start of file.
  2. From end of file.
Enter choice [1]:
More log files to configure? [Y]: Y
Path of log file to upload [/var/log/messages]: /var/log/messages
Destination Log Group name [/var/log/messages]: /var/log/messages

Choose Log Stream name:
  1. Use EC2 instance id.
  2. Use hostname.
  3. Custom.
Enter choice [1]: 1

Choose Log Event timestamp format:
  1. %b %d %H:%M:%S    (Dec 31 23:59:59)
  2. %d/%b/%Y:%H:%M:%S (10/Oct/2000:13:55:36)
  3. %Y-%m-%d %H:%M:%S (2008-09-08 11:52:54)
  4. Custom
Enter choice [1]: 3

Choose initial position of upload:
  1. From start of file.
  2. From end of file.
Enter choice [1]: 1
More log files to configure? [Y]: n

Step 5 of 5: Setting up agent as a daemon ...DONE

------------------------------------------------------
- Configuration file successfully saved at: /var/awslogs/etc/awslogs.conf
- You can begin accessing new log events after a few moments at https://console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#logs:
- You can use 'sudo service awslogs start|stop|status|restart' to control the daemon.
- To see diagnostic information for the CloudWatch Logs Agent, see /var/log/awslogs.log
- You can rerun interactive setup using 'sudo python ./awslogs-agent-setup.py --region ap-northeast-1 --only-generate-config'
------------------------------------------------------
```
※一部、AWSのKEYを求められる部分に関する記載は省略しています。

`/var/awslogs/etc/config/awslogs.conf` 無視されている！？
というか、Generateされた設定ファイルの保存先がそもそも違っていますね。
`/var/awslogs/etc/awslogs.conf` ですので、こちらに編集内容をコピーして、再起動＋ついでに自動起動設定。

```
sudo systemctl start awslogs
sudo systemctl enable awslogs
```

これでAWS-CentOSにAWSLogsをインストールして、CloudWatch-Logsで見えるようになりました。