Memo

メモ > サーバ > 構築: 基本設定 > ログローテートを設定

■ログローテートを設定
■ログ保存期間を設定 ※本番環境などで、ログの保存期間を伸ばしたい場合に設定する ※プロバイダ責任制限法のこともあるので、原則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宛のメールを削除する」も参照 ■root宛メールの内容をローテート /etc/logrotate.d/mail を作成し、以下を記述する これでroot宛メールの内容がローテートされ、古いものは自動で削除される (サーバの異常は、別途監視ツールなどで把握する前提)
/var/spool/mail/root { su root root daily rotate 14 missingok notifempty compress }
■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

Advertisement