logrotateがログを自動的にローテーションしない


8

2つの異なる(i386 v AMD)Debianボックスがあり、同じ問題があります。logrotateはログを自動的にローテーションしません。私が手動でそれを強制すると、それはうまくいきます

/usr/sbin/logrotate -f /etc/logrotate.conf

しかし、それは私には大丈夫ではありません。

設定は変更されていません(少なくとも私は変更していません)。AMDボックスはフレッシュインストールですが、機能しません。

同様の問題に気づいた場合は、私を助けてください。

更新(一部のサーバー出力):

logrotate -d http://pastebin.com/e6AshtGq

ls -l /var/log http://pastebin.com/Y2A4Li59

cat /etc/logrotate.conf http://pastebin.com/1h7Uwctr

ls -l /etc/logrotate.d http://pastebin.com/NvUAeszM


何かエラーがありますか?「include /etc/logrotate.d」がコメント化されていないことを確認します。
Torian 2011

1
ログがローテーションされないことをどのようにして知っていますか?エラー?30日後には発生しませんか?これらのボックスは常に稼働していますか?logrotateはcronでスケジュールされていますか?
EightBitTony 2011

「include /etc/logrotate.d」が両方のシステムに配置されていることを確認できます。...rsyslogd was HUPed...これについて何かわからないような、syslog内の興味深いエントリ以外のエラーはありません。
fabrik 2011

@EightBitTonyこれらはサーバーであり、継続的に稼働しています。設定は多かれ少なかれデフォルトであり(logrotate設定は私によって変更されていません)、通常のものだけがインストールされています。logrotateは含まれてcron.dailyいますが、ローテーションは起こりません。
fabrik、2011

@Fabrikはlogrotate -d /etc/logrotate.confの出力を質問に追加してください
EightBitTony

回答:


8

logrotateがcronによって実行されていることを確認してください。

編集:

コメントの議論から-cronが正しく機能していないようです。ユーザーなしでcrontabにcronjobがありましたが、これは、cronデーモンを再起動したときにのみ明らかになります

私のubuntuおよびcentosシステムには、/etc/cron.daily/logrotateその内容が

#!/bin/sh

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

/ etc / crontabには、毎日のジョブを実行する次の行があります

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily 

