AWS EC2でログをcloudwatchに送るベストプラクティス
オートスケールで自動でスケールアウトしてスケールインする場合、問題になるのはログになります。
自動でスケールインされた場合、ログがそのまま消えてしまい、そのサーバでエラーが発生した場合、追えなくなります。
よって、ログについては、ストリームで送るの必要があり、何年か前までは、fluentdで送るのが主流でしたが、
awsからawslogsができて、簡単にcloudwatchに送れるようになりました。
前提条件
OS:AmazonLinux2
対象ログ:nginx
awslogsのインストール
sudo yum install awslogs
リージョンの設定 /etc/awslogs/awscli.conf
[plugins]
cwlogs = cwlogs
[default]
region = ap-northeast-1
出力ログの設定
[/var/log/nginx/access.log]
file = /var/log/nginx/access.log
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = {任意のロググループ名}
サービスの有効化
systemctl enable awslogsd
サービスの開始
systemctl start awslogsd
しばらくするとcloudwatchのロググループにログが出力されます。
以上になります。