戻る
■ログローテートを設定
■ログ保存期間を設定 ※本番環境などで、ログの保存期間を伸ばしたい場合に設定する ※プロバイダ責任制限法のこともあるので、原則3ヶ月以上ログを保存しておくのが良さそう logrotate.confファイルを読み解くメモ http://masasuzu.hatenablog.jp/entry/20111117/1321512757 ログローテートソフトウエア logrotate についてまとめ - Qiita https://qiita.com/shotets/items/e13e1d1739eaea7b1ff9 # vi /etc/logrotate.conf
#rotate 4 rotate 12 … 3ヶ月(12周間)残す場合(※restartなどは不要と思われるが要検証)
なお個別の設定が /etc/logrotate.d にあり、そちらの方が優先されるので注意 またAWSの場合、この期間を長くするよりも、CloudWatch Logsに転送する方が正攻法だと思われる ■ログローテートの追加例 /etc/logrotate.d 内に例えば sample というファイルを作成し、以下のように記述する
/path/to/sample/*.log { daily rotate 14 missingok notifempty compress }
以下で想定の結果を確認できる # logrotate -dv /etc/logrotate.conf 以下で実際にローテートが実行される # logrotate /etc/logrotate.conf 以下のようなエラーになってローテートされない場合、設定内の最初に「su root root」と記述するといい rotating pattern: /path/to/sample/file after 1 days (14 rotations) empty log files are not rotated, old logs are removed considering log /path/to/sample/file error: skipping "/path/to/sample/file" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation. 任意のログをlogrotateを使って管理する - Qiita https://qiita.com/Esfahan/items/a8058f1eb593170855a1 logrotate 〜 ログがローテートされないときに〜 - GMOインターネットグループ グループ研究開発本部(次世代システム研究室) https://recruit.gmo.jp/engineer/jisedai/blog/logrotate/ 1777 なディレクトリのログを logrotate したときのエラー - Qiita https://qiita.com/ngyuki/items/9a0ebfdb09e3b779e4fd 【Linux】パーミッションエラーでログローテーションされない時の対処法|RyoNotes https://ryonotes.com/linux-logrotate-permission-error/ ログローテートの具体例は、Etcetera.txt の「root宛のメールを削除する」も参照 ■logrotateでのプロセス中断対策 ※未検証 ログローテートの際にApacheやNginxは再起動されるみたい 「後日再読み込みさせよう」として設定ファイルを編集していると、自動で適用されてしまう可能性があるので注意 以下はApacheとNginxのログローテートのデフォルト設定 # cat /etc/logrotate.d/httpd /var/log/httpd/*log { missingok notifempty sharedscripts delaycompress postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript } # cat /etc/logrotate.d/nginx /var/log/nginx/*.log { create 0640 nginx root daily rotate 10 missingok notifempty compress delaycompress sharedscripts postrotate /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true endscript } 以下に再起動への対策が書かれている 「systemctl reload httpd.service」を「systemctl graceful httpd.service」にすれば良さそう サービスを停止せずにログローテーション(logrotate)を行う - ゆーも https://humo-life.net/blog/centos/187/ nginxの場合は 「nginx -s reload」でgraceful扱いになるようだが、そもそも「restart」や「reload」と書かれていない 対策は不要か、もしくは別の対策が必要か 「nginx実践ガイド」のコマンドのメモ - Qiita https://qiita.com/u310i/items/3b99b2dfb4897ca83374 【nginx】『途中の処理』を途中で止めないサーバー再起動【652日目】 - エンジニアのひよこ_level10 https://www.nyamucoro.com/entry/2019/07/27/222829 Nginxでgracefulってどうやるの!? - ADACHIN SERVER LABO https://blog.adachin.me/archives/2820 Nginx を再起動せずに設定の変更だけ適用(graceful)する | PzGleaner https://pzgleaner.com/archives/nginx-graceful Nginxでgraceful - ハックノート https://hacknote.jp/archives/20066/ 「/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true」の意味は以下が参考になるか 任意のログをlogrotateを使って管理する - Qiita https://qiita.com/Esfahan/items/a8058f1eb593170855a1