○ logwatchのインストール

・ログをチェックし、管理者 (root) に報告します
・fedoraのパッケージをCentOS用にアレンジします
・logwatch-7.4.3-3.fc25を使っています
・perl-Sys-CPU、perl-Sys-MemInfoパッケージが必要です
・perlパッケージはepelレポにCentOS6用のものがあります
・make はメンテナンスマシンで行っています

・ソースの取得、削除は省略します
・エディタ、ファイラーの操作は省略します
・ソースを展開したら説明文を読みましょう
・Enterキーを省略します

・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます

○関連サイト

:logwatch-7.4.3-3.fc25.src.rpm  (http://dl.fedoraproject.org/)
:perl-Sys-CPU-0.61-9.fc25.src.rpm  (http://dl.fedoraproject.org/)
:perl-Sys-MemInfo-0.98-3.fc25.src.rpm  (http://dl.fedoraproject.org/)
:development (https://sourceforge.net/projects/logwatch/)
:postfix-logwatch-1.40.03.tgz (http://logreporters.sourceforge.net/)

○参照ファイル

パッケージの追加
最初の設定 (Xen)

○インストール環境

:OS CentOS 6.8
:selinux disabled or permissive
:インストール先  /etc /usr/share
:作業 ~/src ~/rpmbuild
:言語 LANG=en_US.UTF-8
:ユーザー rootで実行

・メンテナンスの場合は一般ユーザから行います



○logwatch-7.4.3

○perl-Sys-CPU

・rpmパッケージを作成して入れる場合

# cd ~/src
[root@jupiter:~/src]
# mkdir perl-Sys-CPU
# rpm -ivh --nosignature perl-Sys-CPU-0.61-9.fc25.src.rpm
# cd ~/rpmbuild/SPECS
[root@jupiter:~/rpmbuild/SPECS]
# rpmbuild -ba --clean --rmsource \
--define 'dist .mn' perl-Sys-CPU.spec
# mv perl-Sys-CPU.spec ~/src/perl-Sys-CPU
# cd ../RPMS/i686
[root@jupiter:~/rpmbuild/RPMS/i686]

・作成されたパッケージ
 perl-Sys-CPU-0.61-9.mn.i686.rpm

# rm *debuginfo*
# mv *.rpm ~/src/perl-Sys-CPU
# cd ../../SRPMS
[root@saturn:~/rpmbuild/SRPMS]

・作成されたパッケージ
 perl-Sys-CPU-0.61-9.mn.src.rpm

# mv *.rpm ~/src/perl-Sys-CPU

・インストール

# cd ~/src/perl-Sys-CPU
[root@jupiter:~/src/perl-Sys-CPU]
# yum localinstall perl-Sys-CPU-0.61-9.mn.i686.rpm

・既存のrpmパッケージを入れる場合

# yum install perl-Sys-CPU --enablerepo=epel

・または

# yum downgrade perl-Sys-CPU --enablerepo=epel

○perl-Sys-MemInfo

・rpmパッケージを作成して入れる場合

# cd ~/src
[root@jupiter:~/src]
# mkdir perl-Sys-MemInfo
# rpm -ivh --nosignature perl-Sys-MemInfo-0.98-3.fc25.src.rpm

・specファイルを修正します(下記参照)

# cd ~/rpmbuild/SPECS
[root@jupiter:~/rpmbuild/SPECS]
# vi perl-Sys-MemInfo.spec

・rpmパッケージの作成

# rpmbuild -ba --clean --rmsource \
--define 'dist .mn' perl-Sys-MemInfo.spec
# mv perl-Sys-MemInfo.spec ~/src/perl-Sys-MemInfo
# cd ../RPMS/i686
[root@jupiter:~/rpmbuild/RPMS/i686]

・作成されたパッケージ
 perl-Sys-MemInfo-0.98-3.mn.i686.rpm

# mv *.rpm ~/src/perl-Sys-MemInfo
# cd ../../SRPMS
[root@jupiter:~/rpmbuild/SRPMS]

・作成されたパッケージ
 perl-Sys-MemInfo-0.98-3.mn.src.rpm

# mv *.rpm ~/src/perl-Sys-MemInfo

・インストール

# cd ~/src/perl-Sys-MemInfo
[root@jupiter:~/src/perl-Sys-MemInfo]
# yum localinstall perl-Sys-MemInfo-0.98-3.mn.i686.rpm

:~/rpmbuild/SPECS/perl-Sys-MemInfo.spec

・省略

%check
make test

%files
#%license LICENSE
%doc Changes LICENSE README
%{perl_vendorarch}/auto/*
%{perl_vendorarch}/Sys*
%{_mandir}/man3/*

・省略

・既存のrpmパッケージを入れる場合

# yum install perl-Sys-MemInfo --enablerepo=epel

・または

# yum downgrade perl-Sys-MemInfo --enablerepo=epel

○perl-generators

# yum install perl-generators --enablerepo=epel

○logwatch

# cd ~/src
[root@jupiter:~/src]
# mkdir logwatch
# rpm -ivh --nosignature logwatch-7.4.3-3.fc25.src.rpm
# cd ~/rpmbuild/SPECS
[root@jupiter:~/rpmbuild/SPECS]
# rpmbuild -ba --clean --rmsource \
--define 'dist .mn' logwatch.spec
# mv logwatch.spec ~/src/logwatch
# cd ../RPMS/noarch
[root@jupiter:~/rpmbuild/RPMS/noarch]

・作成されたパッケージ
 logwatch-7.4.3-3.mn.noarch.rpm

# mv *.rpm ~/src/logwatch
# cd ../../SRPMS
[root@jupiter:~/rpmbuild/SRPMS]

・作成されたパッケージ
 logwatch-7.4.3-3.mn.src.rpm

# mv *.rpm ~/src/logwatch

・インストール

# cd ~/src/logwatch
[root@jupiter:~/src/logwatch]
# yum localinstall logwatch-7.4.3-3.mn.noarch.rpm

○configファイルの修正

:/etc/logwatch/conf/logwatch.conf

・既存の設定ファイルをコピーします

# cd /usr/share/logwatch/default.conf
[root@jupiter:/usr/share/logwatch/default.conf]
# cp logwatch.conf /etc/logwatch/conf

・logwatch.confの修正
・詳細なレポートを出すように設定します
・必要のない場合、zz-lm_sensorsを除外します
・proftpd専用の設定とだぶらないようにするため
・"proftpd-messages" "ftpd-xferlog"を除外します

LogDir = /var/log
TmpDir = /var/cache/logwatch
Output = stdout
Format = text
Encode = none
MailTo = root
MailFrom = Logwatch
Range = yesterday
Detail = Med
Service = All
Service = "-zz-network"
Service = "-zz-sys"
Service = "-eximstats"
Service = "-zz-lm_sensors"
Service = "-proftpd-messages"
Service = "-ftpd-xferlog"
mailer = "/usr/sbin/sendmail -t"



○デーモンごとの設定ファイルの調整

○postfixログの調整

・設定ファイルのコピーまたはインストール

・既存設定ファイルファイルのコピー

# cd /usr/share/logwatch/default.conf/services
[root@jupiter:/usr/share/logwatch/default.conf/services]
# cp postfix.conf /etc/logwatch/conf/services
# cd ../../scripts/services
[root@jupiter:/usr/share/logwatch/scripts/services]
# cp postfix /etc/logwatch/scripts/services

・または、postfix-logwatchのインストール
・/etc/logwatchをチェックし、uninstall,installを実行します

# cd ~
[root@jupiter:~]
# tar zxf postfix-logwatch-1.40.03.tgz
# cd postfix-logwatch-1.40.03
[root@jupiter:postfix-logwatch-1.40.03]
# make uninstall-logwatch
# make install-logwatch

:/etc/logwatch/conf/services/postfix.conf

・postfix.confの修正
・Detail (詳細度) を上げてみる
・"NOQUEUE: sleep:"の付いたログを除く

・省略

Title = "Postfix"

LogFile = maillog

Detail = 10

*Remove = NOQUEUE: sleep: RCPT from

・省略

:/etc/logwatch/scripts/services/postfix

・logwatchのpostfixレポートにはbody_checksの内容が表示されます
・body_checksの内容に接頭語(例 bdck:)を付けて表示します
・postfixでbdck:をチェックして、存在すればbody_checksを通します
・ー部分を除き、+部分 をエディタで追加します(+は書き込まない)

--- postfix.orig	2016-03-03 15:46:19.462469000 +0900
+++ postfix	2016-03-13 07:39:14.000000000 +0900
@@ -4196,6 +4196,7 @@ sub header_body_checks($)
 
    #print "   trigger: \"$trigger\", host: \"$host\", eto: \"$eto\", p4: \"$p4\"\n";
    $trigger =~ s/\s+/ /g;
+   $trigger =~ s/(^.)/bdck: $1/;
    $trigger = '*unknown reason'    if ($trigger eq '');
    $eto     = '*unknown'           if ($eto     eq '');
 

・設定の確認 (stdout 端末に表示)

# cd ~
[root@jupiter:~]
# logwatch --service postfix --detail 10 --range today
# logwatch --service postfix --range all

・--debugオプション (レベル 0~100 の範囲で使用)
・logwatchの流れを見る、エラーの原因が解るかもしれない

# cd ~
[root@jupiter:~]
# logwatch --debug 10 --service postfix --detail 10 --range today

・メールの確認 (root宛に送信)

# cd ~
[root@jupiter:~]
# logwatch --service postfix --mailto root

○dovecotログの調整

・logwatchの"dovecot"は"/var/log/maillog"をチェックします
・dovecotサーバの設定に合わせて調整します

:/etc/logwatch/conf/services/dovecot.conf

・既存の設定ファイルをコピーして使います

# cd /usr/share/logwatch/default.conf/services
[root@jupiter:/usr/share/logwatch/default.conf/services]
# cp dovecot.conf /etc/logwatch/conf/services

・Detail (詳細度) を上げてみる

・省略

# Yes = True = On = 1
# No = False = Off = 0

Detail = 10

Title = "Dovecot"

# Which logfole group...
LogFile = dovecot

・省略

:/etc/logwatch/conf/logfiles/dovecot.conf

・既存のmaillog.confをコピーして使います

# cd /usr/share/logwatch/default.conf/logfiles
[root@jupiter:/usr/share/logwatch/default.conf/logfiles]
# cp maillog.conf /etc/logwatch/conf/logfiles/dovecot.conf

・dovecot.confファイルの修正
・dovecotのログを専用のdovecot.logに出力する設定のため
・rsyslog経由の場合は、ApplyStdDateを修正しない

・省略

# What actual file? Defaults to LogPath if not absolute path....
LogFile = dovecot*.log

# If the archives are searched, here is one or more line
# (optionally containing wildcards) that tell where they are...
#If you use a "-" in naming add that as well -mgt
Archive = dovecot*.log.*
Archive = dovecot*.log-*

・省略

#*ApplyStdDate

・省略

:/etc/logwatch/scripts/logfiles/dovecot/applystddate

# mkdir -p /etc/logwatch/scripts/logfiles/dovecot
# cd /usr/share/logwatch/scripts/shared
[root@jupiter:/usr/share/logwatch/scripts/shared]
# cp applystddate /etc/logwatch/scripts/logfiles/dovecot

・dovecot-info.logの日付フォーマットに合わせます

・省略

$SearchDate = TimeFilter($ARGV[0] || '%b %d %H:%M:%S ');

・省略

・設定の確認 (stdout 端末に表示)

# cd ~
[root@jupiter:~]
# logwatch --service dovecot --detail 10 --range today
# logwatch --service dovecot --range all


○proftpd(Systemlog)ログの調整

・logwatchの"proftpd-messages"は"/var/log/messages"をチェックします
・proftpdサーバの設定に合わせて調整します

:/etc/logwatch/conf/services/proftpd.conf

・新規に設定ファイルを作成します

Title = "proftpd"
LogFile = proftpd
*RemoveHeaders

# Set this to 1 if you want to ignore unmatched FTP messages...
$ftpd_ignore_unmatched = 1

:/etc/logwatch/conf/logfiles/proftpd.conf

・新規に設定ファイルを作成します

LogFile = proftpd/proftpd.log
Archive = proftpd/proftpd.log.*
Archive = proftpd/proftpd.log-*
#*ExpandRepeats
#*OnlyHost
#*ApplyStdDate

:/etc/logwatch/scripts/services/proftpd

・既存の設定ファイルをコピーして使います

# cd /usr/share/logwatch/scripts/services
[root@jupiter:/usr/share/logwatch/scripts/services]
# cp proftpd-messages /etc/logwatch/scripts/services/proftpd

・proftpdのログにあわせて修正します
・ー部分を除き、+部分 をエディタで追加します(+は書き込まない)

--- proftpd.orig	2016-03-03 15:46:19.463469000 +0900
+++ proftpd	2016-03-14 07:21:03.000000000 +0900
@@ -120,7 +120,7 @@ while (defined($ThisLine = <STDIN>)) {
    } elsif ( ($Host,$User) = ( $ThisLine =~ /\[(.*)\]\)(?:\:| \-) USER (.*) \(Login failed\): Invalid shell/ ) ) {
       $Temp = "   $Host : $User - ";
       $BadShell{$Temp}++;
-   } elsif ( ($Host,$Ip) = ( $ThisLine =~ /\((.*)\[(.*)\]\)(?:\:| \-) SECURITY VIOLATION: root login attempted/ ) ) {
+   } elsif ( ($Host,$Ip) = ( $ThisLine =~ /\((.*)\[(.*)\]\)(?:\:| \-) SECURITY VIOLATION: [Rr]oot login attempted/ ) ) {
       $RootLoginAttempt{$Host}++;
    } elsif ( ($Host) = ( $ThisLine =~ /\(((.*)\[(.*)\])\)(?:\:| \-) Maximum login attempts .*exceeded/ ) ) {
       $MaxLoginAttempts{$Host}++;

:/etc/logwatch/scripts/logfiles/proftpd/applyeurodate

・proftpd-1.3.5で使います

# mkdir -p /etc/logwatch/scripts/logfiles/proftpd
# cd /usr/share/logwatch/scripts/shared
[root@jupiter:/usr/share/logwatch/scripts/shared]
# cp applyeurodate /etc/logwatch/scripts/logfiles/proftpd

・proftpdのSytemlogの日付フォーマットに合わせます
・/var/log/messagesへの出力の場合は未検証

・省略

$SearchDate = TimeFilter($ARGV[0] || '%Y-%m-%d %H:%M:%S(,...)? ');

・省略

:/etc/logwatch/scripts/logfiles/proftpd/aplystddate

・proftpd-1.3.4で使います

# mkdir -p /etc/logwatch/scripts/logfiles/proftpd
# cd /usr/share/logwatch/scripts/shared
[root@jupiter:/usr/share/logwatch/scripts/shared]
# cp applystddate /etc/logwatch/scripts/logfiles/proftpd

・proftpdのSytemlogの日付フォーマットに合わせます
・/var/log/messagesへの出力の場合は未検証

・省略

$SearchDate = TimeFilter($ARGV[0] || '%b %d %H:%M:%S');

・省略

・設定の確認 (stdout 端末に表示)

# cd ~
[root@jupiter:~]
# logwatch --service proftpd --detail 15 --range today
# logwatch --service proftpd --range all

○proftpd(Transferlog)ログの調整

・logwatchの"ftpd-xferlog"は"/var/log/xferlog"をチェックします
・proftpdサーバの設定に合わせて調整します

:/etc/logwatch/conf/service/proftpd-xferlog.conf

・既存の設定ファイルをコピーして使います
・レポートが名前順になるので、proftpdに合わせています

# cd /usr/share/logwatch/default.conf/services
[root@jupiter:/usr/share/logwatch/default.conf/services]
# cp ftpd-xferlog.conf /etc/logwatch/conf/services/proftpd-xferlog.conf

・proftpd-xferlog.confファイルの修正
・proftpdサーバの設定に合わせて調整します
・ファイル名までレポートするには[Detail値]を上げます

・省略

#Detail = 15

Title = "proftpd-xferlog"

・省略

:/etc/logwatch/conf/logfiles/xferlog.conf

・既存の設定ファイルをコピーして使います

# cd /usr/share/logwatch/default.conf/logfiles
[root@jupiter:/usr/share/logwatch/default.conf/logfiles]
# cp xferlog.conf /etc/logwatch/conf/logfiles

・xferlog.confの修正
・proftpdサーバの設定に合わせて調整します

・省略

LogFile = proftpd/xferlog
Archive = proftpd/xferlog.*
Archive = proftpd/xferlog-*

・省略

:/etc/logwatch/scripts/services/proftpd-xferlog

・既存の設定ファイルをコピーして使います

# cd /usr/share/logwatch/scripts/services
[root@jupiter:/usr/share/logwatch/scripts/services]
# cp ftpd-xferlog /etc/logwatch/scripts/services/proftpd-xferlog

:/etc/logwatch/scripts/logfiles/xferlog/applydate

・既存の設定ファイルをコピーして使います

# mkdir -p /etc/logwatch/scripts/logfiles/xferlog
# cd /usr/share/logwatch/scripts/logfiles/xferlog
[root@jupiter:/usr/share/logwatch/scripts/logfiles/xferlog]
# cp applydate /etc/logwatch/scripts/logfiles/xferlog

・proftpdのTransferlogの日付フォーマットに合わせます
・/var/log/xferlog(デフォルト)の場合も修正が必要です

・省略

$SearchDate = TimeFilter('%b %d %H:%M:%S %Y');

・省略

・設定の確認 (stdout 端末に表示)

# cd ~
[root@jupiter:~]
# logwatch --service proftpd-xferlog --detail 15 --range today
# logwatch --service proftpd-xferlog --range all

○sshdログの調整

:/etc/logwatch/scripts/services/sshd

・既存の設定ファイルをコピーして使います

# cd /usr/share/logwatch/scripts/services
[root@jupiter:/usr/share/logwatch/scripts/services]
# cp sshd /etc/logwatch/scripts/services

・openssh-7.2p2のログにあわせて修正します
・Received disconnectログにport番号が追記されてます
・ー部分を除き、+部分 をエディタで追加します(+は書き込まない)

--- sshd.orig	2016-03-19 12:36:45.479435000 +0900
+++ sshd	2016-03-19 12:46:57.952327600 +0900
@@ -260,6 +260,7 @@ while (defined(my $ThisLine = <STDIN>))
        ($ThisLine =~ m/^Connection closed by/) or
        ($ThisLine =~ m/^Disconnecting: Command terminated on signal \d+/) or
        ($ThisLine =~ m/^Disconnecting: server_input_channel_req: unknown channel -?\d+/) or
+       ($ThisLine =~ m/^Disconnected from/) or
        ($ThisLine =~ m/^connect from \d+\.\d+\.\d+\.\d+/) or
        ($ThisLine =~ m/^fatal: Timeout before authentication/ ) or
        ($ThisLine =~ m/^fatal: no hostkey alg/) or
@@ -294,7 +295,7 @@ while (defined(my $ThisLine = <STDIN>))
        ($ThisLine =~ /^Keyboard-interactive \(PAM\) userauth failed/ ) or
        ($ThisLine =~ /^debug1: /) or
        ($ThisLine =~ /Set \/proc\/self\/oom_(score_)?adj (from -?\d )?to -?\d/ ) or
-       ($ThisLine =~ /Starting session: (forced-command|subsystem|shell|command)/ ) or
+       ($ThisLine =~ /Starting session: (forced-command|shell|command)/ ) or
        ($ThisLine =~ /Found matching \w+ key:/ ) or
        ($ThisLine =~ /User child is on pid \d/ ) or
        ($ThisLine =~ /Nasty PTR record .* is set up for [\da-fA-F.:]+, ignoring/)        
@@ -383,11 +384,13 @@ while (defined(my $ThisLine = <STDIN>))
       $MisMatch{$Addresses}++;
    } elsif ( $ThisLine =~ m/subsystem request for sftp/ ) {
       $sftpRequests++;
+   } elsif ( $ThisLine =~ m/subsystem 'sftp'/ ) {
+      $sftpRequests++;
    } elsif ( $ThisLine =~ m/refused connect from (.*)$/ ) {
       $RefusedConnections{$1}++;
    } elsif ( my ($Reason) = ($ThisLine =~ /^Authentication refused: (.*)$/ ) ) {
       $RefusedAuthentication{$Reason}++;
-   } elsif ( my ($Host,$Reason) = ($ThisLine =~ /^Received disconnect from ([^ ]*) port [^ ]*: (.*)$/)) {
+   } elsif ( my ($Host,$Reason) = ($ThisLine =~ /^Received disconnect from ([^ ]*)(?: port [^ ]*)?: (.*)$/)) {
       # Reason 11 (SSH_DISCONNECT_BY_APPLICATION) is expected, and logged at severity level INFO
       if ($Reason != 11) {$DisconnectReceived{$Reason}{$Host}++;}
    } elsif ( my ($Host) = ($ThisLine =~ /^ROOT LOGIN REFUSED FROM ([^ ]*)$/)) {

・設定の確認 (stdout 端末に表示)

# cd ~
[root@jupiter:~]
# logwatch --service sshd --detail 10 --range today
# logwatch --service sshd --range all

○http-errorログの調整

:/etc/logwatch/conf/logfiles/http-error.conf

・既存の設定ファイルをコピーして使います

# cd /usr/share/logwatch/default.conf/logfiles
[root@jupiter:/usr/share/logwatch/default.conf/logfiles]
# cp http-error.conf /etc/logwatch/conf/logfiles

・ApplyhttpDateフィルターをかけない

・省略

# Keep only the lines in the proper date range...
# *ApplyhttpDate
# or use a custom time filter:
# *ApplyStdDate = "\[%a %b %d %H:%M:%S %Y\]"

・省略

:/etc/logwatch/conf/services/http-error.conf

・既存の設定ファイルをコピーして使います

# cd /usr/share/logwatch/default.conf/services
[root@jupiter:/usr/share/logwatch/default.conf/services]
# cp http-error.conf /etc/logwatch/conf/services

・"does no exist"メッセージを無視します
・"not found"メッセージを無視します (追記)

・省略

# Ignore all "does not exist" messages
$ignore_not_exist_all = Yes

# Ignore "does not exist" messages with no "referer:" tag
$ignore_not_exist_no_referer = Yes

# Ignore all "not found" messages
$ignore_not_found_all = Yes

:/etc/logwatch/scripts/services/http-error

・既存の設定ファイルをコピーして使います

# cd /usr/share/logwatch/scripts/services
[root@jupiter:/usr/share/logwatch/scripts/services]
# cp http-error /etc/logwatch/scripts/services

・apache-2.4の場合、date_formatにマイクロ秒が出力されます
・解析が必要な場合は、httpd.conの"ErrorLogFormat"で修正します
・禁止している画像ファイルへのダイレクトアクセスのエラーを無視します
・"not found"メッセージを無視します (追記)
・ー部分を除き、+部分 をエディタで追加します(+は書き込まない)

--- http-error.orig	2016-03-03 15:46:19.442469000 +0900
+++ http-error	2016-03-14 07:49:15.000000000 +0900
@@ -36,6 +36,7 @@ my $filter = TimeFilter($date_format);
 my $detail = exists $ENV{'LOGWATCH_DETAIL_LEVEL'} ? $ENV{'LOGWATCH_DETAIL_LEVEL'} : 0;
 my $Ignore_not_exist_all = $ENV{'ignore_not_exist_all'} || 0;
 my $Ignore_not_exist_no_referer = $ENV{'ignore_not_exist_no_referer'} || 0;
+my $Ignore_not_found_all = $ENV{'ignore_not_found_all'} || 0;
 
 # we do not use any Date:: package (or strptime) as they are probably not available
 my %month2num = ( Jan => 0, Feb => 1, Mar => 2, Apr => 3,
@@ -46,9 +47,9 @@ my %month2num = ( Jan => 0, Feb => 1, Ma
 # first element: catorory name 
 # second element: matching regexp ($1 should contain the message)
 # third element: anonymous hash ref (stores message  counts)
-my @message_categories = (['Errors', qr/\[error\] (.*)$/o, {}],
-			  ['Warnings', qr/\[warn\] (.*)$/o, {}],
-			  ['Notices', qr/\[info\] (.*)$/o, {}]);
+my @message_categories = (['Errors', qr/\[.*error\] (.*)$/o, {}],
+			  ['Warnings', qr/\[.*warn\] (.*)$/o, {}],
+			  ['Notices', qr/\[.*notice\] (.*)$/o, {}]);
 
 # skipping categories depending on detail level
 pop(@message_categories) if $detail < 10; 
@@ -59,11 +60,16 @@ while(<>) {
     my $line = $_;
     # skip PHP messages (have a separate script)
     next if $line =~ / PHP (Warning|Fatal error|Notice):/o;
+    # skipping messages (access to image file not permitted)
+    next if $line =~ /(\.gif|\.png|\.jpg)/o;
     # Ignore does not exist messages if asked
     if ($line =~ /does not exist:/o) {
        next if $Ignore_not_exist_all;
        next if $Ignore_not_exist_no_referer and $line !~ /, referer: /o;
     }
+    if ($line =~ /not found/o) {
+       next if $Ignore_not_found_all;
+    }
     # skipping messages that are not within the requested range
     next unless $line =~ /^\[($filter)\]/o;
     $1 =~ /(\w+) (\w+) (\d+) (\d+):(\d+):(\d+) (\d+)/;

:/etc/logwatch/scripts/logfiles/http-error/applyhttpdate

# mkdir -p /etc/logwatch/scripts/logfiles/http-error
# cd /usr/share/logwatch/scripts/shared
[root@jupiter:/usr/share/logwatch/scripts/shared]
# cp applyhttpdate /etc/logwatch/scripts/logfiles/http-error

・httpdのerror_logの日付フォーマットに合わせます

・省略

$SearchDate = TimeFilter('%a %b %d %H:%M:%S %Y');

・省略

・設定の確認 (stdout 端末に表示)

# cd ~
[root@jupiter:~]
# logwatch --service http-error --detail 10 --range today
# logwatch --service http-error --range all

○cronでの定期的実行

:/etc/cron.daily/0logwatch

#!/bin/sh

#Set logwatch location
LOGWATCH_SCRIPT="/usr/sbin/logwatch"

・省略

OPTIONS="--output mail"

#Call logwatch
$LOGWATCH_SCRIPT $OPTIONS

exit 0

○selinuxヘの対応 (selinuxが有効の場合)

・新規インストールファイルのselinuxラベルを修正

[root@jupiter:~]
# restorecon -Rv /etc



○logwatchメールのMIMEエンコード (参考)

・MIMEエンコードの"charset"をlogwatch.confの"mail_charset"の値で変更します
・logwatch.plスクリプトに手を加えます ("mail_charset"の値を読み込む)
+部分 をエディタで追加します(+は書き込まない)

:/usr/share/logwatch/scripts/logwatch.pl

--- logwatch.pl.orig	2016-03-14 07:43:12.955599000 +0900
+++ logwatch.pl	2016-03-14 08:28:02.084322489 +0900
@@ -1171,6 +1171,8 @@ sub initprint {
          #Config{output} html
          if ( $Config{'format'} eq "html" ) {
             $out_mime .= "Content-Type: text/html; charset=\"iso-8859-1\"\n\n";
+         } elsif ((defined $Config{mail_charset}) && ($Config{mail_charset} ne "")) {
+            $out_mime .= "Content-Type: text/plain; charset=\"$Config{mail_charset}\"\n\n";
          } else {
             $out_mime .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n\n";
          }

:/etc/logwatch/conf/logwatch.conf

・省略

mail_charset = "utf-8"
#mail_charset = "iso-2022-jp"

・省略


○ Copyright(c) 528p.com All Rights Reserved.