REDIS 같은 경우 로그 파일이 하나의 파일로 계속 쌓인다.
logrotate를 통해 log를 날짜별로 rotation 해보자.
logrotate의 기본 설정 값을 /etc/logrotate.conf 에 있다.
# vi /etc/logrotate.conf
그리고 각각의 logrotate 설정은 /etc/logrotate.d 폴더 아래에 구성한다.
대략 아래와 같은 구조
# ll /etc/logrotate.d/
total 24
-rw-r--r-- 1 root root 103 Dec 10 22:28 dracut
-rw-r--r-- 1 root root 329 Jan 15 2011 psacct
-rw-r--r-- 1 root root 210 Sep 9 23:46 syslog
-rw-r--r-- 1 root root 287 Jan 14 23:41 varnish
-rw-r--r-- 1 root root 100 Oct 17 19:02 yum
Redis 로그를 rotate 설정하려면 /etc/logrotate.d 폴더에 redis라는 이름으로 파일을 만들면 된다.
(Redis 로그가 저장되는 실제 파일 위치가 /log/redis/redis.log 로 설정되어있다고 하자)
# vi /etc/logrotate.d/redis
/log/redis/redis.log {
daily
rotate 30
copytruncate
delaycompress
compress
dateext
notifempty
missingok
}
log rotate를 강제 갱신해보자. (옵션 -f)
# /usr/sbin/logrotate -vf /etc/logrotate.conf
Redis 로그가 저장되는 폴더(/log/redis)를 조회해보면 날짜별 로그가 만들어졌다.
# ll
total 4152
-rw-r--r-- 1 root root 0 Mar 4 02:40 redis.log
-rw-r--r-- 1 root root 4250332 Mar 4 02:40 redis.log-20140304
logrotate.status 를 조회해보면 진행 정보를 확인할 수 있다.
# vi /var/lib/logrotate.status
logrotate state -- version 2
"/var/log/yum.log" 2014-3-4
"/var/log/dracut.log" 2014-3-4
"/var/log/wtmp" 2014-3-4
"/var/log/spooler" 2014-3-4
"/var/log/btmp" 2014-3-4
"/var/log/varnish/*.log" 2013-8-7
"/var/log/maillog" 2014-3-4
"/log/redis/redis.log" 2014-3-4
"/var/log/secure" 2014-3-4
"/var/log/messages" 2014-3-4
"/var/log/cron" 2014-3-4
"/var/account/pacct" 2013-8-6
logrotate의 /etc/cron.daily/logrotate 스크립트에서 의해 구동되고, 주기는 매일 오전 4시(4am)가 기본값이다.
따라서, 시간대나 주기를 변경하고 싶다면 cron job에 별도로 설정을 하면 된다.
방법은?
/etc/cron.daily/logrotate 파일을 다른 폴더에 이동하고 이름은 logrotate.sh 로 변경한다.
그리고 /etc/cron.d/ 아래에 0 23 * * * root /path/to/logrotate.sh 이런 식으로 cron job 을 설정하면 된다.
참고:
http://articles.slicehost.com/2010/6/30/understanding-logrotate-on-centos-part-1
http://articles.slicehost.com/2010/6/30/understanding-logrotate-on-centos-part-2