글 수 367
[설정] 로그 파일 관리 - 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) 여러 파일들을 처리하더라도 앞에서 파일을 와일드 문자(*)로 지정했기 때문에 하나의 파일처리로 인식되며 몇가지 파일에서 오류가 발생하더라도 오류 메일은 한통이 보내진다. 다음은 설정파일에서 사용할 수 있는 명령어들중 일부이다.
|