ログの問題と bash スクリプト

ログの問題と bash スクリプト

私はラックスペース クラウド ホスティングで 11 台の Debian サーバーを稼働させています。ホスティング管理用に VHCS2 をすべて稼働させています。1 台のサーバーはアプリケーション用に使用され、10 台は SMTP 専用です。私の質問は SMTP サーバーに関するものです。各サーバーは 1 つのドメインをホストしています。私の問題は、クライアントが SMTP を使用すると、このディレクトリにログが作成されることです。

/var/log/

しかし、24 時間以内にドライブがいっぱいになり、サーバーはすべての SMTP 接続を拒否します。その後、ログを削除し、次のコマンドを実行してディスク容量を確認しました。

df -h

しかし、HDDはまだいっぱいで、サーバーはSMTP接続を拒否し続けています。そこで、真実を確認するために次のコマンドを実行しました。

du --max-depth=1 -h

それは真実を示しています。実際に使用されているディスク容量です。その後、サーバーを再起動すると、サーバーは正常に動作するようになりました。しかし、数時間後に同じ状況が発生しました。そこで、次のスクリプトを作成しました。

#!/bin/sh

rm -fr /var/log/*
rm -fr /var/log/apache2/*.log
rm -fr /var/log/apache2/*.log.*
rm -fr /var/log/apache2/users/*
rm -fr /var/log/apache2/backup/*

reboot

数日間は動作しましたが、その後、ログが再び HDD を埋め尽くすようになりました。

今、私は以下の解決策を望んでいます。誰かが私を助けてくれるなら。

  1. サーバーからファイルを削除すると、再起動せずにHDDが解放されます
  2. ログは特定の範囲に収める必要があります。古いデータが新しいデータで上書きされる特定のファイルサイズなど

答え1

  1. ログ ファイルを削除するだけでは役に立ちません。通常は SIGHUP を送信して、デーモンにログ ファイルを閉じるように指示する必要があります。
  2. logrotateログを処理する必要があり、さまざまな基準を使用してログをローテーションするタイミングを決定できます。
  3. ログがいっぱいになっていますひどい高速です。ログが溢れている原因を突き止め、ログを別のマシンに送信して処理および保存するか、/var/log に別のボリュームをマウントして、影響を受けるボリュームがそれだけになるようにします。

答え2

どのログがディスクを占有しているかを突き止める必要があります。どのログが問題であるかがわかったら、そのログを調べて、なぜログが急速に増加しているのかを調べます。

ログに記録される情報が多すぎませんか? アプリケーションのログ レベルを下げてください。
ログに記録されるエラーが多すぎませんか? 調査して修正してください
。...

ログを制御できるようになったら、それを使用してlogrotateログを管理できます。

関連情報