Skip to content

[설정] 로그 파일 관리 - logrotate

조회 수 17443 추천 수 0 2010.12.23 13:11:28
[설정] 로그 파일 관리 - logrotate 
01-10-24 00:00
리눅스를 서버로 돌리면 하루에도 많은 로그 파일이 생성된다. 사용자가 웹에 접속할때, 메일을 받거나 읽을 때 등 가만히 놓아두면 엄청나게 느는 로그 파일을 볼 수 있을 것이다.

이런 로그 파일들을 컴퓨터가 적절히 압축하고 잘라내고 관리하도록 설정하는 프로그램이 logrotate이다. 요즘에는 기본적으로 시스템 설치시 logrotate를 설치하는 경우가 대부분이며 Mandrake 8.1에서는 /etc/cron.daily에 다음과 같은 내용으로 실행시키고 있다.

#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf


즉 /etc/logrotate.conf 파일을 설정 파일로 주어서 매일 logrotate를 실행시키는 것이다. 그럼 logrotate.conf 파일을 보자. 다음은 Mandrake 8.1의 기본 내용이다.

# 매주 로그 파일을 처리한다.
weekly
# 4주간의 로그 파일을 보관한다.
rotate 4
# 오류는 root 사용자에게 보고한다.
errors root
# 이전 로그 파일을 저장한 다음 새로운 로그 파일을 만든다.
create
# 이전 로그 파일은 압축하여 저장한다.
compress
# /etc/logrotate.d 디렉토리내의 파일들을 읽어들여서 처리한다.
include /etc/logrotate.d


배포판에 따라서 내용이 조금씩 다르겠지만 logrotate가 설치되어 있다면 기본 골격은 비슷할 것이다.

여기에 대한 설명은 코멘트로 생략하고 앞서 logrotate 매뉴얼에 나와 있는 예를 먼저 들어 보겠다.

# 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) 여러 파일들을 처리하더라도 앞에서 파일을 와일드 문자(*)로 지정했기 때문에 하나의 파일처리로 인식되며 몇가지 파일에서 오류가 발생하더라도 오류 메일은 한통이 보내진다.

다음은 설정파일에서 사용할 수 있는 명령어들중 일부이다.

compress
오래된 로그 파일들은 gzip으로 압축하여 보관한다. 압축을 원하지 않을 경우 nocompress를 사용하라.

copytruncate
보통 로그 파일 처리시에는 원래 로그 파일의 이름을 바꾸고 새로운 로그 파일을 생성하지만 이 옵션을 사용하면 현재 로그 파일의 내용을 복사하고 로그 파일의 크기를 0으로 만든다.

create mode owner group
postrotate 스크립트가 실행되기 전에 새로운 로그파일을 만들때 로그 파일의 mode, 사용자, 그룹을 지정한다. 기본으로는 원래 로그 파일과 같은 mode, 사용자, 그룹으로 새로운 로그 파일이 만들어진다.

daily, weekly, monthly
각각 매일, 매주, 매달 로그 파일을 처리한다.

errors 메일주소
로그 파일 처리시 발생한 오류를 메일주소로 알린다.

extension 확장자
보관한 로그파일의 확장자를 지정한다. 압축하는 경우에는 확장자 다음에 .gz이 붙게된다.

ifemtpy
기본값으로 르고 파일의 내용이 없더라도 새로운 로그 파일을 생성한다.

include 파일/디렉토리
파일의 경우 파일의 내용을 읽어들여서 처리하고 디렉토리의 경우 디렉토리 내의 모든 파일들을 읽어서 처리한다. 이 명령어는 전체설정에서만 사용할 수 있다. 디렉토리나 파이프와 같이 정규 파일이 아닌 것들과 뒤에서 설명할 tabooext의 확장자를 가지는 파일은 읽어들이지 않는다.

mail 주소
로그 파일의 보관 주기가 끝나면 주소로 로그 파일을 보낸다.

mailfirst
mail 주소 명령에서 보관 주기가 끝난 로그 파일이 아니라 방금 보관된 로그 파일을 메일로 보낸다.

