logrotate란?
logrotate
는 리눅스와 유닉스 계열 시스템에서 로그 파일을 관리하는 데 사용되는 표준 유틸리티입니다. 시스템의 로그 파일은 시간이 지남에 따라 크기가 계속 증가할 수 있으므로, logrotate
를 사용하여 로그 파일을 자동으로 회전(rotate), 압축, 삭제, 메일 전송 등을 할 수 있습니다. 이를 통해 디스크 공간을 절약하고 로그 파일의 관리를 용이하게 합니다.
주요 기능
- 로그 회전:
logrotate
는 정해진 크기에 도달하거나 특정 기간이 지나면 로그 파일의 이름을 변경하고 새로운 로그 파일을 생성합니다. 예를 들어, messages.log
파일이 주기적으로 messages.log.1
, messages.log.2
등으로 이름이 바뀌고 새로운 messages.log
파일이 생성됩니다.
- 압축: 로그 파일을 회전시킨 후, 옵션에 따라 이전 로그 파일들을 gzip과 같은 도구를 사용하여 압축할 수 있습니다.
- 정책 설정:
logrotate
를 통해 로그 파일이 보관될 기간, 로그 파일의 최대 개수, 압축 여부 등을 설정할 수 있습니다.
- 자동 실행:
logrotate
는 일반적으로 cron
작업을 통해 매일 또는 매주 자동으로 실행됩니다.
- 사용자 정의 스크립트 실행: 로그를 회전하기 전후에 사용자 정의 스크립트를 실행하여 복잡한 로그 처리 요구사항을 충족시킬 수 있습니다.
설정 내용
logrotate
의 구성은 일반적으로 /etc/logrotate.conf
파일과 /etc/logrotate.d/
디렉토리 안의 다양한 구성 파일을 통해 이루어집니다. /etc/logrotate.conf
는 글로벌 설정을 정의하고, /etc/logrotate.d/
디렉토리 안의 파일들은 개별 서비스나 애플리케이션에 대한 구체적인 로그 회전 설정을 담고 있습니다.
- 각 로그 파일 또는 디렉토리에 대한 설정은 다음과 같은 지시어를 포함할 수 있습니다:
daily
, weekly
, monthly
: 로그 파일이 회전되는 주기를 설정합니다.
rotate <count>
: 로그 파일이 유지될 세대(generation)의 수를 설정합니다.
size <size>
: 로그 파일이 특정 크기에 도달하면 회전합니다.
compress
: 오래된 로그 파일을 압축합니다.
missingok
: 로그 파일이 없어도 에러를 발생시키지 않습니다.
notifempty
: 비어 있지 않은 경우에만 로그 파일을 회전합니다.
create <mode> <owner> <group>
: 새 로그 파일을 지정된 모드, 소유자, 그룹으로 생성합니다.
postrotate/endscript
: 로그 회전 후에 실행할 스크립트를 정의합니다.
사용 방법
# 기본 설정 파일을 사용하여 logrotate를 실행합니다.
logrotate /etc/logrotate.conf
# 강제로 로그 파일을 회전합니다.
logrotate --force /etc/logrotate.conf
# 디버그 모드를 사용하여 로그 회전을 테스트합니다.
logrotate --debug /etc/logrotate.conf
설정 파일
# /etc/logrotate.conf 또는 /etc/logrotate.d/에 위치할 수 있는 사용자 정의 설정 파일 예시
# 로그 파일 경로
/var/log/myapp/*.log {
# 매일 로그 파일을 회전
daily
# 로그 파일을 7개까지 보관
rotate 7
# 로그 파일 압축
compress
# 로그 파일이 비어 있어도 회전
notifempty
# 로그 파일 작성 프로그램에게 새 로그 파일을 사용하도록 알림
create 640 root adm
# 로그 파일 회전 후 실행할 스크립트 또는 명령
postrotate
/usr/bin/killall -HUP myapp
endscript
}
# 또 다른 로그 파일 경로
/var/log/anotherapp/*.log {
weekly
rotate 4
compress
missingok
notifempty
create 660 root adm
}
참조
https://linux.die.net/man/8/logrotate