로그로테이트
: 지속적으로 쌓이는 로그의 크기가 무한하게 커지는 것을 방지하기 위해 로그를 분할하거나 압축 및 제거하여 관리하는 것
: 하루, 일주일, 한 달, 연 단위 혹은 크기 단위로 로테이션을 수행
: 리눅스 자체적으로 /etc/cron.daily 디렉터리에 서비스가 등록되어 스케줄링을 통해 실행됨
실행 방식
: logrotate 프로세스가 /etc/logrotate.conf를 읽고 해당 파일이 참고하는 위치 (default /etc/logrotate.d)에 위치하는 각 설정 파일들을 참고하여 매일 실행 (/etc/cron.daily)
: 설정에 따라 로그를 분할하여 압축 후 생성하거나 로그를 삭제한다 (로그 파일의 이름을 바꾸고 원래 이름의 빈 파일을 생성한다)
관련 명령어
: logrotate [option] <config file>
관련 파일
- /etc/logrotate.conf
: 로그로테이트 설정 파일
: 다른 logrotate를 읽어올 수도 있음
<log file> {
# 주기
[daily, weekly, monthly, yearly <cycle of rotates>]
# 로테이트 횟수
[rotate <number of rotates>]
# 로테이트 실행 후 비어있는 로그 파일 생성
[create <permission value> <owner> <own group>]
# 로그 파일 크기가 설정 값 보다 크고 지정한 주기가 됐을때 로테이트 수행
[minsize <1M, 100k>]
# 로그 파일 크기가 설정 값 보다 크거나 지정한 주기가 지났을때 로테이트 수행
[maxsize <1M, 100k>]
# 주기에 관계 없이 로테이트를 수행하는 로그 파일 크기
[size <1M, 100k>]
# 로테이트를 통해 새로 생성되는 파일에 날짜를 덧붙혀서 생성하는지 여부
[dateext]
# 로테이트를 통해 생성되는 파일을 압축하는지 여부
[compress]
# 설정을 참고할 로그로테이트 파일 위치
[include /etc/logrotate.d]
# 로그 파일이 존재하지 않는 경우 메시지 출력 (기본 값)
[nomissingok]
# 로그 파일이 존재하지 않아도 오류로 처리하지 않음
[missingok]
# 로테이트 시 기존 로그 파일 복사 후 제거 후 빈 파일로 생성
[copytruncate]
}
- /etc/logrotate.d/*
: 로그 로테이트로 구동되는 프로그램 설정 파일 목록 디렉터리
- /var/lib/logrotate/status
: 로그 로테이트가 구동된 기록
- /etc/cron.daily/logrotate
: 로그 로테이트가 실행되는 cron 위치
수동 실행 방법
- logrotate /etc/logrotate.conf
- logrotate /etc/logrotate.d/testrotate
강제 실행
- /usr/sbin/logrotate -f /etc/logrotate.conf
시뮬레이션
- /usr/sbin/logrotate /etc/logrotate.d/testrotate -d
: `-d` 옵션으로 실행하면 실제 로테이트가 실행되지는 않고 실행 되었을 때에 대한 기대 결과 및 체크 내용을 stdout으로 출력
주기가 되기전에 로테이트 실행
- vim /var/lib/logrotate/logrotate
: 로테이트를 실행시키고 싶은 로그 파일의 시간 값을 1일 이상의 과거 시간으로 변경
: logrotate는 재시작을 하지 않아도 된다 crond에 의해서 하루마다 실행되기 때문
copytruncate
: 로그로테이트 시 원본 로그 파일을 복사하여 로테이트 한 뒤, 기존 파일을 삭제하고 빈 파일로 생성하는 옵션
: 해당 옵션을 사용하지 않으면 로그로테이트는 로그 파일의 이름만 바꾸고 빈 파일을 생성하여 로테이트를 돌리는데, 이 경우 아이노드 등의 정보가 바뀌지 않기 때문에 실행중인 프로그램이 있다면 계속해서 로테이트 된 로그파일에 로그를 쌓게 된다
: 때문에 `prerotate`나 `endscript` 등의 옵션을 통해 스크립트를 실행 전, 후에 로테이트를 실행하기도 한다
: 그러나 `copytruncate` 옵션을 사용하면 이러한 작업 없이 실시간으로 로테이트를 돌리고 로그가 쌓이는 파일도 바꿀 수 있다
Reference
'Computer Science > Linux' 카테고리의 다른 글
[리눅스] 컨테이너 및 서비스 데몬 상태에서 로그 증적하는 방법 (2) | 2024.03.24 |
---|---|
supervisorctl이란 무엇인가? - 도커 컨테이너 내에서 여러 프로세스 실행하기 (1) | 2024.02.17 |
리눅스 JAVA 이전 버전 설치 및 버전 변경 방법 (0) | 2024.01.17 |
리눅스 네임스페이스에 대해 알아보자 (0) | 2024.01.17 |
데몬과 네임스페이스의 관계 (0) | 2024.01.17 |