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의 설정으로는 어렵다.
위의 기능중 " 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의 기본을 익히고 설정하는 것을 추천한다.