LogWatchからのmailが大きすぎるので

サーバで毎日LogWatchの出力がroot宛にmailで届く。
まぁこれはそうなるように設定したからで、そのこと自体には問題は無いのだが、問題はそのmailの大きさ。
そのサーバは多数のユーザが登録されており、それぞれが短い間隔(2~10分程度)でとある処理を行うためにcrontabにその処理を登録している。
そのためcrondのlogが大量に吐き出され、それら全てがLogWatchによってrootに報告されてくるので、mailのサイズが少なくとも数メガバイト、多い日には20メガバイトにもなる。
これでは読み出すにも少々時間がかかるので、crondのlogだけは少なく出来ないかと考えた。
他の処理(sendmail,samba等)のlogは比較的少ないので、今回はcrondのみに絞って調べてみた。
最初はcrondそのものが吐き出すlogをwarningレベル以上のものだけに出来ないかと思ったが、それはやめてLogWatchが吐き出す出力を減らすことにした。
ところが/etc/log.d/logwatch.confを見ても個別のサービス単位でのlog-levelの設定は出来なさそうなので、少々悩んでしまった。
どのサービスのlogを出力するかは個別に選べ、そうするには/etc/log.d/logwatch.conf 内の「Service = All」になっている部分のAllをそれぞれのサービス名に書き換え、それを必要なサービス分書けば良いが、今回はAllのままにした。
というのは、いちいち出力するサービスを記述するのは面倒なうえ、出力漏れがあると少々困ってしまう。
今回はcrondだけのlogを減らしたいので、最終的は出力するscriptを修正してしまった。

修正したscriptは/etc/log.d/scripts/services/cronで、なにも出力させないのなら最初にexit(0)を書いて強制的に処理を終わらせれば良いのだろうが、それでは重大なメッセージがあった場合に見逃してしまうので、圧倒的に多く出力されている”Unmatched Entries”を減らすために、それを出力する行をコメントアウトした。
具体的にはscriptの最後の下記の部分
——————————————–
if ($#OtherList >= 0) {
print “\n**Unmatched Entries**\n”;
print @OtherList;
}

exit(0);
——————————————–
の3行目の”print @OtherList;”の行をコメントアウトした。
これで明日の朝に来るmailのサイズが小さくなることを期待しよう。

←クリックしてくれると嬉しいです。
【広告】

コメントを残す