logrotate란?

서버의 프로세스가 동작하면서 /var/log 경로에 httpd,mysqld,yum,access 등 수많은 로그가 생성되는데, 이 로그들을 관리하지 않으면 파일시스템 한계가 와서 서버에 부하가 걸릴 수 있다.

이런 상황을 방지하기 위해 로그들을 일정기간이 지나면 이전 로그들을 압축하여 용량을 줄이고 오래된 로그들은 삭제해줘야 하는데 이런 일련의 작업을 주기적으로 자동 관리해 주는 프로그램이 logrotate이다.

logrotate 설치방법은?

logrotate는 리눅스OS 설치시 자동으로 설치 된다.

logrotate 주요 구성

/etc/cron.daily/logrotate     //주기적인 cron 실행

/etc/logrotate.conf             // logrotate 설정파일

/etc/logrotate.d                 // logrotate를 적용할 프로세스 설정파일

/usr/sbin/logrotate            //  logrotate 데몬 위치

/var/lib/logrotate.status      // logrotate 작업내역 보관파일

logrotate 실행해보기

-f : 강제 실행
-d : 디버그 모드
-v : 실행과정을 화면에 표시

ex)
# /usr/sbin/logrotate -f /etc/logrotate.conf
# /usr/sbin/logrotate -d /etc/logrotate.conf
# /usr/sbin/logrotate -vdf /etc/logrotate.conf

예제

$ cd /etc/logrotate.d
$ vim 파일명

/var/log/*.log {
        daily // 로그파일을 변경할 기간을 설정합니다.
									daily : 매일 변경
                  weekly : 매주 변경
                  monthly : 매달 변경
                  yearly : 매년 변경
        missingok // 로그파일이 없어도 그냥 진행합니다.
        rotate 4 // 순환될 파일의 개수를 설정합니다. 0부터 시작하게 되며 위에서 weekly로 설정 시 4주간 보관합니다.
        compress // 순환(백업)된 로그파일을 압축하도록 변경합니다. 주석을 해제하면 백업파일을 gzip으로 압축합니다.
        notifempty // 로그파일이 비어있는 경우 순환을 하지 않습니다.
        size 1G    // 로그파일의 크기가 30k를 넘으면 순환합니다. 단위 K, M 사용이 가능합니다.
        sharedscripts // 와일드카드로 지정된 여러파일에 적용합니다.
				dateext  // 로그파일명에 확장자 추가(Default : YYYYMMDD)
				dateformat // [date형식 지정] : YYYYMMDD 형식이 아닌 다른 형식으로 사용시 지정
		        (Default : -%Y%m%d)
        postrotate // logrotate 작업 이후에 지정된 작업(스크립트)를 실행합니다. 시작점
                if invoke-rc.d apache2 status > /dev/null 2>&1; then \
                    invoke-rc.d apache2 reload > /dev/null 2>&1; \
                fi;
        endscript // 종료점
				copytruncate // [반드시 써야하는 옵션](<https://enterkey.tistory.com/396>), 
							현재 로그내용을 복사하여 백업본으로 저장한후 원본 로그의 내용을 비우는 방식으로 저장
							현재 로그파일 복사 후 원본 로그파일 크기 0으로 생성
}

Apache2