>> Read No. 3037 article  
cronolog 와 Webalizer 를 이용한 자동화 Script

등록 2002-11-12 13:59:00     조회 5
이름 조율    

		대용량 로그파일에 대한 분석요구가 점차 많아지면서, 자동화 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 를 해당기간별로 Web
Directory 에 생성되게 하도록 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 에 차곡차곡 만들어주면 된다.
그것은 필자가 작성한 아래의 스크립트를 이용하시라!
조금 허접하더라도 참으시라.. emoticon;;;
 -------------------------------------------------------------------- make_Webalizer.sh
#!/bin/bash
#Creator : joyul at 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 at 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 at blues.pe.kr 로 보내
주십시요. 감사합니다.--외로우니까... 사람이다...
이름
암호


>> 관련글
3037 cronolog 와 Webalizer 를 이용한 자동화 Script  조율  2002.11.12  ....
  답장 RE: cronolog 와 Webalizer 를 이용한 자동화 Script  얼음벌레  2002.11.13  ....
  목록보기 윗글 아랫글
글쓰기
답장쓰기 수정 삭제
정규표현식 [ 상세 검색 ]
페이지로딩: [ 0.71 초 ] 작업시간: [ 0.06 초 ]

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved
[TOP]

적수네 동네
+
| 적수네 동네
| 공부방
| 리눅스 잡지 서고
| LSN 소스
| 링크 모음
+---+
게시판
+
| 떠들어보세!
| 질문과 답변
| 새소식과 정보
| 1원짜리 팁?
| 대화방
+---+
칼럼?
+
| 세하 훔쳐보기
| Welcome2nite
| 혜진의 염장판
+---+
리눅스 상표권
+
| 반대 서명란
| 토론 게시판
+---+
GNU
+
| GNU 선언문
| GNU GPL
| GNU 미러 목록
+---+
프로젝트?
+
| 리눅스카운터
| RC5DES
| 실질헌법 제작
+---+
커널 소식
+
| 안정 버젼: 2.4.14
+---+
테마 선택
+
LSN 방송국?
+
| OFF AIR
+---+
회원
+
| 로그인
+---+
[ 적수네 동네 ] [ 리눅스 상표권 독점 반대 ] [ 한글 리눅스 문서 프로젝트 ] [ KrLine ] [ 사랑넷 ] [ Valid HTML 4.0! ] [ SlashDot ] [ Freshmeat ]
Copyleft (C) 1998-2001 Byeong-Chan Kim . License
TIME: 1791025670
System by WYZsoft, HDD by I.O.Linux, Mizi Research, Embryo, WOWLINUX, Domain by SarangNet, Network by KrLine.