logrotate 설정

곽동규·2024년 4월 30일

logrotate란?

logrotate는 리눅스 시스템에서 로그 파일의 관리를 자동화하는 유틸리티입니다. 시스템이나 애플리케이션은 작업을 수행하면서 로그 파일에 정보를 기록하는데, 이 파일들이 시간이 지남에 따라 계속 커지면 디스크 공간을 과도하게 사용하게 되고, 관리가 어려워집니다. logrotate는 이러한 로그 파일들을 주기적으로 회전시켜(rotate), 관리하고, 저장 공간을 효율적으로 사용할 수 있도록 도와줍니다.

주요 기능

로그 파일 회전: logrotate는 로그 파일이 일정 크기에 도달하거나 특정 기간이 지나면 로그 파일을 회전시킵니다. 예를 들어, 기존 로그 파일을 아카이브하고 새로운 로그 파일을 시작할 수 있습니다.
압축: 회전된 로그 파일을 압축하여 디스크 공간을 절약할 수 있습니다. 일반적으로 gzip을 사용해 압축합니다.
자동 삭제: 설정에 따라 오래된 로그 파일을 자동으로 삭제하여 디스크 공간을 유지 관리할 수 있습니다.
스크립트 실행: 로그 파일을 회전시키기 전후에 사용자 정의 스크립트를 실행할 수 있습니다. 이를 통해 로그 파일을 처리하는 과정을 더욱 유연하게 구성할 수 있습니다.

구성 파일

logrotate의 동작은 /etc/logrotate.conf와 /etc/logrotate.d/ 디렉토리 안의 구성 파일을 통해 제어됩니다. logrotate.conf 파일은 전역 설정을 포함하며, /etc/logrotate.d/ 디렉토리에는 각각의 애플리케이션별 설정 파일이 있을 수 있습니다.

설정 예시

[tomcat catalina.out 파일 logrotate 설정]
catalina.out 파일은 순환되지 않고, 해당 파일에 계속해서 log가 쌓여 시스템에 문제를 야기할 수 있다.

1. catalina.out 파일 위치 확인

# pwd
/data/tomcat/logs/catalina.out

2./etc/logrotate.d/tomcat 생성

# vi /etc/logrotate.d/tomcat

/data/tomcat/logs/catalina.out {
    copytruncate      # 로그 파일을 복사하고 원본을 잘라서 비움 (Tomcat 계속 로깅 가능)
    daily             # 매일 로그를 회전
    rotate 30         # 로그 파일30개 보관
    missingok         # 로그 파일이 없어도 에러 없이 진행
    notifempty        # 로그 파일이 비어 있으면 로테이트 하지 않음
    dateext           # 로그 파일에 날짜 확장자 추가
    create 644 tomcat tomcat # 파일 소유자 권한 설정
}

3. logrotate 실행

# logrotate -f /etc/logrotate.d/tomcat 

강제 실행하여도 서비스에는 영향이 없는것을 확인.

0개의 댓글