Logrotate로 log 관리하기


Logrotate 란?


리눅스내에서 시스템에 있는 모든 로그파일들을 관리할 수 있으며, 이들 로그파일들을 날짜를 지정하여 주기적으로 압축, 백업, 삭제, 메일로 보내는 등의 작업을 할 수 있도록 하여주는 기능

==============================================================

Logrotate가 필요한 이유


리눅스를 서버로 돌리면 하루에도 많은 로그 파일들이 생성된다. 서버 용량은 한정되어 있고 이와 같은 로그들이 차곡차곡 쌓이다보면 로그로 인해 하드 용량이 부족한 경우가 생겨 성능이 떨어질 수 있는데 매번 수동으로 로그파일이 저장되는 곳으로 이동하여 하나하나 삭제하는 일은 번거로운 일이 아닐수 없습니다. 이와 같이 로그파일를 수동으로 관리하지 않고 logrotate기능을 사용한다면 보다 효과적으로 관리할 수 있을것입니다.


rqm -qa | grep logrotate


yum -y install logrotate

==============================================================

기본적인 옵션 정보


daily : 매일 로테이트 진행

weekly : 매주 로테이트 진행
monthly : 매달 로테이트 진행
yearly : 매년 로테이트 진행
rotate [파일갯수] : 로테이트 진행될 파일갯수 ex) rotate 5
compress : 로테이트 진행된 로그파일 압축(gzip)

create [권한] [유저] [그룹] : 로테이트 되는 로그파일 권한 지정 ex) create 644 root root

nocompress : 로테이트 진행된 로그파일을 압축하지 않는다(기본값) 

compresscmd [압축명] : gzip 이외의 압축프로그램 지정 

uncompresscmd : 압축해제 명령 지정(기본값 : gunzip)
compressext [확장자명] : 압축된 백업 로그파일에 지정할 확장자 설정 
compressoptions [옵션] : 압축 프로그램에 대한 옵션 설정(-9 : 압축률 최대) 
dateext : 로그파일에 YYYYMMDD형식의 확장자 추가  백업 파일의 이름에 날짜가 들어가도록 함  
errors [메일주소] : 에러 발생시 지정된 메일주소로 메일발송
extention 확장자명 : 로테이트 진행된 로그파일의 확장자 지정 
ifempty : 로그파일이 비어있는 경우 로테이트 진행 (기본값)

noifempty : 로그파일이 비어있는 경우 순환하지 않는다 

mail [메일주소] : 순환후 이전 로그파일을 지정된 메일주소로 발송 
maxage : count로 지정된 날수가 지난 백업 파일 삭제 ex) maxage 30 30dl
missingok : 로그파일이 없을 경우에도 에러 처리하지 않는다
prerotate / endscript : 로테이트 진행작업 전에 실행할 작업 설정
postrotate / endscript : 로테이트 진행작업 후에 실행할 작업 설정
sharedscripts : prerotate, postrotate 스크립트를 한번만 실행 
size [사이즈] :  로테이트 진행 결과 파일사이즈가 지정한 크기를 넘지않도록 설정 
                            지정된 용량보다 클 경우 로테이트 실행 ex) size +100k
copytruncate : 현재 로그파일의 내용을 복사하여 원본 로그파일의 크기를 0으로 생성

==============================================================

logrotate 구동순서


 


cron(주기적으로 반복되는 일을 자동적으로 실행될수 있도록 설정해놓는 것, 데몬)을 이용해 logrotate 실행


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


vi  /etc/logrotate.conf


# see "man logrotate" for details

# rotate log files weekly   

#로그파일을 순환할 기간을 설정합니다 (yearly:매년, monthly:매달, weekly:매주, daily:매일)


weekly


# keep 4 weeks worth of backlogs  

#순환될 파일의 개수를 설정합니다. 최소값은 0입니다.

#예를들어 위에서 weekly로 설정하고 rotate 4를 주게되면 4주간 보관한뒤 순환하게 되며,

#위에서 daily로 설정하고 rotate 15를 주게되면 15일간 보관한뒤 순환하게 된다는 의미입니다.


rotate 4


# create new (empty) log files after rotating old ones 

#로그파일을 백업하고 새로운 파일을 생성할 것인지를 설정합니다.

create


#uncomment this if you want your log files compressed

#순환된 로그파일을 압축할것인지를 설정합니다.(압축방식 : gzip)


#compress


# RPM packages drop log rotation information into this directory

#로그 순환정보를 가진 디렉토리를 불러옵니다.

include /etc/logrotate.d


# no packages own wtmp -- we'll rotate them here

#/var/log/wtmp의 로그설정을 합니다.

#monthly, rotate 1, minsize 1M이므로 한달에 한번 로그파일용량이 1M가 되면 순환하게 되며

#백업파일은 root사용자의 utmp그룹의 소유로 퍼미션 644를 부여합니다.


/var/log/wtmp {

    monthly

    minsize 1M

    create 0664 root utmp

    rotate 1

}

==============================================================

vi /etc/logrotate.d/apache

==============================================================

/usr/local/apache/logs/*log{

weekly

rotate 5

compress

missingok

create 644 root root

dateext

}

==============================================================

정상적으로 동작하기 위해서 강제로 logrotate를 실행해보자.

강제로 실행하기 위해서는 다음과 같이 명령어를 입력하면 된다.
/usr/sbin/logrotate -f /etc/logrotate.conf


'LinuxOS > Linux 관리' 카테고리의 다른 글

웹사이트가 느릴경우  (0) 2020.10.17
특정디렉토리 빼고 복사하기  (0) 2020.10.15
VNC server  (0) 2020.10.05
XWindow설치  (0) 2020.09.17
리눅스 계열 OS용량 확인  (0) 2020.09.11
Posted by returnrisk
,