ログローテーションについて
Elastic Beanstalkのログローテーションについて調査をしたので、内容をまとめておきます。
ローテーションの設定
※以降はPumaのログについて記載していきます
デフォルトの設定で、1時間に1度、該当ログのファイルサイズが10MBを超えていたらローテーションするようになっていました。
1時間に1度の契機は、下記cronジョブによって呼びだされます。
/etc/cron.hourly/cron.logrotate.elasticbeanstalk.puma.conf
ローテーションの設定ファイルについては下記コマンドで確認できます。
$ less /etc/logrotate.elasticbeanstalk.hourly/logrotate.elasticbeanstalk.puma.conf
/var/log/puma/* {
su root root # ルート権限でやる
size 10M # 10MB以上だったらローテーションする
rotate 5 # 5世代分古いログを残す
missingok # ログファイルがなくてもエラーを出さない
compress # ローテーションしたログをgzipで圧縮する
notifempty # ログファイルが空ならローテーションしない
copytruncate # ログファイルをコピーし、内容を削除する
dateext # ローテションしたログに日付文字列をつけたい場合
dateformat %s # UNIX時刻(秒)の文字列を付与する
olddir /var/log/puma/rotated # /var/log/puma/rotated 内にローテーションしたログファイルを格納
}
このデフォルト設定は.ebextentions
によって書き換え可能です。
ローテーション前後のファイルの見比べ
ローテーションされたログの保管場所
ElasticBeanstalkの設定で下記を有効にしていると、S3にローテーションされたログファイルが格納されます。
設定
ElasticBeanstalk -> 環境 -> {該当環境} -> 設定 -> ソフトウェアの変更
ログの格納場所
S3 -> elasticbeanstalk-{リージョン}-{アカウントID} -> resources -> environments -> publish -> {EB環境ID} -> {EC2インスタンスID}
※参照
https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.logging.html
https://qiita.com/Esfahan/items/a8058f1eb593170855a1