logwatch配置

logwatch 是一个日志分析工具,它根据用户设定的频率来分析日志并给指定用户发送邮件。同样,可以使用 emerge 安装。安装完成后,默认的配置文件在 /usr/share/logwatch/default.conf/logwatch.conf。用户自定义的配置文件在 /etc/logwatch/。将 /usr/share/logwatch/default.conf/logwatch.conf 复制到 /etc/logwatch/,并稍加修改即可使用。一些典型配置选项如下

LogDir = /var/log                    #logwatch 会去 /var/log 找你定义的 log 文件
TmpDir = /var/cache/logwatch   #缓存目录
Output = mail                         #输出形式为 mail
MailTo = root                          #发送给 root
MailFrom = Logwatch                #邮件发送者
Range = yesterday                    #处理什么时候的日志 , 可选项  All , Yesterday , Today 
Detail = High                           #日志详细度, 可选项 Low , Med , High , 或是 0-10数字
Print = No                              #可选项, Yes 会被打印到系统标准输出, 并且不会以邮件的形式发送到 MailTo 设定的邮箱里 , No 选项则会发到邮箱中
Server = All                             #监控所有服务 all
mailer = "/usr/sbin/sendmail -t"

logwatch 是用 cron 来执行的,在 /etc/cron.daily 目录下,有 logwatch 执行脚本。

logrotate配置

logrotate被设计用来整理归档日志文件。想象一下,如果配置好 syslog-ng 后,就再也不对日志进行管理,那么/var/log目录下的日志文件将会越来越大,变得难以读取和分析。基于此,产生了logrotate。logrotate 的主要功能是将旧的日志备份,并产生新的日志文件继续记录,到达用户规定的备份数量之后,就将其删除。它的原理可以用下图描述
114058_BzHM_1161070
配置文件包括/etc/logrotate.conf和/etc/logrotate.d/。前者是针对整体设定,后者是针对具体 daemon 设定。

/etc/logrotate.conf

#每周备份
weekly
#保留四个文件
rotate 4
#每次建立新的日志记录档案
create
#是否启用压缩
#compress
 
#将 logrotate.d 目录内的档案读取进来进行 rotate
include /etc/logrotate.d
 
#仅针对 wtmp 的设定
/var/log/wtmp{
    monthly
    size 1M
    create 0664 root utmp
    rotate 1
}

虽然可以将所有的 logrotate 工作都记录到 logrotate.conf 档案内,但是由于系统存在很多 dameon,这样会使 logrotate.conf 档案显得冗长,而且不方便服务的管理。所以建议对于每个服务,建立单独的 logrotate 文件并放在 /etc/logrotate.d 目录内。

total 92
-rw-r--r-- 1 root root 144 Jun  8  2009 acpid
-rw-r--r-- 1 root root 288 Jun 28  2007 conman
-rw-r--r-- 1 root root  71 Jun  9  2009 cups
-rw-r--r-- 1 root root 571 Aug 21  2006 mgetty
-rw-r--r-- 1 root root 136 Aug 12  2008 ppp
-rw-r--r-- 1 root root 442 Jul 16  2008 psacct
-rw-r--r-- 1 root root  61 Jul 24  2009 rpm
-rw-r--r-- 1 root root 154 Aug 24  2009 snmpd
-rw-r--r-- 1 root root 213 Sep  1  2010 syslog-ng
-rw-r--r-- 1 root root 198 Nov 27  2012 tsar
-rw-r--r-- 1 root root  32 Apr 22  2009 up2date
-rw-r--r-- 1 root root 100 Dec  4  2008 wpa_supplicant
-rw-r--r-- 1 root root 100 Jul  8  2009 yum

这样,就可以利用 logrotate 进行日志档案的备份工作了。logrotate 默认是利用 cron 来进行工作的,在 /etc/cron.weekly 或/etc/cron.daily 目录下,有一个名为 logrotate 的脚本,内容是

#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

所以,在每周执行 cron 的时候,都会运行 logrotate 脚本,它读取 logrotate.conf 对日志进行备份。