1. logrotate 설치정보 확인 (CentOS에서는 기본으로 설치되어 있음)
[root@moon]# rpm -qa | grep logrotate
logrotate-3.7.4-12
[root@moon]# rpm -ql logrotate
/etc/cron.daily/logrotate // cron.daily 디렉토리에 포함되어 하루에 한번 실행 됩니다.
/etc/logrotate.conf
/etc/logrotate.d
/usr/sbin/logrotate
/usr/share/doc/logrotate-3.7.4
/usr/share/doc/logrotate-3.7.4/CHANGES
/usr/share/man/man8/logrotate.8.gz
/var/lib/logrotate.status
2. logrotate 환경설정
2-1. 로그로테이트 환경 설정 파일에 대한 설명 입니다.
[root@moon]# cat /etc/logrotate.conf
# see “man logrotate” for details
# rotate log files weekly
weekly // 로그파일을 변경할 기간을 설정합니다.
daily : 매일 변경
weekly : 매주 변경
monthly : 매달 변경
yearly : 매년 변경
# keep 3 weeks worth of backlogs
rotate 4 // 순환될 파일의 개수를 설정합니다. 0부터 시작하게 되며 위에서 weekly로 설정 시 4주간 보관합니다.
# create new (empty) log files after rotating old ones
create // 로그파일을 백업하고 새로운 파일을 생성할 것인지 설정합니다.
# uncomment this if you want your log files compressed
#compress // 순환(백업)된 로그파일을 압축하도록 변경합니다. 주석을 해제하면 백업
파일을 gzip으로 압축 합니다.
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d // 로그 순환 정보를 가진 파일들이 저장된 디렉토리를 불러옵니다. 이 디렉토리에 있는 파일들이 모두 포함됩니다.
# no packages own wtmp — we’ll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp //소유자 root, 그룹 utmp
rotate 6
} // wtmp (접속로그파일, 명령어 last)에 대한 설정을 합니다. 한달 단위로 순환을 하
며 백업은 한달을 보관하고, 백업파일은 root 사용자와 utmp그룹의 소유로644퍼미션
부여합니다.
# system-specific logs may be also be configured here.
2-2 /etc/logrotate.d 디렉토리에 내용을 추가하여 파일로 만들어 사용합니다. 대표적으로 몇개만 살펴보겠습니다.
[root@moon]# cat /etc/logrotate.d/yum
/var/log/yum.log {
missingok // 로그파일이 없어도 그냥 진행합니다.
notifempty // 로그파일이 비어있는 경우 순환을 하지 않습니다.
size 30k // 로그파일의 크기가 30k를 넘으면 순환합니다. 단위 K, M 사용이 가능합니다.
yearly
create 0600 root root // 순환되어 생성된 파일을 root 소유자 및 그룹으로 설정하
고 600퍼미션을 부여합니다.
}
[root@moon]# cat /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler
/var/log/boot.log /var/log/cron {
sharedscripts // 와일드카드로 지정된 여러파일에 적용 합니다.
postrotate // logrotate 작업 이후에 지정된 작업(스크립트)를 실행 합니다. 시작점
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
endscript // 종료점
}
2-3. 위에서 안내하지 못한 옵션에 대한 설명
1) compress : 순환(백업)된 로그파일을 압축합니다.
1) nocompress : 순환된 로그파일을 압축하지 않습니다. (기본값)
1) compresscmd : gzip 이외의 압축 프로그램을 지정 합니다.
1) uncompresscmd : 압축해제 명령을 지정합니다. 디폴트는 gunzip 입니다.
1) compressext : 압축된 백업 로그파일에 지정할 확장자를 설정 합니다.
1) compressoptions : 압축 프로그램에 옵션을 설정 합니다. 디폴트로 gzip인 경우 ‘-9′
지정. (-9 옵션은 압축률 최대로)
1) dateext : 매일 처리되는 로그파일에 YYYYMMDD 형식으로 확장자를추가 합니다.
1) error [] : logrotate 작업시에 에러가 발생한다면 지정된 메일주소로 메일을 보냅니다.
1) extention : 순환된 로그파일의 확장자를 지정 합니다.
1) ifempty : 로그파일이 비어있는 경우에도 순환(로테이트)처리 합니다. (기본값)
1) noifempty : 로그파일이 비어있는 경우 순환(로테이트)처리 하지 않습니다.
1) mail [] : logrotate 작업 이후에 이전로그파일을 지정된 메일주소로 메일을 발송합니
다. (특정한 경우의 포르가일은 보내지 않을 수 있습니다.)
1) nomail : 메일을 발송하지 않습니다.
1) mailfirst [] : logrotate 작업시 신규파일 이전의 로그파일을 지정된 메일주소로 메일
을 발송합니다.
1) maxage [] : count로 지정된 날수가 지난 백업 로그파일을 삭제 합니다.
1) missingok : 로그파일이 없을 경우에도 에러로 처리하지 않습니다.
1) prerotate / endscript : logrotate 작업 이전에 지정된 작업(스크립트)를 실행 합니다.
2-4. 기본예제
apache 모든 log 파일
– 주기 : 매일 또는 로그 용량이 10M 가 되었을때
– 결과 : 파일 백업 후, 새 로그파일 생성
– 보관 : 3개 까지 보관
# vi /etc/logrotate.d/apache
/usr/local/apache/logs/*_log {
daily
rotate 3
size=10M
missingok
create 0600 root root
postrotate
/bin/kill -HUP `cat /usr/local/apache/logs/httpd.pid 2>/dev/null` 2> /dev/null || true
endscript
}
위의 내용을 logrotate.conf 에 추가를 하거나, logrotate.d 디렉토리에 파일로 만들면 됩니다.
위의 apache 로그는 용량에 따라 rotation이 일어난다.
3. 디폴트 로그 순환 상태 파일 확인
[root@moon]# cat /var/lib/logrotate.status
4. 실행 TEST
cron 설정으로 매일 또는 일정 시간에 실행 되도록 합니다. (기본 설정)
강제 실행으로 정상적으로 작동하는지 바로 확인이 가능합니다.
> 로그파일 용량 보다 작게 설정하여 (사이즈 변경) 실행하면 확인이 쉽습니다.
# logrotate -f /etc/logrotate.d/apache
[root@moon]# rpm -qa | grep logrotate
logrotate-3.7.4-12
[root@moon]# rpm -ql logrotate
/etc/cron.daily/logrotate // cron.daily 디렉토리에 포함되어 하루에 한번 실행 됩니다.
/etc/logrotate.conf
/etc/logrotate.d
/usr/sbin/logrotate
/usr/share/doc/logrotate-3.7.4
/usr/share/doc/logrotate-3.7.4/CHANGES
/usr/share/man/man8/logrotate.8.gz
/var/lib/logrotate.status
2. logrotate 환경설정
2-1. 로그로테이트 환경 설정 파일에 대한 설명 입니다.
[root@moon]# cat /etc/logrotate.conf
# see “man logrotate” for details
# rotate log files weekly
weekly // 로그파일을 변경할 기간을 설정합니다.
daily : 매일 변경
weekly : 매주 변경
monthly : 매달 변경
yearly : 매년 변경
# keep 3 weeks worth of backlogs
rotate 4 // 순환될 파일의 개수를 설정합니다. 0부터 시작하게 되며 위에서 weekly로 설정 시 4주간 보관합니다.
# create new (empty) log files after rotating old ones
create // 로그파일을 백업하고 새로운 파일을 생성할 것인지 설정합니다.
# uncomment this if you want your log files compressed
#compress // 순환(백업)된 로그파일을 압축하도록 변경합니다. 주석을 해제하면 백업
파일을 gzip으로 압축 합니다.
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d // 로그 순환 정보를 가진 파일들이 저장된 디렉토리를 불러옵니다. 이 디렉토리에 있는 파일들이 모두 포함됩니다.
# no packages own wtmp — we’ll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp //소유자 root, 그룹 utmp
rotate 6
} // wtmp (접속로그파일, 명령어 last)에 대한 설정을 합니다. 한달 단위로 순환을 하
며 백업은 한달을 보관하고, 백업파일은 root 사용자와 utmp그룹의 소유로644퍼미션
부여합니다.
# system-specific logs may be also be configured here.
2-2 /etc/logrotate.d 디렉토리에 내용을 추가하여 파일로 만들어 사용합니다. 대표적으로 몇개만 살펴보겠습니다.
[root@moon]# cat /etc/logrotate.d/yum
/var/log/yum.log {
missingok // 로그파일이 없어도 그냥 진행합니다.
notifempty // 로그파일이 비어있는 경우 순환을 하지 않습니다.
size 30k // 로그파일의 크기가 30k를 넘으면 순환합니다. 단위 K, M 사용이 가능합니다.
yearly
create 0600 root root // 순환되어 생성된 파일을 root 소유자 및 그룹으로 설정하
고 600퍼미션을 부여합니다.
}
[root@moon]# cat /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler
/var/log/boot.log /var/log/cron {
sharedscripts // 와일드카드로 지정된 여러파일에 적용 합니다.
postrotate // logrotate 작업 이후에 지정된 작업(스크립트)를 실행 합니다. 시작점
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
endscript // 종료점
}
2-3. 위에서 안내하지 못한 옵션에 대한 설명
1) compress : 순환(백업)된 로그파일을 압축합니다.
1) nocompress : 순환된 로그파일을 압축하지 않습니다. (기본값)
1) compresscmd : gzip 이외의 압축 프로그램을 지정 합니다.
1) uncompresscmd : 압축해제 명령을 지정합니다. 디폴트는 gunzip 입니다.
1) compressext : 압축된 백업 로그파일에 지정할 확장자를 설정 합니다.
1) compressoptions : 압축 프로그램에 옵션을 설정 합니다. 디폴트로 gzip인 경우 ‘-9′
지정. (-9 옵션은 압축률 최대로)
1) dateext : 매일 처리되는 로그파일에 YYYYMMDD 형식으로 확장자를추가 합니다.
1) error [] : logrotate 작업시에 에러가 발생한다면 지정된 메일주소로 메일을 보냅니다.
1) extention : 순환된 로그파일의 확장자를 지정 합니다.
1) ifempty : 로그파일이 비어있는 경우에도 순환(로테이트)처리 합니다. (기본값)
1) noifempty : 로그파일이 비어있는 경우 순환(로테이트)처리 하지 않습니다.
1) mail [] : logrotate 작업 이후에 이전로그파일을 지정된 메일주소로 메일을 발송합니
다. (특정한 경우의 포르가일은 보내지 않을 수 있습니다.)
1) nomail : 메일을 발송하지 않습니다.
1) mailfirst [] : logrotate 작업시 신규파일 이전의 로그파일을 지정된 메일주소로 메일
을 발송합니다.
1) maxage [] : count로 지정된 날수가 지난 백업 로그파일을 삭제 합니다.
1) missingok : 로그파일이 없을 경우에도 에러로 처리하지 않습니다.
1) prerotate / endscript : logrotate 작업 이전에 지정된 작업(스크립트)를 실행 합니다.
2-4. 기본예제
apache 모든 log 파일
– 주기 : 매일 또는 로그 용량이 10M 가 되었을때
– 결과 : 파일 백업 후, 새 로그파일 생성
– 보관 : 3개 까지 보관
# vi /etc/logrotate.d/apache
/usr/local/apache/logs/*_log {
daily
rotate 3
size=10M
missingok
create 0600 root root
postrotate
/bin/kill -HUP `cat /usr/local/apache/logs/httpd.pid 2>/dev/null` 2> /dev/null || true
endscript
}
위의 내용을 logrotate.conf 에 추가를 하거나, logrotate.d 디렉토리에 파일로 만들면 됩니다.
위의 apache 로그는 용량에 따라 rotation이 일어난다.
3. 디폴트 로그 순환 상태 파일 확인
[root@moon]# cat /var/lib/logrotate.status
4. 실행 TEST
cron 설정으로 매일 또는 일정 시간에 실행 되도록 합니다. (기본 설정)
강제 실행으로 정상적으로 작동하는지 바로 확인이 가능합니다.
> 로그파일 용량 보다 작게 설정하여 (사이즈 변경) 실행하면 확인이 쉽습니다.
# logrotate -f /etc/logrotate.d/apache