はじめに
Beanstalkはログメニューから、環境のログをダウンロードすることができます。
ダウンロードすると、「BundleLogs-XXXXXXXXXXX.zip」というファイルができますが、解凍すると色々な種類のログファイルが入っています。
AWSの色々なサービスを触っている人は、ピンとくるものがありますが、初心者には「Beanstalkで動いているプログラムのログがどれか分からない」、「そもそも何のログか分からない」という事があるかと思います。
今回、ログについて調べたりAWSに問い合わせたりした内容を、自分用にメモにまとめました。
解説
🔹 cfn-◯◯.log
- CloudFormation ヘルパースクリプトが出力しているログ。
- 参照:CloudFormation ヘルパースクリプトリファレンス
🔹 cloud-init.log 、 cloud-init-output.log
- EC2の構成管理ツールのcloud-initの実行ログ
🔹 cron
- cron のログファイル。
- Elastic Beanstalk の環境には、デフォルトでは cron ジョブは設定されていないが、設定した場合には、このファイルに実行ログ等が記録される。
- 参照:Elastic Beanstalk 環境にある Amazon EC2 インスタンスに cron ジョブを作成する方法を教えてください。
🔹 eb-◯◯.log
- Elastic Beanstalk 環境の Amazon EC2 インスタンスからの各種ログ。
- 例えば、「eb-cfn-init.log」にはElastic Beanstalkとして設定されたインスタンスのユーザーデータの実行時のログが記録されている。
- 参照:Elastic Beanstalk 環境の Amazon EC2 インスタンスからのログの表示
🔹 「healthd」フォルダ
- Elastic Beanstalkのヘルスエージェントのログが記録されている。
- 参照:拡張状態ヘルスレポートおよびモニタリング
🔹 message
- 恐らくこれが一番見たいファイルになると思います。
- 後述のweb.stdout.logと同様に、デプロイしたアプリケーションの標準出力のログの内容に加えて、rsyslogによって管理されるその他のコンポーネントのログ(kernelや、systemd等)が記録されている。
- 後述のweb.stdout.logとの使い分けとしては、トラブルシューティング等で、複数のコンポーネントのログを単一ファイルにて時系列順に確認したい場合に有効。
🔹 「nginx」フォルダ
- Elastic Beanstalk にて使用している nginx のアクセスログ、エラーログが格納されている。
- 参照:リバースプロキシを設定する
🔹 「rotated」フォルダ
- 後述の、「web.stdout.log」の過去ログ。
🔹 web.stdout.log
- Node.jsの場合ですが、ElasticBeanstalkにデプロイされたアプリケーションの、標準出力のログ。
- 以下はAWSに問い合わせて教えてもらった内容。
- Node.jsのアプリケーションは、デフォルトではsystemdにより起動されており、設定ファイルは/etc/systemd/system/web.serviceとなっております。
- 当該ファイルのStandardOutputとStandardErrorにはsyslogが指定されており、/etc/rsyslog.d/web.confにより、Node.jsのアプリケーションの標準出力のログは/var/log/web.stdout.logに出力されております。