캠핑과 개발

logroate 옵션

DEVELOPMENT/Linux2017. 11. 22. 11:11
logroate란 일정 시간을 주기로 원본 로그 파일을 일, 주, 월 단위로 쪼개 저장할 수 있도록 도와주는 프로그램이다.
이렇게 하는 이유는 하나의 로그 파일을 하나의 파일로 저장하게 되면 데이터 용량이 기하급수적으로 쌓이게되면 서버에 로그 파일로 용량이 꽉차 서버가 해야할 다른 서비스를 제대로 제공하지 못하는 경우가 발생한다.
특정 단위로 쪼개어 저장하게 되면 주기적으로 삭제하면 서버 용량도 효율적으로 관리할 수 있으니 리눅스 서버 관리자라면 한번쯤 알아볼 유용한 기능이다.

1. 사용법
 
사용법은 비교적 간단하다. 
/etc/logrotate.d 경로에 로그 설정 파일을 만들어서 해당 위치에 옮겨 두기만 하면 cron의 /etc/cron.daily, /etc/cron.weekly등의 실행주기에 의해서 자동으로 실행된다.


2. 설정 파일
설정 파일은 해당 로그 파일을 생성한 후 vi 편집기를 이용하여 작성 한 후 /etc/logrotate.d에 옮겨 놓으면 된다.    
설정 방법은 로그 파일의 경로를 지정하고 관련된 옵션을 지정한다.
다음은 아파치의 로그 파일을 logrotate를 이용하여 설정한 예제다.

/etc/logrotate.d/httpd
/app/web/apache24/logs/*error_log
/app/web/apache24/logs/*access_log{
        daily
        create 0600 testuser01 testusers
        rotate 90
        dateext
        missingok
        notifempty
        copytruncate
        nocompress
}



3. 옵션


 옵션

설명 

 copy

로그 파일의 카피를 생성한다. 이 옵션을 사용하면, 이미 낡은 로그 파일이 존재하게 되므로, create 옵션은 무효가 된다.

 copytruncate

카피의 작성 후에 로그 파일을 이동하는 대신에, 오리지날의 로그 파일을 아무것도 저장하지 않는 로그로 다시 만든다.

어느 프로그램이 로그 파일을 닫지 못하고, 언제까지 전의 로그 파일에 계속 쓰고 있는 경우 등에 유효한 옵션이다. 다만 파일을 카피하는 순간의 로그가 소실되는 가능성이 높다 .


이 옵션을 넣지 않으면 현재 사용중인 로그를 다른이름으로 move하고 새로운 파일을 생성한다.

 extention

로테이션 후의 백업 로그에 부가하는 확장자(extension)를 지정한다. ext에는 파일의 확장자를 지정한다. compress 옵션을 지정했을 경우에는, 여기서 지정한 확장자(extension)의 뒤에 gz등의 확장자(extension)가 부가된다. 

 ifroate

 만약 로그 파일이 공백이었다고 해도 로테이션 시킨다.

디폴트로 유효하게 되어 있다.

mail 

 로그 파일의 로테이션이 완료한 시점에서, mail 옵션의 인수로서 설정된 메일 주소에 메일을 보낸다.

 nomail

 메일로 통보하지 않는다.

 maillast

mail 옵션 사용시에 로테이션 한 파일을 메일로 출력한다. 

 mailfirst

mail 옵션 사용시에 로테이션 할 예정의 파일을 메일로 출력한다. 

 missingok

로그 파일이 발견되지 않았던 경우, 에러 메세지를 출력하지 않고 다음의 로그 파일의 처리로 이행한다. 

 size

size 옵션의 파라미터로서 준 수치보다 로그 파일의 사이즈가 클 경우, 로그 파일의 로테이션을 실시한다. 

"M"(메가), "K"(킬로)를 지정할 수 있다.

 start

 로테이션 하는 경우에 부가되는 숫자의 확장자를 몇부터 시작하는지를 지정한다. 디폴트에서는 1 이다.

 weekly

 매주 로그를 바꾼다.

 daily

매일 로그를 바꾼다. 

 monthly

 월 단위로 로그를 바꾼다.

 roate 4

 로그를 4세대분 남긴다. weeky를 지정할 경우 4주간의 로그라는 의미이다.

 maxage [n]

 [n]일 이상이 된 로그 파일을 삭제한다.

 create

 (비어있는)신규 로그 파일을 로테이션 한 직후에 작성한다.

 compress

압축한다. 디폴트에서는 압축하지 않게 되어 있으므로, 디스크의 빈 용량을 보고, 유효하게 할지 지정한다. 

 nocompress

압축하지 않는다.

 notifempty

 log 내용이 없으면 rotation 하지 않는다.

 ifempty

 로그파일이 비어있어도 로테이트한다.

 prerotate-endscript

사이의 명령어를 로그파일 처리전에 실행한다. 

 postrotate-endscript

사이의 명령어를 로그파일 처리 후에 실행한다. 

 errors [mail address]

로테이트 실행시 에러가 발생하면 이메일로 통보한다.