본문 바로가기

Linux

리눅스 Logrotate

Logrotate

서버의 상태 확인과 장애 대응을 위해 로그를 수집합니다. 이때, 로그들이 쌓이면서 크기가 커지게 되는데 로그가 너무 커지기 전에 관리되도록 설정하는 기능이 Logrotate 입니다.

OS 설치 시 가본적으로 설치 되어있으며 설치 확인방법은 다음과 같습니다.

<Debian 계열>
root@localhost:~# dpkg -l | grep logrotate

<Redhat 계열>
[root@localhost ~]# rpm -qa | grep logrotate

Logrotate 파일 구조

데몬 프로그램 : /usr/sbin/logrotate
Logrotate 데몬 설정파일 : /etc/logrotate.conf
Logrotate를 프로세스 설정파일 : /etc/logrotate.d/
Logrotate 작업내역 로그 : /etc/cron.daily/logrotate

Logrotate 실행 순서

logrotate.conf 설정 방법

- daily : 매일 실행

- weekly : 매주 실행

- monthly : 매달 실행

- yearly : 매년 실행

- rotate [갯수] : 갯수만큼만 보관

- compress : 해당되는 로그파일을 gzip형태로 압축

- compressext [압축형태] : 압축된 백업 로그파일에 지정할 확장자 설정 ex) .bz2

- nocompress : 해당되는 로그파일은 압축하지 않음(Default)

- compresscmd [압축실행파일 경로] : gzip 이외의 형태로 저장시 지정 ex) /bin/bzip2

- uncompresscmd [압축해제실행파일 경로] : 압축해제 명령 지정 (Default : gunzip)

- compressoptions [옵션] : 압축 옵션 설정 (-9 : 최대 압축률)

- dateext : 로그파일명에 확장자 추가(Default : YYYYMMDD)

- dateformat [date형식 지정] : YYYYMMDD 형식이 아닌 다른 형식으로 사용시 지정 (Default : -%Y%m%d)

- errors [메일주소] : 에러 발생시 해당 메일주소로 메일 발송

- mail [메일주소] : 실행시 이전 로그파일을 해당 메일주소로 발송

- extention [확장자명] : 해당 확장자로 생성

- missingok : 로그파일이 없을경우에도 에러 처리하지 않음

- ifempty : 로그파일이 비어있는 경우에도 실행(기본값)

- notifempty : 로그파일이 비어있는 경우 실행하지 않음

- prerotate / endscript : 실행 전 스크립트 파일 실행

- postrotate / endscript : 실행 후 스트립트 파일 실행

- sharedscripts : 로그파일이 여러개 있어도 스크립트를 공유하여 prerotate, postrotate 스크립트를 한번만 실행

- nosharedscripts : 로그파일이 여러개일 경우 prerotate, postrotate 스크립트를 각각 실행(Default)

- copytruncate : 현재 로그파일 복사 후 원본 로그파일 크기 0으로 생성

- maxage [숫자] : 해당 숫자가 지난 백업 파일 삭제   ex) maxage 80 --> 80일이 지난경우 삭제

- size [사이즈] : 파일사이즈가 지정한 사이즈를 넘지않도록 설정
(Default : Byte, kilobytes인 경우 숫자k, Megabytes인 경우 숫자M, Gigabytes인 경우 숫자G)

logrotate.conf 예시

[root@server ~]# cat /etc/logrotate.d/apache 
/server/apache2/logs/*log {
    daily
    rotate 5
    notifempty
    missingok
    compress
    sharedscripts
    postrotate
        /server/apache2/bin/apachectl graceful
    endscript
}
daily : 일단위로 실행합니다
rotate 5 : 회전 주기를 설정합니다
notifempty : 로그파일의 내용이 없을경우 rotate 하지 않습니다
missingok : 로그파일이 없을경우 에러메시지를 출력하고 다음으로 실행합니다
compress : 로그파일을 압축합니다
sharedscripts : 여러개의 로그파일을 스크립트로 공유하여 실행합니다
postrotate : 실행 후 스크립트 파일 실행합니다 /server/apache2/bin/apachectl graceful
endscript : 실행 후 스크립트 파일 실행합니다

정상적으로 rotate 되는지 확인 하는 방법

Dry run (debugging)

-vd 옵션으로 디버깅을 해주면 된다.

-v : 결과출력 옵션
-d : 디버깅 옵션

/usr/sbin/logrotate -vd /etc/logrotate.conf

'Linux' 카테고리의 다른 글

Ubuntu 22.04 LTS SSH접속 안될 때  (1) 2023.11.02
Ubuntu 절전모드 설정  (0) 2023.04.20
Ubuntu 추가 디스크 Mount  (0) 2023.04.20
awk 명령어  (0) 2023.04.15
wc 명령어  (0) 2023.04.15