apache log rotate 시키기
2012.08.14 19:22
원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어
Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어
+++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
rpm 으로 설치되어있는 log rotate를 사용하여 각종 로그 rotate 시키기.
1. rpm 설치 확인
# rpm -qa | grep logrotate
2. 로그 대상 확인 (소스컴파일된 아파치)
: /usr/local/apache/logs/*log
3. log rotate 설정
# cd /etc/logrotate.d
# ls
acpid   cyrus-imapd  mgetty  privoxy  radiusd    samba           squid    tux      vsftpd.log
conman  exim         kdm            named   psacct   rpm        setroubleshoot  syslog   up2date  wpa_supplicant
cups    httpd        mailman        ppp     quagga   sa-update  snmpd           tomcat5  uucp     yum
   -- 기존설정 파일을 하나 복사해서 사용할 것임
# cp httpd apache-log
# vi apache-log
/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    postrotate
        /sbin/service httpd reload > /dev/null 2>/dev/null || true                 : 여기는 rpm 설치된 아파치를 위해서 설정된 부분임.
    endscript                                                                                               소스컴파일된 아파치를 reload 시킬수 없으므로 수정
}
--> 다음과 같이 수정
/usr/local/apache/logs/*_log {
    missingok
    notifempty
    sharedscripts
    daily                                    : 매일 
    rotate 90                              : 90일간
    postrotate
        /bin/kill -HUP `cat /usr/local/apache/logs/httpd.pid 2 > /dev/null` 2 > /dev/null || true    : 아파치 reload
    endscript
}
4. 테스트
# logrotate -d /etc/logrotate.conf
설정오류가 있다면 여기서 오류가 남.
* 참고
이 logrotate 설정은 다음 설정파일에 의해서 매일 동작한다.
# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
logrotate는 위 디렉토리들에 모두 등록되어있으므로 daily 설정이라면 매일 04시 02분에 동작할 것이다.