리눅스 서버 운영을 하다 보면, 기본적인 OS 시스템 관련 Log는 자동으로 압축과 자동 생성이 된다. 그러나 WAS나 별도 어플리케이션의 로그는 수동으로 설정해줘서 한 개의 Log 파일에 쌓이지 않게 한다.(1개 파일의 log로 운영할 경우 vi 편집시 메모리 부족 발생)
- logrotate는 리눅스 시스템에서 로그 파일을 자동으로 관리하고 로그의 크기를 제한하여 디스크 공간을 효과적으로 관리하는 도구
- 로그 파일의 크기가 지정된 값 이상이 되면, 해당 파일을 새로운 파일로 전환하고 이전 로그 파일을 보관
- 로그 파일이 로테이션될 때 압축 옵션을 사용하여 이전 로그 파일을 압축
/etc/logrotate.d/appfile /test_home/test/svrlogs/nohup/Server.out { copytruncate missingok daily create 0644 test Adm rotate 30 dateext }
weekly
rotate 4
create
include /etc/logrotate.d/*weekly: 로그를 주간 주기로 로테이션합니다.
rotate 4: 이전 로그 파일을 최대 4개까지 유지합니다.
create: 새로운 로그 파일을 생성합니다
/var/log/nginx/.log {
daily
rotate 7
missingok
notifempty
delaycompress
compress
postrotate
systemctl reload nginx
endscript
}
/var/log/nginx/.log: 해당 경로에 있는 모든 로그 파일에 대해 적용합니다.
daily: 로그를 일간 주기로 로테이션합니다.
rotate 7: 이전 로그 파일을 최대 7개까지 유지합니다.
missingok: 해당 경로에 로그 파일이 없는 경우 경고하지 않습니다.
notifempty: 빈 로그 파일은 로테이션하지 않습니다.
delaycompress: 압축을 지연시킵니다.
compress: 로그 파일을 압축합니다.
postrotate ... endscript: 로테이션 이후에 실행할 스크립트를 정의합니다. 여기서는 Nginx 서버를 다시 불러오는 명령을 실행하도록 설정되어 있습니다.
Logrotate 설치 확인
[root@ServerA]# rpm -qa | grep logrotate
Logrotate-3.7.4-9.el5_5.2
Logrotate 환경설정 파일
[root@ServerA]# cat /etc/logrotate.conf
weekly
rotate 4
create
#compress
include /etc/logrotate.d
/var/log/wtmp {
monthly
minsize 1M
create 0664 root utmp
rotate 1
}
Rotate log files weekly
로그파일 순환 기간 설정 (yearly : 매년, monthly : 매달, weekly : 매주, daily : 매일)
Keep 4 weeks worth of backlogs
순환될 파일의 개수를 설정 (최소값은 0)
예를 들어 위에서 weekly로 설정하고 rotate 4를 주게 되면 4주간 보관한 뒤 순환하게 되며, daily로 설정하고 rotate 15를 주게 되면 15일간 보관한 뒤 순환하게 된다는 의미
create new (empty) log files after rotating old ones
로그파일을 백업하고 새로운 파일을 생성할 것인지를 설정
uncomment this if you want your log files compressed
순환된 로그파일을 압축할 것인지를 설정
RPM packages drop log rotation information into this directory
순환정보를 가진 디렉토리를 불러옴
no packages own wtmp - we’ll rotate them here
/var/log/wtmp의 로그설정을 하며, monthly, rotate 1, minsize 1M이므로 한 달에 한번 로그파일용량이 1M가 되면 순환되게 하며 백업파일은 root 사용자의 utmp그룹의 소유로 퍼미션 644를 부여