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 对日志进行备份。

发表评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.