Apacheのaccess.logが0バイトになってしまう
解決したいこと
Apacheのaccess.logが書き込まれなくなってしまいました。
その結果、logrotateが実行する必要なしと判断して実行されないです。
Apacheのログを正常に稼働させるための対策を教えてください。
自分で考えた手段
(1)手動、強制的に実行してみる
この場合、プロセスが止まる?サービスが止まる?がよくわかっていないので以下のリンクに別途質問させてもらってます。
logrotate -fv /etc/logrotate.d/httpd
(2)logrotateの設定を変えてみる
ログファイルが空でも実行するオプションに変えればいいのかなーと思いますが、今回は設定は変更したくないです。
自分で試したこと
(1)logrotate.d/httpdの確認、ここは問題ないと思われる
/var/log/httpd/*log
missingok
notifempty
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
endscript
(2)lsof | grep /var/log/httpd を実行すると(deleated)が表示されている
ファイル名の後ろに日付がつくのはlogrotate.confに設定されている。
このdeleatedとされている古いファイルにログを吐こうとしているから普通のファイルにはログが出力されていないと推測しています。
logrotate.status の日付はこのファイル名の日付と同じです。
lsof | grep /var/log/httpd
(省略) /var/log/httpd/access.log-20220301(deleated)
(3)logrotateをデバックモードで実行
ここでログファイルが空であるためログローテートが実行されないです
空では実行しないオプションを設定していますが、今回は設定を変更せずに改善する方法を知りたいです!
logrotate -dv /etc/logrotate.d/httpd
rotating pattern: /var/log/htpd/*log 1048576bytes (no old logs will be kept)
empty log files are not rotated, old logs are removed
considering log /var/log/httpd/access_log
log does not need rotating
(省略)
not runnning postrotate script, sice no logs were rotated