CentOS7 で logwatch の出力を抑制

CentOS7 で logwatch を導入したが、毎日メールが送られてきてつらいので、メールの出力を抑制してみた。

毎日メールを送る原因になっているのは以下の二つ。

  • postfix
  • zz-disk_space

というわけで、それぞれ /etc 以下にファイルを作って対策した。

postfix

ドメインの設定やリレーの設定をしていないので、ローカルにしかメールを配送していないpostfixだが、毎日何かしらを出力するためメールの原因となる。

これは設定ファイル( /etc/logwatch/conf/services/postfix.conf )を作成して下記を記載すればよい。

$postfix_Show_Summary = No

これで毎日のまとめメールはこなくなる。
もちろん、cronの出力等すべて適切に捨てるなどして、通常はメールが送信されないようにする、という方がベター。どちらで対応するかは手間を考えて無理なく可能な方をとればよいかと。

zz-disk_space

こちらは、何も問題なくても毎回 df の出力結果をメールしてくれるおせっかいさん。正直うるさいので、ディスク容量があふれそうになっているときだけ出力するようにスクリプトを書き換える。

具体的には、 /usr/share/logwatch/scripts/services/zz-disk_space を /etc/logwatch/scripts/services/zz-disk_space にコピーしてから、その中身を修正することによって対策する。こうすることで、デフォルトのスクリプトは実行されずに修正済みのスクリプトのみ実行させることができる。

修正内容としては、フラグを一つ追加し、 df の結果を出力する関数を呼ぶ部分をデフォルトでは呼ばないようにした、というだけ。
具体的には下記の通り。

 $ diff -u /usr/share/logwatch/scripts/services/zz-disk_space /etc/logwatch/scripts/services/zz-disk_space
--- /usr/share/logwatch/scripts/services/zz-disk_space  2014-06-10 11:15:40.000000000 +0900
+++ /etc/logwatch/scripts/services/zz-disk_space        2016-04-28 21:15:32.583294932 +0900
@@ -31,6 +31,8 @@
 my $show_disk_usage = $ENV{'show_disk_usage'} || 0;
 my $diskfull_threshhold = $ENV{'diskfull_threshold'} || 90;
 my $local_disks_only = $ENV{'local_disks_only'} || 0;
+my $show_diskspace = $ENV{'show_diskspace'} || 0;
+my $diskspace_if_diskfull = $ENV{'diskspace_if_diskfull'} || 1;

 my $df_options;
 my $disk_cmd;
@@ -181,6 +183,7 @@
                if (($use > $diskfull_threshhold) && ($fields[0] !~ /\/dev\/scd/ ) && ($fields[0] !~ /\/dev\/sr/ )
                                && ($fields[0] !~ /\/dev\/loop./)) {
                        print "$fields[0] => $fields[4] Used. Warning. Disk Filling up.\n";
+                       if ( $diskspace_if_diskfull == 1 ){ DiskSpace(); };
                }
        }
 }
@@ -189,7 +192,9 @@
 #Main

 #Only show disk space "df" by default -mgt
-DiskSpace() if (($ENV{PRINTING} eq 'y') or $Detail);
+if ( $show_diskspace == 1 ){
+       DiskSpace() if (($ENV{PRINTING} eq 'y') or $Detail);
+};

 if ( $show_disk_usage == 1 ) { DiskUsage(); }; #Turn on in zz-disk_space.conf

これで、何もないときにはメールがこないようになったはず。

コメントを残す