>> Edit article
이름
제목
패스워드
대용량 로그파일에 대한 분석요구가 점차 많아지면서, 자동화 Script 의 필요성으로 인해 작성하였습니다. 비록 허접한 Script 이지만, 많은분들이 편리하게 이용할 수 있었으면 합니다. 또한, 제가 작성한 스크립트를 조금만 수정한다면 쉽게 자신에게 맞게 고쳐쓸 수 있을 것입니다. 존칭을 생략한점 양해바랍니다. 사용환경 CPU : Athlon XP 1600+ O/S : Red Hat Linux release 7.2 (Enigma) 필요한 것들 1. Apache Webserver + PHP 2. cron 3. Cronolog 4. Webalizer 설치 URL : http://www.apache.kr.net/dist/log-analyzer/ 에서 Cronolog 와 Webalizer 를 다운로드 받는다. 각각의 설치는 Src 를 풀고 해당디렉토리에서 # ./configure && make && make install 로 쉽게 설치할 수 있다. 자세한 설치방법 및 상세한 옵션을 알고싶으면 각 README File 을 참조한다. Script 작성 배경 Webalizer 는 쉽게 로그파일을 분석해주지만, 짧은 시간에 대량의 로그가 쌓일경우 하나의 로그파일로 보여줄 수 없다. 따라서, 각 기간별로 분리해서 자동으로 파일을 생성시켜주는 스크립트가 필요하게 되었다. 간략설명 1. CronoLog 를 이용하여 Apache 의 Weblog 를 원하는 기간별로 분리하여 쌓이게 한다. 2. 작성한 Shell Script 를 이용하여 Webalizer 를 해당기간별로 WebDirectory 에 생성되게 하도록 Cron 에 등록시킨다. 3. 작성한 PHP Script 를 이용하여 WebDirectory 에 생성된 날짜별로 로그를 보여주는 링크를 생성한다. 상세설명 1. cronoLog 를 이용한 Apache Weblog 기간별 분리 : Apache + PHP 가 미리설치되어있어야 한다. 또한 위의 '설치'부분에서 설명한대로 cronoLog 를 설치하여야 한다. 그 상태에서 Apache 의 설정파일인 httpd.conf 의 로그 설정부분을 아래와 같이 변경한다. TransferLog "|/usr/local/sbin/cronolog /var/log/httpd/%Y/%m/%d/access.log" ErrorLog "|/usr/local/sbin/cronolog /var/log/httpd/%Y/%m/%d/errors.log" 위의 예제는 일별 로그를 각각의 Directory 에 access.log , errors.log 에 쌓이도록 한 것이다. 월별로 쌓이길 원한다면 %d 부분을 삭제하면 될것이다. 또한 Virtual Host 를 이용하여 여러 도메인에 서비스 할 경우 위의 로그 부분을 각 Virtual Host 부분에 설정하면 된다. 물론, httpd 다음에 각 account 로 naming 을 해주면 더욱 보기 좋을것이다. 이해가 가지 않는다면 아래의 예제를 보세요. TransferLog "|/usr/local/sbin/cronolog /var/log/httpd/joyul/%Y/%m/%d/access.log" ErrorLog "|/usr/local/sbin/cronolog /var/log/httpd/joyul/%Y/%m/%d/errors.log" 참고로 cronoLog 의 설치가 정상적으로 되었는지 Testing 할수 있는 프로그램이 소스에 포함되어있다. $ ./src/cronotest "%Y/%m/%d/access.log" 4 위와 같이 사용하면 될것이고, 자세한 방법은 역시 README File 을 참조하세요. 2. Scrip 를 이용한 Webalizer 파일의 생성 : 이제 로그는 기간별로 쌓이게 되어있으므로, 다음은 Webalizer 를 이용하여 각 기간별로 생성된 로그를 WebDirectory 에 차곡차곡 만들어주면 된다. 그것은 필자가 작성한 아래의 스크립트를 이용하시라! 조금 허접하더라도 참으시라.. -_-;;; -------------------------------------------------------------------- make_Webalizer.sh #!/bin/bash #Creator : joyul@blues.pe.kr #Date : 2002.11.11 #Update : None #Webalizer 를 자동으로 WebDirectory 에 생성시키는 스크립트 #하루전날 로그에 대해서 생성시키며 Cron 에 적당한 시간에 등록시킨다. 새벽 5시정도? #10일이 지난 로그는 삭제한다. 조정가능 #로그파일이 생성되는 디렉토리 LOG_DIR="/var/log/httpd" # 현재 날짜를 이용하여 하루전날 날짜를 구함 NOW_DATE=$(date "+%Y/%m/%d" --date "1 days ago") # 현재 날짜를 이용하여 몇일전의 로그를 삭제할것인지 구함 (변경가능) DEL_DATE=$(date "+%Y%m%d" --date "10 days ago") #로그파일이름 설정 LOG_FILENAME=$LOG_DIR"/"$NOW_DATE"/access.log" #로그를 쌓게할 Web Directory 설정 DEFAULT_OUT_DIR="/home/httpd/html/log" #해당 로그일을 Directory Name 으로 정함 , 삭제의 용이성을 고려하여 LOG_DAY_DIR=$(date "+%Y%m%d" --date "1 days ago") OUT_DIR=$DEFAULT_OUT_DIR"/"$LOG_DAY_DIR # 로그 Directory 생성 mkdir $OUT_DIR # Webalizer 를 이용하여 LogFile 분석하고 해당파일들을 로그 Directory 에 생성 /usr/local/bin/webalizer -Q $LOG_FILENAME -o $OUT_DIR # 삭제기간이 지난 Direcotry 에 대한 삭제 cd $DEFAULT_OUT_DIR for FILE in * do if [ $FILE -le $DEL_DATE ] then rm -rf $FILE fi done exit 0; -------------------------------------------------------------------------------------------- 위의 스크립트를 vi 를 이용하여 생성시키고, 실행가능하도록 권한을 변경한다. #chmod +x make_webalizer.sh 그런다음 부하가 적은 새벽시간에 Cron 을 이용하여 실행시킨다. 0 5 * * * /root/make_webalizer.sh 3. Web 에서 기간별 Webalizer File 을 볼 수 있도록 PHP Script 를 이용한다. ----------------------------------------------------------------------viewlog.html <? /*********************************************************** Title : Log Directory Display Creator : Joyul@blues.pe.kr Date : 2002.11.11 Update : None Descreption Cronolog 와 webalizer 를 이용한 자동 Rotate Log Script 로 생성된 파일들을 날짜별로 생성된 디렉토리로 보여주는 스크립트 ***********************************************************/ $LOG_DIR = "/home/httpd/html/log"; $d = dir($LOG_DIR); while (false !== ($entry = $d->read())) { if($entry != "." && $entry != "..") { if(is_dir($entry)) { $year = substr($entry,0,4); $month = substr($entry,4,2); $day = substr($entry,6,2); $logday = $year."년 ".$month."월 ".$day."일"; echo "<a href='./".$entry."' target='".$entry."'>".$logday." 로그보기</a><br>"; } } } $d->close(); ?> ------------------------------------------------------------------------------------------ 위의 파일을 Log File 이 생성된 Directory, 여기서는 home/httpd/html/log 에 넣어두고, 해당파일에 링크를 걸면, Log Directory List 가 생성된다. 문의 사항 및 개선점들은 joyul@blues.pe.kr 로 보내주십시요. 감사합니다.--외로우니까... 사람이다...
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved