syslogのサイズを制限するにはどうすればよいですか?


13

Ubuntu 12.04 LTSを実行している母のコンピューターを持っています。うまく機能していますが、突然のsyslogがすべていっぱいになりました。そして、いっぱいになるという/var/log/syslogことは、サイズが400GBのを削除したということです。はい-ギガバイト。

私はそこにいくつかの有用な情報があったと確信していますが、400GBがふるいにかけられる情報の種類であるかどうかはわかりません。そして、それについて本当に驚くべきことは、それが8時間以内に起こったことです-私はdf正午に走り回りました、そしてその時から今まで、彼女のドライブは30%を満たしました(70%未満から100%まで)。

これを引き起こしている可能性があり、どうすれば修正できますか?

編集 usbが犯罪者のように見えます:

Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157829] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157836] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157842] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157849] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157857] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157863] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157870] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157877] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157884] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157891] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use

2
サイズを制限する代わりに、何が満たされるかを把握する必要があると思います。繰り返されるメッセージがたくさんあるはずtail -n20 /var/log/syslogです。最後の20行を見て実行してみてください。
mikewhatever

ファイルを保存する前にそれを試しました-何も繰り返されていないように見えましたが、もう一度見てみましょう
ウェインワーナー

これは、問題が「demond_nscan」であるように見えますが、グーグルでは何も見つかりません。 nscanはポートスキャンアプリケーションであるため、これは誰かの修正である可能性があります(ただし、私は理論化しています)。これが明示的に実行しようとしているアプリケーションでない場合は、実行可能ファイル(などfind / -iname demond_nscan)を見つけて、実行可能にならないように名前を変更/アクセス許可を変更することをお勧めします。それが何かのために実際に重要なの場合(この方法では、あなたはそれを失っていない、そしてそれは何か他のものによって起動されていた場合、あなたは気づくかもしれません。また、チェック。crontab -l
スティーブ・クルーン

1
demond_nscanは、lexmarkスキャンドライバーに関連しているように見えます。
ウェインワーナー

回答:


12

この問題を修正してから大きなログファイルを修正するように、大量のメッセージの原因を見つける必要があります。

ただし、それまでは、次のいずれかに基づいてログローテーションを設定できます。

  • 時間(例:毎日ローテーション)
  • サイズ(例:ファイルが10MBに達したときに回転)

これは、デフォルトでシステムにすでにセットアップされています:/etc/logrotate.d/rsyslog

 /var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
            reload rsyslog >/dev/null 2>&1 || true
    endscript
 }

これから、/ var / log / syslogファイルが毎日ローテーションされ、ローテーションされたファイルのコピー7つ保持されることがわかります。

これを変更して、サイズの制限(1 MBなど)で回転するか、保存するコピーの数を減らすことができます。

警告:これは問題の根本原因を修正するものではありませんが、ファイルシステムがいっぱいになるのを防ぐため、しばらく時間がかかります。

  • ソース:/etc/logrotate.d/rsyslog
  • ソース:man logrotate

2
これは実際のsyslogのサイズを制限しません!
abu_bua

6

logrotateのサイズを制限する

構成/etc/logrotate.d/syslogファイルを開きます

sudo nano /etc/logrotate.d/syslog

ファイルはsthに見えます。お気に入り

/var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}
....
...

例えばsize 100k 括弧内に追加します。その後、次のようになります。

/var/log/syslog
{
    rotate 7
    size 100k
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

これにより、実際のsyslogファイルではなく、ローテーションファイルのファイルサイズが制限されることに注意してください。ファイルを保存します。次回logrotate chronジョブが開始されると、ローテーションされるログのサイズが制限されます。

現在のsyslogのサイズを制限する

のサイズを制限するには/var/log/syslog、を編集し/etc/rsyslog.d/50-default.conf、固定ログサイズを設定する必要があります。

次の行を変更して、この設定を追加または変更します/etc/rsyslog.d/50-default.conf

.*;auth,authpriv.none       -/var/log/syslog

ここでrsyslogマニュアルの抜粋:

出力チャンネル$ outchannelディレクティブを介して定義されます。構文は次のとおりです。$ outchannel name、file-name、max-size、action-on-max-size nameは出力チャネルの名前(ファイルではない)、file-nameは書き込むファイル名、max-sizeは最大許容サイズ、action-on-max-sizeは最大サイズに達したときに発行されるコマンドです。このコマンドには常に1つのパラメーターがあります。バイナリは、action-on-max-sizeの最初のスペースの前の部分であり、そのパラメーターはそのスペースの後ろにあるすべてのものです。ログメッセージをファイルに書き込む前に、max-sizeが照会されることに注意してください。したがって、メッセージが収まるように、この制限を適度に低く設定してください。現在のリリースでは、予想よりも1k低く設定すると便利です。max-sizeは常にバイト単位で指定する必要があります-特別な記号はありません(1k、1m、…)開発のこの時点で。$ outchannelは「名前」を持つチャネルを定義するだけであることに注意してください。アクティブ化しません。そのためには、セレクター行を使用する必要があります(以下を参照)。そのセレクター行には、チャンネル名とその前に$記号が含まれています。サンプルは次のとおりです。:omfile:$ mychannel現在の形式では、出力チャネルは主に出力ファイルのサイズを制限する機能を提供します。そのためには、最大サイズを指定します。このサイズに達すると、rsyslogdはaction-on-max-sizeコマンドを実行し、ファイルを再度開いて再試行します。コマンドは、ログローテーションスクリプトなどのようなものである必要があります。

action-on-max-sizeコマンドがない場合、またはコマンドが状況を解決しなかった場合、ファイルは閉じられ、rsyslogdによって再度開かれることはありません(もちろん、ハプすることを除く)。このロジックは、rsyslogdダンプコアにつながる可能性のある2 GBを超えるファイルで深刻な問題を最初に経験したときに統合されました。このような場合、単一のファイルへの書き込みを停止する方が適切です。一方、rsyslogdは2 GBを超えるファイルをサポートするように修正されましたが、明らかにファイルシステムとオペレーティングシステムバージョンでのみサポートされています。そのため、2 GBのファイルサイズ制限を強制することは依然として理にかなっています。

ここで、最大サイズは1MBです。この行を行の前に配置し*.*; ...ます

$outchannel mysyslog,/var/log/syslog,1048576

*.*; ...行を次のように変更します

*.*;auth,authpriv.none  :omfile:$mysyslog

rsyslogdを再起動します

sudo service rsyslog restart

0

Lexmark Pro915でも同じ問題が2週間続きました。私は2つのことを行いましたが、現在は正常に機能しています。ドライバーを再インストールしました。(これが助けになったとは思わないでください。)使用していたUSB拡張を取り出しました。これにより、全長がほぼ15フィートになり、完全に互換性がなかった可能性があります。Linuxシステム用のLexmarkドライバーは、貧弱な、またはタイミングの悪い信号を検出し、それについて1日100億回通知したいのではないかと思います。何らかの方法で接続を改善してみてください。

Logrotateおよび同様のソリューションは役に立ちませんでした。Kern.logとsyslogを合わせて1日に1TB以上ログを記録していました!12分ごとに実行するように設定できれば、Logrotateが役立つ場合があります。

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