사이트 내 전체검색
[linux] logrotate 를 사용하여서 시스템의 로그 관리하기
로빈아빠
https://cmd.kr/server/261 URL이 복사되었습니다.

본문

logrotate 를 사용하여서 시스템의 로그 관리하기

제목 : logrotate 를 사용하여서 시스템의 로그 관리하기
분류 : OS : Alzza RedHat 5.2 ( Linux ) , Solaris 2.6
System 관리 - log
활용예 : 아파치 로그에 적용하기
최종 수정일 : 2000-03-01
글 버젼 : 0.2.a
글 쓴이 : 김형숙
Copyright 업슴. 그러나 원문의 인용시 김형숙의 글임을 확인해 주세요.

자신의 리눅스 박스에 Apache 서버가 돌아 간다면 기본 설정으로 apache
log 파일이 생깁니다.
아파치를 소스로 받아서 컴파일 했기에 로그관리에 상당히 어렵더군요.
로그가 100583323 ( 약 10메가 ) 약 3달 정도 쌓여 있더군요.
생각을 하여 보니깐 비 효율 적이더군요.
그래서 마땅히 비효율을 효율로 바꾸어 주는 것을 찾다보니 레드햇 패키지
에 있는
logrotate 였습니다.
이제 logrotate의 쓰임새에 대해서 설명을 드리겟습니다.

0. 목차
1. 소프트웨어 요구 사항
2. logrotate설치
3. logrotate설정
4. 끝마치며