missingok
로그 파일이 존재하지 않더라도 오류를 발생시키지 않는다.[/dl]]
[[dl]]nocopytruncate
copytruncate와 유사하게 작동하지만 보관할 로그 내용을 복사한 다음 현재 로그파일의 크기를 줄이지 않는다.

olddir 디렉토리
오래되서 보관해야 할 로그 파일이 저장될 디렉토리를 지정한다. 디렉토리는 로그 파일과 같은 물리적 장치에 존재해야 한다.[/dl]]
[[dl]]prerotate/endscript
두 명령사이에 위치하는 명령들을 로그 파일 처리전에 실행시킨다.

postrotate/endscript
로그 파일 처리후에 실행할 명령들을 지정한다.

sharedscripts
기본적으로는 로그파일을 처리할때마다 prerotate, postrotate 스크립트가 실행된다. 만일 여러 로그 파일을 처리하더라도 prerotate, postrotate 스크립트가 한번만 실행되기를 원한다면 이 명령어를 사용할 수 있다. 단, 이 명령어를 사용하면 처리된 로그 파일이 없더라도 prerotate, postrotate 스크립트가 한번 실행된다.

rotate 수
로그 파일은 지정한 수만큼 저장된 다음 제거되거나 메일로 보내진다. 만일 0을 지정하면 보관하지 않고 바로 처리한다.

size 크기
로그 파일의 크기가 지정한 크기 이상이 되면 처리한다. 크기는 M,k 단위를 사용하여 지정할 수 있다.

tabooext [+] 확장자들
include 문에서 읽어들이지 않을 파일의 확장자를 지정한다. 기본값으로는 .rpmorig,  .rpmsave, v, .swp, .rpmnew, ~이 지정되어 있으며 +를 사용하는 경우 현재 리스트에 확장자들을 추가한다.
profile

일요일은 짜빠게뤼~ 먹는날~^^

엮인글 :
http://adminplay.com/33176/79f/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수
227 커널패닉시 자동으로 리부팅되도록 설정 ADMINPLAY 2011-02-07 20119
226 Linux 특수 퍼미션 ADMINPLAY 2011-01-14 18815
225 Linux에서 Oracle 인스톨시 발생하는 에러 ADMINPLAY 2011-01-13 23215
224 vi 에디터 - 라인 범위정해서 주석처리하기 ADMINPLAY 2011-01-07 21185
» [설정] 로그 파일 관리 - logrotate ADMINPLAY 2010-12-23 17443
222 [linux] 리눅스에서 hostname 변경과 구동과정 ADMINPLAY 2010-12-16 28292
221 리눅스 IO 스케쥴러 변경하기 ADMINPLAY 2010-12-13 33177
220 리눅스에서 SSD 빠르게 쓰기 ADMINPLAY 2010-12-13 19734
219 안녕하세요'ㅅ' 오늘가입해서 이런질문을 드려봅니다~ 'ㅅ' [1] chustyle 2010-12-06 17316
218 JWPlayer 사용법 ADMINPLAY 2010-11-11 27078
217 sftp 포트 변경시 접속 ADMINPLAY 2010-11-10 26397
216 CentOS Samba 설정 ADMINPLAY 2010-11-08 24884
215 우분투에 Samba 를 설치하자 ADMINPLAY 2010-11-08 19195
214 clocksource tsc unstable 에러 ADMINPLAY 2010-10-29 19324
213 OOM : out of memory ADMINPLAY 2010-10-05 21511
212 특수 기호의 영문 이름 ADMINPLAY 2010-09-22 20750
211 리눅스 서버 부하 점검 - htop 소스설치 file [3] ADMINPLAY 2010-09-12 32559
210 리눅스 - htop file ADMINPLAY 2010-09-12 24838
209 e2fsck - 파일 시스템 복구 및 검사. - fsck file ADMINPLAY 2010-09-12 60903
208 crossdomain.xml 정책변경에 따른 변경사항. ADMINPLAY 2010-08-31 21702

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234