서버 운영 시 로그 파일이 계속 쌓여 디스크 용량을 압박하는 경우가 많습니다.
이럴 때 리눅스의 표준 로그 관리 도구인 logrotate를 활용하면 자동으로 로그 파일을 회전(rotate)하고, 오래된 로그는 압축하거나 삭제할 수 있어 관리가 매우 편리해집니다.
logrotate란?
logrotate
는 리눅스 시스템에서 로그 파일을 주기적으로 관리해주는 도구입니다.
- 로그 파일 크기 또는 날짜 기준으로 파일을 분할
- 오래된 로그를 압축하여 공간 절약
- 보관 주기와 보관 개수를 설정해 자동 삭제
logrotate 기본 동작 방식
- 설정 파일에 로그 파일 경로와 회전 정책을 작성
logrotate
가 주기적으로 실행되어 로그 파일을 백업 및 새로 생성- 필요에 따라 압축, 삭제, 권한 변경 등 추가 작업 수행
logrotate 설정 위치
- 전역 설정 파일:
/etc/logrotate.conf
- 개별 애플리케이션 설정:
/etc/logrotate.d/
디렉터리 내 파일
간단한 logrotate 설정 예시
다음은 /var/log/myapp.log
파일을 매일 회전하며, 7일간 보관하고, 오래된 로그는 압축하는 설정입니다.
/var/log/myapp.log {
daily # 매일 로그 회전
rotate 7 # 7개 로그 파일 보관
missingok # 로그 파일이 없어도 에러 안 냄
notifempty # 빈 로그 파일은 회전 안 함
compress # 오래된 로그는 gzip 압축
delaycompress # 가장 최근 로그는 압축하지 않음
copytruncate # 로그 파일을 복사 후 초기화 (프로그램 재시작 불필요)
create 0640 root adm # 새 로그 파일 권한과 소유자 설정
}
주요 옵션 설명
옵션 | 설명 |
---|---|
daily | 매일 로그 회전 |
weekly | 매주 로그 회전 |
monthly | 매월 로그 회전 |
rotate N | N개의 이전 로그 파일 보관 |
compress | 회전된 로그 파일을 gzip으로 압축 |
delaycompress | 최신 로그 제외 후 다음 회전부터 압축 |
copytruncate | 로그 파일 복사 후 원본 초기화 (서비스 재시작 없이 사용 가능) |
missingok | 로그 파일 없으면 에러 무시 |
notifempty | 로그 파일이 비어 있으면 회전하지 않음 |
create | 새 로그 파일 생성 시 권한과 소유자 설정 |
logrotate 테스트와 강제 실행
- 설정 테스트(시뮬레이션)
sudo logrotate -d /etc/logrotate.d/myapp
- 강제 실행
sudo logrotate -f /etc/logrotate.d/myapp
logrotate 자동 실행
대부분 리눅스 배포판에서는 /etc/cron.daily/logrotate
스크립트가 매일 자동으로 실행되어,/etc/logrotate.conf
와 /etc/logrotate.d/
내 설정을 기반으로 로그를 관리합니다.
마무리
logrotate
는 리눅스 서버 운영 시 로그 관리를 자동화하는 가장 기본적이고 강력한 도구입니다.
적절한 설정을 통해 서버 디스크 용량 문제를 예방하고, 로그를 효율적으로 관리해보세요!