1. 소프트웨어 요구 사항
popt (ftp://ftp.redhat.com/pub/redhat/code/popt) (알짜 5.2는 필요 없슴)
logrotate (ftp://ftp.redhat.com/pub/redhat/code/logrotate) (알짜는 기본)

2. logrotate설치 <== 이부분은 솔라리스의경우에만 해당 됩니다.
2.1 popt
이 부분은 Keizi@mecom.net님께서 소스있는곳을 알려 주셧습니다.
[root@solar popt]# ./configure --prefix=/usr/local/
[root@solar popt]# make all
[root@solar popt]# make install

2.2 logrotate 설치
logrotate는 레드햇 리눅스용인데 솔라리스로 포팅하는 과정에 많은 분들의 도움을 받았습니다.
대표적인 황보현님과 박종대님, 신정식님 , 강재호님에게 감사 드립니다.
[root@solar logrotate]# vi Makefile

-- Makefiel -- #이 부분 황보현님께서 알려 주셨습니다. CFLAGS = -Wall -D_GNU_SOURCE -DVERSION="$(VERSION)" $(RPM_OPT_FLAGS) -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 #형숙이가 고침 LOADLIBES = -lpopt --------------

[root@solar logrotate]# vi logrotate.c
이 부분은 박종대님께서 가르쳐 주셨고 getopt()는 보통 에 들어 있는 함수입니다.
그래서 getpot.h 을 주석처리 하면 됩니다.

--- logrotate.c -- #include // #include #include "popt.h" #include --------------------

[root@solar logrotate]# vi config.c
이 부분은 황보현님께서 가르쳐 주셧습니다.

--- config.c -- #include // #include #include "popt.h" #include .. .. /* 아래을 추가해 주시면 됩니다. */ #if defined(__XPG4_CHAR_CLASS__) || defined(_XPG4_2) || (defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 == 4)) #define isblank(c) (__ctype_mask[c] & _ISBLANK) #else #define isblank(c) ((__ctype + 1)[c] & _S) #endif .. .. --------------------

[root@solar logrotate]# make
[root@solar logrotate]# make install

3. logrotate 의 설정
3.1 logrotate 의 첫걸음
#-----
[ami@myhome ami ]$man logrotate

------#
라고 해 보시면 정말 상세한 설명이 나옵니다. 이 맨페이지를 보기 싫어 하 시는 저 같은 사람을 위해서 적자면

logorate
rotate, compresses, and mails system logs
라고 되어 있습니다. 위의 말이 logrotate에 대한 설명의 끝이것 같네용^^.
이하 저 같이 위의 말이 실감이 안되는 분을 위해서 짧은 실력으로 설명을 또 드리자면 시스템 로그와 메일로그를 한 파일에 저장을 하면 위의 예같이 정말 많아지죠. 그런데 이 로그들은 다 보관할수록 도움이 정말 많이 되고 그렇다면 어떻게 효율적으로 보관을 하느냐. 즉, rotate ( 회전시키다 ) - 주기적으로 회전 - 하고 필요에 따라서 압축도 하여서 보관을 할수 있게끔 도와 주는 툴이라는 것입니다.

예) /var/log 디렉토리를 보시면 많은 log 들이 있습니다.
이 파일들을 자세히 보시면 연관성을 알고 있습니다.
또 저같은 사람을 위해서 부연 설명 드리자면 mail.log mail.log.1.gz mail.log.2.gz mail.log.3.gz
등의 파일이 있습니다. 즉 기존의 mail.log를 일정 기간이 지나면 mail.log1 로 만들고 압축을 원한다면 mail.log.1.gz로 만든다는 것이죠. 2,3 도 같은 결과 이겠죠.

자 그럼 logrotate 의 필요한 파일은 어떤것이 있느냐?
#-----
[ami@myhome ami]$rpm -ql logrotate
/etc/cron.daily/logrotate # cron 데몬이 실해하는 파일
/etc/logrotate.conf # logrotate 설정 파일
/etc/logrotate.d # conf 파일이 include 시키는 디렉토리
/usr/man/man8/logrotate.8 # man 파일
/usr/sbin/logrotate # 주 프로그램
------#


3.2 logrotate 설정하기
/etc/logrotate.conf 파일이 설정 파일입니다.

*---- logrotate.conf # see "man logrotate" for details # rotate log files weekly # 1주 단위로 순환한당 weekly # keep 4 weeks worth of backlogs # 순환 주기는 4 이다. 즉 1,2,3,4 로 된다 rotate 4 # send errors to root # 에러가 있다면 root에게 메일을 보낸당 errors root # create new (empty) log files after rotating old ones # rotating 후에 새로운 log 파일을 만든다 create # uncomment this if you want your log files compressed # 압축한다. compress # 저의 시스템의 아파치에 대한 logrotate 설정 부분입니다. # 그냥 알짜의 아파치패키지를 쓰실 경우는 아래의 설정이 필요 없습니다. # 왜냐 하면 그 밑에 설명될 logrotate.d 에 있습니다. /usr/local/apache/logs/access_log { weekly rotate 5 postrotate # 여기서 부터 endscript 까지는 logrotate후에 실행할 명령어 #를 적을수 있습니다. # 참고로 prerotete 는 이전에 실행할 명령어를 적습니다. /usr/bin/killall -HUP httpd # man 페이지는 /sbin/killall 인데 # 알짜 레드햇은 /usr/bin/killall 이더군요 # 솔라리스의 경우 killall 명령이 그냥 프로세스를 죽이는 것만 되지 HUP # 시그널을 보낼수 없는것 같더군요. 그래서 아래와 같이 했습니다. # /usr/local/apache/bin/apachctl restart endscript } # RPM packages drop log rotation information into this directory # rpm 패키지의 logrotate 정보를 두는 디렉토리 include /etc/logrotate.d ... ... -------* *---- logrotate.d 디렉토리 [ami@myhome ami]$ls /etc/logrotate.d/ -al -rw-r--r-- 1 root root 76 Jun 13 1998 cron -rw-r--r-- 1 root root 78 Aug 4 1998 ftpd -rw-r--r-- 1 root root 193 Dec 2 11:44 linuxconf -rw-r--r-- 1 root root 911 Jan 4 1999 syslog ----*

여기서 linuxconf 파일 안에 레드햇 apache 패키지에 관한 log 설정이 있습 니다.
이 설정으로 레드햇의 아파치 log가 관리되기 때문에 위의 저의 경우 같은 설정은 필요 없습니다.

*---- linuxconf # Logrotate file for Linuxconf RPM # 저의 경우는 필요 없기에 주석 처리 했습니다. #/var/log/htmlaccess.log { # notifempty # nocompress # weekly #} ... ... ----------*

3.3 logrotate 실행해 보기
자 설정을 끝 마쳤으면 제대로 설정 되었는지 알아 보는 것입니다.

*-----
[ami@myhome /etc]$/usr/bin/logrotate -d /etc/logrotate.conf

....
....
------*

대충 보시면 이해가 갑니다.
자 이제 본격적인 rotate를 해야 하는데 보통 위헤서 보여주었던 것처럼 /etc/cron.daily/logrotate 파일만 있으며 그냥 기다리시면 됩니다. 자신이 알아서 해 주니깐

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

솔라리스의 경우 자신이 /var/spool/cron/crontabs/root 에 직접 추가을 해야 합니다.
0 5 * * * /usr/local/sbin/logrotate /etc/logrotate.conf

4. 끝마치며..
저와 같이 아파치를 소스로 받아서 컴파일 하시고 log가 특정 디렉토리에 저장될 경우 위와 같이 해 주시면 도움을 될것이라 생각 됩니다.
솔라리스에 logrotate로서 로그를 관리 해 주면 좋을 것 같은데.. 어떤 로그를 관리 해야 할지 몰라서 그냥 아파치만 관리하고 있습니다.

댓글목록

등록된 댓글이 없습니다.

1,139 (14/23P)

Search

Copyright © Cmd 명령어 3.145.38.67