ApacheログをローテーションするEC2 AWSマシンでlogrotate
を実行しています。パックされると、Apacheログはs3fsを介してAWS S3に保存されます。問題は、ログがローテーションされていないことに最近気付いたことです。 S3では48日目から60日目までの古いログがありますが、1日目から47日目までは表示されません。
私の質問は次のとおりです。logrotateは独自のログをどこに保存しますか? s3fsになんらかの問題がある可能性はありますが、何かする前に知っておく必要があります。どこかでログを見つけようとしましたが、見つけることができませんでした。
何か案が?
logrotate
はデフォルトでは何も記録しません。通常、それはあなたのcronのどこかにあるはずです、例えば:
$ grep -r -- 'logrotate.conf' /etc/cron*
/etc/cron.daily/logrotate:/usr/sbin/logrotate /etc/logrotate.conf
手動で実行して問題を確認するか、logrotateの出力を上記のcron内のファイルにリダイレクトして、翌日に何が起こったかを確認できます。
おそらくどこかで設定が正しくなく、logrotateの実行が中断しました。
Logrotateレコードが通常はcat /var/lib/logrotate/status
。
これは https://serverfault.com/a/518134/266525 から取得されます
もう1つの見どころは/var/log/messages
CentOSでは、cron.dailyからのこのようなエラーの場合は/etc/cron.daily/logrotate
logrotate: ALERT exited abnormally with [1]
デバッグモードで手動で実行してエラーを確認することもできます。
/usr/sbin/logrotate -d /etc/logrotate.conf
Cronからlogrotate
を実行していて、出力をリダイレクトしていない場合、出力があれば、cronジョブを実行しているIDのメールに送信されます。出力をログファイルにリダイレクトします。
例えば:
25 3 * * 7 /usr/sbin/logrotate -s /home/user/conf/mwarelogrotate.state
/home/user/conf/mwarelogrotate.conf >> /home/user/logs/logrotate.log 2>&1
/etc/logrotate.conf
をチェックして、/etc/logrotate.d/
を介して構成されたタスクに影響を与える可能性があるグローバル構成設定を確認します
Logrotateがログをローテーションしないか、失敗した状態になった場合は、次のように、デバッグモードでlogorateを手動で実行して、リストされているエラーを確認することをお勧めします。
/usr/sbin/logrotate -d /etc/logrotate.d/*
このコマンドは、ファイルが/etc/logrotate.d
にあるすべてのサービスのログのローテーションをテストします。エラー(重複したログエントリが原因で発生したエラーなど)がリストされている場合は、logrotateに問題がある理由がわかります。