ログローテーション

logrotateのインストール

apacheのログの肥大化を防ぐlogrotateというローテーションシステムを導入します。

# pkg search logrotate
logrotate-3.13.0_2 Daemon to rotate, compress, remove, and mail system log files
# pkg install -y logrotate-3.13.0_2

logrotateインストール

logrotate.confの編集

# cd /usr/local/etc
# cp logrotate.conf.sample logrotate.conf

logrotateサンプルファイルを設定ファイルとして使います。

# ee logrotate.conf
/var/log/lastlog {
monthly
rotate 1
}

#/var/log/lastlog {
# monthly
# rotate 1
#}
#でコメントアウト

設定ファイルの作成

logrotate.confの中に include /usr/local/etc/logrotate.dと書かれています。
logrotate.dというディレクトリから設定ファイルを読み込むようになっているので、このディレクトリと設定ファイルを作成します。

# mkdir /usr/local/etc/logrotate.d
# ee /usr/local/etc/logrotate.d/apache24
/var/log/httpd-error.log
/var/log/httpd-access.log {
        daily
        rotate 4
        create
        nocompress
        missingok
        sharedscripts
        postrotate
            /usr/local/etc/rc.d/apache24 graceful
        endscript
}

createローテーション後に空のログファイルを作成
nocompressローテーションしたログを圧縮しない
missingokログファイルがなくてもエラーを出さずに実行
sharedscriots複数指定したログファイルに対してpostrotateやprerotateで指定したコマンドを実行
postrptate~endscript間に指定したコマンドをローテーション後に実行

cronに登録

# ee /etc/crontab
35 0 * * * /usr/local/sbin/logrotate -v /usr/local/etc/logrotate.conf > /dev/null 2>&1

毎日0時35分にログローテーション実行。
> /dev/null 2>&1はローテーション実行時の成功とエラーメッセージ両方のメールを無効化します。

logrotateでapacheが落ちる際の対策へ

2025.01.25追記
最近logrotate時にapacheが落ちるようになりました。
logrotateでapacheが落ちる際の対策

タイトルとURLをコピーしました