2013년 1월 23일 수요일

로그 서비스 - logrotate


설정파일을 본다.
-----------------------------------------------------------------
centos[root /var/log]# vi /etc/logrotate.conf
  # see "man logrotate" for details
  2 # rotate log files weekly
  3 weekly        //일주일에 한번 백업 받겠다. 최소단위가 daily
  4
  5 # keep 4 weeks worth of backlogs
  6 rotate 4       // 한달치 date만 백업받겠다. daily면 4일치만 보관.
  7
  8 # create new (empty) log files after rotating old ones
  9 create
 10
 11 # uncomment this if you want your log files compressed
 12 #compress   // 압축하겠다. 주석처리 되었으니 압축 안하겠다.
 13
 14 # RPM packages drop log rotation information into this directory
 15 include /etc/logrotate.d       //이 폴더 안에 있는 것들도 백업해라.
 16
 17 # no packages own wtmp -- we'll rotate them here
 18 /var/log/wtmp {         // 요기 있는 파일을 이런 조건으로 백업한다. 괄호 안이 우선 적용
 19     monthly                // 달 단위로 백업해라.
 20     minsize 1M            // 이 사이즈가 되면 백업해라.
 21     create 0664 root utmp  //퍼미션 소유주 그룹을 이렇게 만들어라.
 22     rotate 1
 23 }
--------------------------------------------------------------------
 rotate 4 의미는
 1주일 후
messages -> messages.1 로 백업하고
messages -> 0byte로 초기화
그 다음 1주일 후
messages.1 -> messages.2 로 백업하고
messages -> messages.1 로 백업하고
messages -> 0byte로 초기화
그 다음 1주일 후
messages.2 -> messages.3 로 백업하고
messages.1 -> messages.2 로 백업하고
messages -> messages.1 로 백업하고
messages -> 0byte로 초기화
그 다음 1주일 후
messages.3 -> messages.4 로 백업하고
messages.2 -> messages.3 로 백업하고
messages.1 -> messages.2 로 백업하고
messages -> messages.1 로 백업하고
messages -> 0byte로 초기화
 
그 다음 1주일 후
messages.4 -> messages.5 로 백업하고
messages.3 -> messages.4 로 백업하고
messages.2 -> messages.3 로 백업하고
messages.1 -> messages.2 로 백업하고
messages -> messages.1 로 백업하고
messages -> 0byte로 초기화
 
........... 하는데 messages.4 까지만 보관하겠다. 즉 5는 생성과 동시에 삭제. 또는 생성 안할 수도..? 여튼 5는 없다.
 
 create 0664 root utmp 를 보면
-----------------------------------------------------------------
centos[root /root]# ls -l /var/log/wtmp
-rw-rw-r-- 1 root utmp 127872 10월 18 10:26 /var/log/wtmp
------------------------------------------------------------------
퍼미션이나 소유주가 명령대로 설정되어 있다.
include /etc/logrotate.d      
예를 들어 하나를 보자.
------------------------------------------------------------------

centos[root /etc/logrotate.d]# cat vsftpd.log
/var/log/vsftpd.log {
    # ftpd doesn't handle SIGHUP properly
    nocompress     // 압축하지마.
    missingok       // 혹시 파일이 없어도 그냥 넘어가. nomissingok가 기본.
}
/var/log/xferlog {
    # ftpd doesn't handle SIGHUP properly
    nocompress
    missingok
}
---------------------------------------------------------------
별다른 설정이 없으니 주 1회, 한달치... 등등 위에 있는 설정을 따른다.
 
 실행방법
----------------------------------------------------------------
centos[root /var/log]# logrotate /etc/logrotate.conf
----------------------------------------------------------------
 
 직접 실행해야 하면 번거로우니 cron...에 등록되어 있다.
----------------------------------------------------------------
centos[root /etc]# ls cron.daily/
00webalizer  0logwatch  cups       makewhatis.cron  prelink  tmpwatch
0anacron     certwatch  logrotate  mlocate.cron     rpm
------------------------------------------------------------------
 
실습해보자.
-------------------------------------------------------------------
centos[root /etc/logrotate.d]# vi test.log
  1 /var/log/newtest {
  2     daily
  3     compress
  4     rotate 2
  5     missingok
  6     sharedscripts           // end 사이에 적는 명령어를 실행한다.
  7       postrotate                // post 니까 백업후 명령어를 실행해라.
  8       service vsftpd restart 2> /dev/null   // 에러는 출력하지마.
  9       touch /tmp/test.txt
 10     endscript
 11 }
         ifempty  // 용량이 0이여도 백업받겠다.

-------------------------------------------------------------------
 
다른 파일을 살펴보자.
-------------------------------------------------------------------
centos[root /etc/logrotate.d]# vi httpd
  1 /var/log/httpd/*log {
  2     missingok
  3     notifempty
  4     sharedscripts
  5     postrotate
  6         /sbin/service httpd reload > /dev/null 2>/dev/null || true   
  7     endscript
  8 }
-------------------------------------------------------------------
 /dev/null 2>/dev/null  실행 결과나 에러나 둘다 출력하지 마숑.
 || true  || 참이 될때까지 실행. &&는 거짓이 될때까지 실행.
[출처] 로그서비스 - logrotate|작성자 Bridget

댓글 없음:

댓글 쓰기