鉱山が機能しないという事実を除いて、これは完全に私の設定のように見えます:(
fabrik

cron実行の出力を確認していますps -ef | grep cron| grep -v grepか?/etc/cron.daily/logrotateの先頭にエコーを追加し、echo "logrotate runing" >>/tmp/logrotate.outそれが作成されるかどうかを確認します。
user9517 2011

私のcrontabで問題が発生したようです。cronは稼働していますが、毎日のlogrotateジョブは実行されません。/etc/cron.daily/logrotate手動で実行すると、ログ/tmp/logrotate.outもローテーションされます。
fabrik 2011

毎日の仕事が明日まで再開されないことを忘れないでください!
user9517 2011

もちろん、しかし昨日変更した/etc/cron.daily/logrotateので-f、強制的に回転するパラメーターを追加しましたが、今日の朝、ログが回転していませんでした。
fabrik、2011

10

私は同様の問題を抱えていましたcrontabが、機能しており、一部のログディレクトリlogrotateは機能しましたが、一部は機能しませんでした。logrotateを手動で実行しようとすると、いくつかのエラーメッセージが表示されました。

user@server:/var/log/apache2$ sudo /usr/sbin/logrotate -f /etc/logrotate.conf
error: error creating output file /var/log/apache2/access.log.1.gz: File exists
error: error creating output file /var/log/apache2/error.log.1.gz: File exists
...

すべての*.1.gzファイルのサイズは0でしたsudo /usr/sbin/logrotate -f /etc/logrotate.conf。エラーメッセージに示されているすべてのファイルを手動で削除し、再度実行してみました。

この代替ソリューションもここで共有する必要がありますが、これは問題を検索しているときに最初に出てきた検索結果でしたが、提案されたソリューションはうまくいきませんでした。これは、私と同じ状況にいる他の人にも役立つかもしれません。


ありがとう、この問題もありました。すべての1.gzファイルを削除し、最終的に動作を再開しました。なんて恐ろしいコードなのでしょう。
Florian Heigl

2

分かった分かった。5歳のスレッド。

それでも検索でかなり高くなる場合は、私が貢献して、発生した問題の解決策を提供します。logrotateジョブがサーバーの1つで自動的に処理されませんでした。ローテーションの強制はうまくいきました。毎日の回転コマンドを手動で実行した後、私は解決策を思いつきました:

( cd / && run-parts --report /etc/cron.daily )

次に、logrorateジョブの実行を停止するエラーを確認しました。

/etc/cron.daily/logrotate:
error: iptraf-ng:2 duplicate log entry for /var/log/iptraf/*.log

はい、それと同じくらい簡単です。ローテーションする同じログを定義する2つのファイル(iptrafとiptraf-ng)がありました。iptrafの競合するlogrotate定義の1つを削除するだけでうまくいきました。

rm /etc/logrotate.d/iptraf

別の問題は、/ etc / crontabファイルの失敗です。構文が間違っている場合に見つけることができる出力が提供されないため、そのファイルの構文をダブルまたはトリプルチェックすることを意味します。構文検証に失敗した後、静かに終了します。

これが誰かの時間を節約することを願っています。


1

OK同様の問題がありました。

「ログはローテーションされていませんか?」しかし、logrotateを手動で実行する(またはを実行する/etc/cron.dailyと、それらは正常に回転します。

したがって、cronは毎日「実行されていない」ようです。奇数。そのため、cron がデータ出力するログファイルを調べ、その特定の問題の修正について、「認証トークンが無効になりました。新しいトークンが必要です」と表示されました。こちらを参照してください


1

これは、サービスの変更に伴って時間の経過とともに頻繁に発生し、logrotateで使用されるオプションが編集されて、logrotateが毎日失敗することを確認しました。

アイデアを与えるために、最後の修正では、apache logrotateファイルのnotifyemptyオプションが無効になり、logrotateがすべて一緒に停止するようになりました。

これはある程度カバーされていますが、これらの問題を追跡するときに私が経験したプロセスを共有したいと思います。

  1. まず、実行#/usr/sbin/logrotate -f /etc/logrotate.confしてエラーを探します(例:postfix:3 'missingok')。
    参照しているファイルと行番号は、logrotate.dフォルダー内のファイルです。
  2. 問題のファイルを編集し# vi /etc/logrotate.d/postfix、問題の原因となっているオプションを削除して、ファイルを保存します。
  3. 最初の手順を繰り返して、回転が機能するかどうか、または他の問題があるかどうかを確認します。

最初のステップが単に何も出力しない場合がありますが、問題があることがわかります。サービス全体のログファイルがローテーションされていなかったため、このすべてが始まったので、その特定のサービスを探しているlogrotateプロセスを監視して、ローテーションが停止している原因を確認できます。これを行うには、verboseタグをlogrotateコマンドに追加し、そのフォルダーで何が起こるか(ある場合)を確認します。


1

競合するログローテーション設定パラメータを確認してください!!

私はこの問題に苦労していて、ようやくlogrotateに関するドキュメントを非常によく読みましここにいくつかの役立つドキュメントが見つかりまし

SizeパラメーターとRotation Intervalパラメーターの両方を指定しましたが、実際にはどちらも必要ありませんでした。私は、ローテーションがcronでスケジュールされたときに正確に実行されるようにしたいと考えていました。

  1. サイズパラメータは、回転間隔を上書きします。したがって、私のログは、ローテーションされる前に、このパラメーターを超える必要がありました。(ディスクの使用について最も心配していたときに、これがどのように役立つかがわかります。しかし、それは私がそれを使用したかった方法ではありません。)
  2. 回転間隔は、最後の回転がいつ発生したかをチェックし、次の回転が指定された量だけ遅れていることを確認します。しかし、その時間が発生するタイミングをどのように制御するかは不明です。これは、ローテーションが最後に発生した時間に基づいています。

したがって、Rotation IntervalSizeパラメータを削除します。その後、強制せずにlogrotateが呼び出されるたびにローテーションを取得します。

編集:これでも完全には機能しません!ログファイルが特定のしきい値を下回っている場合、ログはローテーションされません。したがって、2分ごとにローテーションするcronジョブを実行したときに、ログはローテーションしませんでした。

を実行すると、詳細なデバッグ情報を確認できますlogrotate -d。これは非常に役立つデバッグ情報を提供します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.