1、logrotate简介
日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到。对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题。除此之外,处理一个单个的庞大日志文件也常常是件十分棘手的事。
logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预。另外,旧日志也可以通过电子邮件发送。
2、logrotate安装
主流Linux发行版上都默认安装有logrotate包,如果出于某种原因,logrotate没有出现在里头,你可以使用
yum install logrotate crontabs ##本文只讲述centos的版本,其他系统版本请自行查询
3、logrotate的配置文件
A、logrotate.conf
logrotate的主要配置文件是/etc/logrotate.conf,通常不需要对它进行修改。
1 [root@localhost logrotate.d]# cat /etc/logrotate.conf 2 # see "man logrotate" for details 3 # rotate log files weekly 4 weekly 5 6 # keep 4 weeks worth of backlogs 7 rotate 4 8 9 # create new (empty) log files after rotating old ones 10 create 11 12 # use date as a suffix of the rotated file 13 dateext 14 15 # uncomment this if you want your log files compressed 16 #compress 17 18 # RPM packages drop log rotation information into this directory 19 include /etc/logrotate.d 20 21 # no packages own wtmp and btmp -- we‘ll rotate them here 22 /var/log/wtmp { 23 monthly 24 create 0664 root utmp 25 minsize 1M 26 rotate 1 27 } 28 29 /var/log/btmp { 30 missingok 31 monthly 32 create 0600 root utmp 33 rotate 1 34 } 35 36 # system-specific logs may be also be configured here.
B、logrotate.d
日志文件的轮循设置在独立的配置文件中,它(们)放在/etc/logrotate.d/目录下。logrotate.d 是一个目录,该目录里的所有文件都会被主动的读入/etc/logrotate.conf中执行。
另外,如果 /etc/logrotate.d/ 里面的文件中没有设定一些细节,则会以/etc/logrotate.conf这个文件的设定来作为默认值。
[root@localhost logrotate.d]# cd /etc/logrotate.d/
[root@localhost logrotate.d]# ls
dracut httpd php-fpm syslog yum
C、脚本
Logrotate是基于CRON来运行的,其脚本是/etc/cron.daily/logrotate,日志轮转是系统自动完成的。
实际运行时,Logrotate会调用配置文件/etc/logrotate.conf。
可以在/etc/logrotate.d目录里放置自定义好的配置文件,用来覆盖Logrotate的缺省值。
1 [root@localhost logrotate.d]# cat /etc/cron.daily/logrotate 2 #!/bin/sh 3 4 /usr/sbin/logrotate /etc/logrotate.conf 5 EXITVALUE=$? 6 if [ $EXITVALUE != 0 ]; then 7 /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" 8 fi 9 exit 0