본문 바로가기

StoreHouse/Server

RedHat 시스템에서 로그파일 관리

참고자료 http://kldp.org/KoreanDoc/Log_Admin-KLDP man logrotate man syslogd.conf
o 들어가며 기본적으로 레드햇 리눅스는 logrotate, syslogd 패키지가 설치되어 있다. syslogd 패키지는 시스템 로그를 기록하는 데몬패키지이며, logrotate는 로그파일을 일정기간간격으로 처리해주는 프로그램이다. 기본적인 내용은 kldp에 있으며, 이 문서는 간략한 개념정리를 하는 마음으로 적었다. 1. 설정 파일 o syslog : /etc/syslog.conf o logrotate : /etc/logrotate.conf, /etc/logrotate.d/ 아래의 파일들 2. 설정 o syslog 설명은 여기에서 제외함 (kldp.org 참고하기 바람) o logrotate logrotate는 /etc/cron.daily/에서 하루에 한번씩 cron 데몬에 의해 실행되고 있다. 이 스크립트의 내용은 /etc/logrotate.conf 파일을 읽어들여서 수행을 한다. 다음은 처음 설치시 설정된 logrotate.conf 파일의 내용이다. # see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # send errors to root errors root # create new (empty) log files after rotating old ones create # uncomment this if you want your log files compressed #compress # RPM packages drop log rotation information into this directory include /etc/logrotate.d # no packages own lastlog or wtmp -- we'll rotate them here /var/log/wtmp { monthly create 0664 root utmp rotate 1 } /var/log/lastlog { monthly rotate 1 } # system-specific logs may be configured here 여기에서 중요한것은 우선순위가 어디가 먼저인가하는 것이다. 우선 순위를 놓고 보자면 /var/log/wtmp, /var/log/lastlog 파일이 가장 높다. 즉 앞에서 weekly라고 설정을 해놓았지만 각각의 로그설정의 내용이 그 내용을 오버라이트한다. weekly는 글로벌변수이고, 각각의 {}안의 내용은 로컬변수라고 생각하면 된다. 다음은 apache 로그를 처리하는 내용을 설정해보았다. # system-specific logs may be configured here /usr/local/apache/logs/access_log { monthly size=500k rotate 10 errors bhcom34@orgio.net mail bhcom34@orgio.net } 이 설정의 결과는 다음과 같다. monthly라고 설정을 해놓았기 때문에 그 달의 처음 한번 실행된다. 단 size=500k라고 지정했으므로 monthly와 상관없이 용량을 초과하면 로그가 처리된다. 매일 crond에 의해 logrotate가 실행된다는것을 잊지말자 ! rotate 10은 10개까지 로그가 남는다는 설정이다. error 발생시 다음의 메일주소로 메일을 보낸다. mail은 로그가 10이 넘어가면 마지막 로그가 지워지면서 그 내용이 설정된 메일주소로 배달된다. 이렇게 logrotate.conf 파일에 설정을 해놓아도 되지만 /etc/logrotate.d 디렉토리에 나름대로의 이름을 만들고 설정을 해놔도 무방하다. 3. 설정 결과 로그가 언제 실행되었는지 알수 있는 방법은 /var/lib/logrotate.status 의 내용은 보면 알수 있다. logrotate state -- version 1 /var/log/cron 2000-9-22 /var/log/messages 2000-9-22 /var/log/secure 2000-9-22 /var/log/maillog 2000-9-22 /var/log/spooler 2000-9-22 /var/log/boot.log 2000-9-22 /var/log/htmlaccess.log 2000-5-31 /var/log/netconf.log 2000-9-1 /var/log/wtmp 2000-9-1 /var/log/lastlog 2000-9-1 /usr/local/apache/logs/access_log 2000-9-22 /usr/local/apache/logs/error_log 2000-8-15 /var/log/samba/log.nmb 2000-7-30 /var/log/samba/log.smb 2000-7-30 단 이 내용은 단지 logrotate 프로그램이 실행되었다는것을 의미할뿐 실제로 로그가 처리되었다는것은 아니다. 실제로 로그가 처리되었는지 알 수 있는 방법은 로그가 있는 디렉토리에서 날짜를 확인하는 방법뿐이다. 작성자 : 정병환 (http://bhcom34.kr1.net, bhcom34@chollian.net, bhcom34@orgio.net)