memo/Linux

logratate설정 구성

slow333 2023. 1. 14. 11:32

# sample logrotate configuration file
errors sysadmin@my.org
compress

/var/log/messages {
   rotate 5
   weekly
   postrotate
             /sbin/killall -HUP syslogd
   endscript
}

"var/log/httpd/access.log" /var/log/httpd/error.log {
   rotate 5
   mail www@my.org
   errors www@my.org
   size=100k
   sharedscripts
   postrotate
             /sbin/killall -HUP httpd
   endscript
}

/var/log/news/* {
   monthly
   rotate 2
   missingok
   errors newsadmin@my.org
   postrotate
             kill -HUP `cat /var/run/inn.pid`
   endscript
   nocompress
}

제일 첫줄은 코멘트이고 다음 2줄은 logrotate 전체의 옵션이다. 
즉, 로그 파일 처리중 발생하는 오류는 sysadmin@my.org에게 메일로 알리고 
로그 파일은 압축하는것을 기본으로 한다는 내용이다.

다음은 각각의 로그 파일에 대해 처리 옵션을 지정하고 있다.
먼저 /var/log/messages란 로그 파일은 
1주일에 한번씩 새로운 로그 파일을 만들고(weekly) 
이전 파일은 5주간 보관한 다음 제거한다.
(rotate 5) 로그 파일이 새로 생성된 다음에는 /sbin/killall -HUP syslogd 명령이 실행된다. (postrotate ... endscript)

다음은 /var/log/httpd/access.log 와 /var/log/httpd/error.log 2개의 파일을 함께 지정하고 있다. 
이들 파일은 크기가 100K 이상으로 커지면 새로운 로그 파일을 생성하고(size=100k) 
5개의 로그 파일을 보관한 다음(rotate 5) 가장 오래된 로그 파일은 
제거하지 않고 압축되지 않은 상태로 www@my.org에게 메일로 보내진다.(mail www@my.org) 
로그 파일 처리중에 발생하는 오류는 www@my.org에게 보고하고(errors www@my.org) 
2개의 로그 파일을 같이 처리할 때 postrotate 스크립트는 각 로그 파일을 처리할때 마다 
실행되지 않고 한번만 실행된다(sharedscripts)는 내용이다. 
만일 로그 파일에 공백문자가 포함된다면 처음과 같이 "로 둘러싸서 지정할 수 있다.

마지막은 /var/log/news 디렉토리 안의 모든 로그 파일들에 대한 지정이다. 각 로그 파일들은 1달에 1번씩 새로 만들어지고(monthly) 오류는 newsadmin@my.org에 게 보고된다. 로그파일이 없더라도 오류를 발생시키지 않으며(missingok) 보관하는 로그파일은 압축하지 않는다.(nocompress) 여러 파일들을 처리하더라도 앞에서 파일을 와일드 문자(*)로 지정했기 때문에 하나의 파일처리로 인식되며 몇가지 파일에서 오류가 발생하더라도 오류 메일은 한통이 보내진다.

apache 로그 로테이트

[root@www httpd]# vi /etc/logrotate.d/httpd
/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
}

# 설정 적용 시키기
# logrotate /etc/logrotate.conf
# 한번 실행하기
# /usr/sbin/logrotate -f /etc/logrotate.conf


출처: https://skibis.tistory.com/55 [Skibi's Notepad]


rotate [숫자] : 로그 파일 해당 갯수 이상되면 삭제
maxage [숫자] : 해당일수 이상된 로그 파일 삭제
size 100k , size 100M size 10G 지정한 용량이 되면 로그로테이트를 실행
create 권한 유저 그룹 : 퍼미션을 지정하여 rotation된 로그 파일을 생성
create 0600 root root
notifempty : log 내용이 없으면 rotation 하지 않음
monthly : 월 단위로 로테이트
daily : 일 단위로 로테이트
weekly : 주 단위로 로테이트
compress : rotate 된 로그 gzip 압축
nocompress : 압축을 하지 않음
mail [메일주소] : 로테이트 설정에 의해 보관주기가 끝난 파일을 메일로 발송
mailfirst [메일주소] : 로테이트 시 신규파일 이전의 로그를 메일로 발송
nomail : 메일로 통보받지 않음
errors [메일주소] : 로테이트 실행시 에러가 발생하면 이메일로 통보
prerotate-endscript : 사이의 명령어를 로그파일 처리전에 실행
postrotate-endscript : 사이의 명령어를 로그파일 처지후에 실행
extension : 로테이트 후 생성되는 파일의 확장자를 지정
copytruncate : 이 옵션을 넣지 않으면 현재 사용중인 로그를 다른 이름으로 move하고 새 로그 파일을 생성

############################ 애러 발생######################
Set "su" directive in config file to tell logrotate which user/group should be used for rotation.
이와 관련된 애러가 발생하면....

vi /etc/logrotate.conf 파일에..
/var/log/rsyslog
{
        rotate 6
        daily
        missingok
        notifempty
        delaycompress
        compress
        su root root   ###  추가
        postrotate
                /usr/lib/rsyslog/rsyslog-rotate
        endscript
}

su root root 내용 추가

'memo > Linux' 카테고리의 다른 글

snmp_설정  (0) 2023.01.14
rsyslog 설치 및 zabbix 수집 구성  (0) 2023.01.14
journalctl_사용법  (0) 2023.01.14
cockpit 웹 접속 시스템 관리 프로그램  (0) 2023.01.14
centos 초기 설정(네트워크,한글,시간)  (0) 2023.01.14