본문 바로가기

기억을 위한 기록/Server

[ LOG ] Linux logrotate

logrotate: 주기적으로 오래된 로그를 삭제하고 압축하여, 용량을 줄여주는 자동 관리 해주는 리눅스 프로그램.

 

설치방법:  리눅스 OS 설치시 자동으로 설치됨.

 

주요 구성: 

/etc/logrotate.d logrotate를 설정할 개별 프로세스 설정파일
/etc/logrotate.conf logrotate 설정파일 (모드 로그들의 총괄적 설정)

/var/lib/logrotate.status

logrotate 작업내역 보관 파일
/etc/cron.daily/logrotate logrotate cron
/usr/sbin/logrotate logrotate 데몬 위치

 

 

log4j2 로 로그를 쌓고 있었는데, 로그가 너무 많은 양으로 쌓이기 때문에, 

주기적 자동관리가 되었으면 해서 logrotate 설정을 해보려 한다.

 

구현하고자 하는 기능 :

매일 , 00시 00분 에 새로 갱신 / 30이후 삭제 / 읽기권한은 모든 유저에게 부여 

 

 

위의 기능중 " 00시 00분 에 " 기능은 logrotate의 설정으로는 어렵다.

 

logrotate설정

위의 기능중 " 00시 00분 " 기능을 제외하고 logrotate의 설정을 해주었다.

- daily  : 매일   ( monthly 매달 , weekly 매주)

- rotate 30 : log파일이 30개 이상되면 삭제

- create 665 유저 그룹 : 설정되어 있는 [유저 그룹]으로 rotate된 파일들이 생성되며, 665 로 권한을 설정하여  유저                                      (6:rw-)/그룹(6:rw-)/다른사용자(5:-wx) 권한을 부여 모든 사용자가 읽을수 있도록 설정

 

* 이외에도 logrotate 설정으로 가능한 기능들이 많으므로 검색하여 사용하도록 하자. 

 

logrotate 실행 모드 : 

-f 강제 실행
-d 디버그 모드 (실행되지는 않는다.)
-v 실행과정을 화면에 표시

logrotate 설정이 잘되었는지 궁금하다면,  위의실행모드를 사용하여 강제 실행이나 디버그 모드로 명령어를 치면 설정오류를 확인할수 있다. 

 

다른 기능들이 설정으로 구현되었으니 " 00시 00분 "에 logrotate가 실행되어 rotate되도록 설정해보자

따로 설정을 하지 않으면 logrotate는 cron.daily를 따라 4 am에 실행되도록 되어있다. 

 

logrotate 기동순서 :

cron (주기적으로 반복되는 일을 자동적으로 실행되도록 설정해놓는 것)

crontab> cron.daily > logrotate > logrotate.conf > logrotate.d

 

/etc/cron.daily/에 있는 logrotate파일을 다른 이동시켜 logrotate 의 실행시간을 변경한다.

/etc/cron.daily/logrotate 를 다른 폴더에 이동하고 이름은 logrotate.sh로 변경한다.

나는 /usr/logrotate/를 생성하여 그 밑으로 이동시켰다.

 

이동시켰으면 /etc/cron.d/ 아래 하나의 파일을 하나 생성하여, 그안에 스크립트를 작성해 주면 된다.

0 0 * * * root /usr/logrotate/logrotate.sh 

로 스크립트를 작성해주면 매일 자정에 root권한으로 logrotate.sh를 실행시킨다.

 

logroate기능 위주로 설명하여 crontab 설명이 부족하다. 

crontab을 기본을 읽고 와서 설정을 하게 되면 그리 어려운 작업이 아니니 좀 다르게 설정하고싶다거나 이해가 안된다면 cron의 기본을 익히고 설정하는 것을 추천한다.