Linux Log 관리를 위한 logrotate 명령으로 로그 관리하기

Linux 2015. 10. 20. 17:58
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


Linux Log 관리를 위한 logrotate 명령으로 로그 관리하기



 

logrotate

서버의 프로세스가 동작하면서 /var/log 경로에 httpd,mysqld,yum,access 수많은 로그가 생성되는데

로그들을 관리하지 않으면 파일시스템 한계가 와서 서버에 부하가 걸릴 있다.

이런 상황을 방지하기 위해 로그들을 일정기간이 지나면 이전 로그들을 압축하여 용량을 줄이고 오래된 로그들은

삭제해줘야 하는데 이런 일련의 작업을 주기적으로 자동 관리해 주는 프로그램이 logrotate이다.

 

 logrotate 설치방법은?

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

 

 # rpm -qf /etc/logrotate.conf    // logrotate버전 확인

logrotate-3.7.8-17.el6.x86_64

 

# rpm -ql logrotate-3.7.8-17.el6.x86_64   //logrotate​ 패키지 구성 경로 확인

 

/etc/cron.daily/logrotate

/etc/logrotate.conf

/etc/logrotate.d

/usr/sbin/logrotate

/usr/share/doc/logrotate-3.7.8

/usr/share/doc/logrotate-3.7.8/CHANGES

/usr/share/doc/logrotate-3.7.8/COPYING

/usr/share/man/man5/logrotate.conf.5.gz

/usr/share/man/man8/logrotate.8.gz

/var/lib/logrotate.status

 

 

logrotate 주요 구성 아래와 같다.

 

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

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

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

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

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

 

 

/etc/logrotate.conf  에서 무엇을 설정할수 있나?

모든 로그들의 생성 주기 삭제주기등을 conf파일에서 총괄적으로 설정 있다.

 

 logrotate.conf ​ 열면...

 

 # see "man logrotate" for details

# rotate log files weekly

weekly        // 1 단위로 잘라서 보관

 

# keep 4 weeks worth of backlogs

rotate 4       //1주단위로 자른 파일을 4개까지 보관(=  한달치까지 보관)

 

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

create        //로그를 백업하고 새로운 파일 생성

 

# use date as a suffix of the rotated file

dateext                             // 로그파일에  YYYYMMDD형식의 날짜 확장자 추가 

 

# uncomment this if you want your log files compressed

#compress                       // 순환된 로그파일 압축할 것인지 설정(gzip)

 

# RPM packages drop log rotation information into this directory

include /etc/logrotate.d            //각각의 프로세스들의 로그 설정파일이 있는 . include하여 불러온다.

 

# no packages own wtmp and btmp -- we'll rotate them here        // conf파일에서 프로세스 로그설정을 직접설정.

/var/log/wtmp {

    monthly                           // 한달단위로 순환

    create 0664 root utmp      // 새로 생성될 백업파일은 퍼미션664, root사용자, utmp 그룹의 소유권한 부여

    minsize 1M                     // 파일용량이 1M 되면 순환시킨다.    

    rotate 1                          //순환된 파일은 1개까지만 보관.

}

 

/var/log/btmp {

    missingok

    monthly

    create 0600 root utmp

    rotate 1

}

 

# system-specific logs may be also be configured here.

 

 

 

하나하나의 로그들을 디테일 하게 설정하고자 한다면?

/etc/logrotate.d  경로로 들어가면..

 

 # cd /etc/logrotate.d

[root@ logrotate.d]# ls

dracut  exim  fail2ban  freshclam  httpd  iscsiuiolog  mysqld  shorewall  syslog  yum    //각각의 프로세스 로그들을 설정할 있다.

 

 

 

이중 하나의 로그설정을 살펴보자.

 

 # vi httpd

 

/var/log/httpd.log {      // 작업할 로그파일의 절대 경로지정. "{}" 안에서 logrotate설정가능.

    missingok      //로그파일이 없을경우라도 에러처리하지 않음

    notifempty     //로그파일이 비어있을경우 순환하지 않음

    size 30k         //파일사이즈가 30k 경우 순환

    create 0600 root root          // 새로 생성될 백업파일은 퍼미션0600, root사용자,그룹 소유권한 부여

    postrotate                          //순환 작업 후에 실행할 명령 설정

        /usr/bin/fail2ban-client set logtarget SYSLOG 2> /dev/null || true

    endscript                                                                                                             

}

 

 

* 설정 옵션설명

daily

매일순환

 weekly

매주순환

monthly 

매달순환 

yearly 

매년 순환 

rotate

 순환되어 보관될 파일갯수

compress 

순환될 파일 압축(gzip) 

nocompress

 

순환될 로그파일 압축하지 않음 

 compressext 확장자명

압축된 백업로그파일에 지정할 확장자 설정 

compresscmd 압축명 

 gzip이외의 압축파일 지정 

 cpmpressoptions 옵션

 압축프로그램에 대한 옵션 설정(-9: 압축률 최대

 dateext

로그파일에  YYYYMMDD형식의 확장자 추가 

 errors 메일주소

에러발생시 지정된 메일주소로 메일 발송 

extention 확장자명 

순환된 로그파일의 확장자 지정 

ifempty

로그파일이 비어있는 경우 순환(기본값

noifempty 

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

mail 메일주소 

순환 이전 로그파일을 지정된 메일주소로 발송 

maxage 

count 지정된 날수가 지난 백업파일 삭제 

missingok 

로그파일이 없을 경우에도 에러처리하지 않는다

prerotate / endscript 

순환작업 전에 실행할 작업 설정 

postrotate / endscript 

순환작업 후에 실행할 작업 설정 

 

 sharedscripts

prerotate, postrotate 스크립트를 한번만 실행 

size 사이즈 

순환결과 파일사이즈가 지정한 크기를 넘징낳도록 설정 

copytruncate 

현재 로그파일의 내용을 복사하여 원본로그 파일의 크기를 0으로 생성 

 

 

 *logrostate 주요 옵션

 -f , --force

로그파일 강제순환 

 -s , --state

/var/lib/logrotate.status 상황파일 대신 저정한 state파일을 사용한다

--usage 

logrostate 기본 사용법을 간단히 보여준다

 

# logrotate --usage

Usage: logrotate [-dfv?] [-d|--debug] [-f|--force] [-m|--mail command] [-s|--state statefile]

        [-v|--verbose] [-?|--help] [--usage] [OPTION...] <configfile>

[출처] [Linux] 리눅스 로그관리 logrotate 모든 것!!|작성자 J빠바