AWS では Elastic Beanstalk でインスタンスを立ち上げている場合はデフォルトで Nginx のアクセスログとエラーログが CloudWatch に送信されます。
ですが、自分でインスタンスを立ち上げた時は CloudWatch にログが自動的には送信されないので今回は CloudWatch にログを送信できるようにしました。
IAM ロールにポリシーをアタッチする
EC2 から CloudWatch にログを送信できるようにしたいので、EC2 に設定している IAM ロールに CloudWatchAgentServerPolicy
を追加します。
CloudWatch Logs エージェントのインストール
CloudWatch Logs を yum でインストールします。
$ sudo yum install awslogs
インストールできたら /etc/awslogs/awscli.conf
でログの送信先のリージョンを Tokyo リージョンに変更します。
/etc/awslogs/awscli.conf
[plugins] cwlogs = cwlogs [default] region = ap-northeast-1
/etc/awslogs/awslogs.conf
には一番下に Nginx のアクセスログとエラーログの設定を追記します。
/etc/awslogs/awslogs.conf
[/var/log/nginx/access.log] datetime_format = %d/%b/%Y:%H:%M:%S %z file = /var/log/nginx/access.log buffer_duration = 5000 log_stream_name = {instance_id} initial_position = start_of_file log_group_name = /var/log/nginx/access.log [/var/log/nginx/error.log] datetime_format = %Y/%m/%d %H:%M:%S file = /var/log/nginx/error.log buffer_duration = 5000 log_stream_name = {instance_id} initial_position = start_of_file log_group_name = /var/log/nginx/error.log
上記 2 つのファイルを設定できたら CloudWatch Logs エージェントを起動します。
$ sudo systemctl start awslogsd
ついでに自動起動も設定しておきます。
$ sudo systemctl enable awslogsd
Amazon Linux 2 以外では起動方法が上記とは違うようなので、こちらを参考にしてみてください。
起動できたらブラウザで EC2 にアクセスしてみましょう。
アクセスした後に CloudWatch に移動してログ一覧を表示すると /var/log/nginx/access.log
と /var/log/nginx/error.log
が確認できると思います。
まとめ
Nginx のアクセスログとエラーログを CloudWatch に送信できるようにしました。
CloudWatch に送ると Lambda や SNS と組み合わせることもできますし、無料利用枠もありますので、ぜひ CloudWatch を有効活用してみてください。
- 作者: 渡辺高志
- 出版社/メーカー: インプレス
- 発売日: 2017/02/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
- 作者: 久保達彦,道井俊介
- 出版社/メーカー: 技術評論社
- 発売日: 2016/01/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る