[시스템] 리눅스 시스템 로그 관리 방법
Red Hat Linux 시스템에서 로그파일 관리
————————————-
작성자 : 정병환
(http://bhcom34.kr1.net, bhcom34 at chollian.net, bhcom34 at orgio.net)
작성일 : 2000/09/22
참고자료
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 at
orgio.net
mail bhcom34 at 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 프로그램이 실행되었다는것을 의미할뿐
실제로 로그가 처리되었다는것은 아니다.
실제로 로그가 처리되었는지 알 수 있는 방법은 로그가 있는 디렉토리에서
날짜를 확인하는 방법뿐이다.