본문 바로가기
Server&OS/Apache

Webalizer 설치 및 환경설정 - 아파치로그분석기

by 백룡화검 2009. 8. 27.

#####################################################################

"리눅스포털 - 슈퍼유저코리아" 사이트를 참고로 다시 작성했습니다.

#####################################################################       

 

### Webalizer 설치 및 환경설정

웹서버 특히 웹호스팅서버를 관리하는 일은 대부분 웹마스터나 서버관리자가 하게된다. 웹서버를 운영한다면 반드시 웹로그를 분석해야하는 일을 하게된다. 그 역할 또한 서버관리자가 하는 경우가 대부분이다. 대개는 웹마스터가 서버관리를 겸하는 경우가 대부분인데, 여기서 설명하는 경우는 단순한 웹로그분석이 아닌 여러 개의 웹사이트를 자동으로 분석하는 방법에 대한 것이다. 공식적인 명칭은 아니지만 설명의 편의성을 위하여 동시에 여러 개의 웹로그파일을 자동으로 분석하는 방법을 “멀티웹로그분석”이라고 하겠다. 하나의 웹사이트가 아닌 여러 개의 웹사이트의 웹로그를 분석하는 일은 단순한 작업이 아닐 것이다. 단순히 하나의 서버에 하나의 웹로그만 분석하는 일은 그렇게 어려운 작업은 아니다.

 

한대의 서버에 여러 개의 웹사이트를 운용하고 있다면 웹로그를 분석 할 때마다 모두 수작업을 한다면 시간과 작업량에 있어서 여간 힘든일이 아닐 것이다. 서버관리라는 관점에서 웹로그분석법을 다루고자 하는 것은 단순한 웹로그분석법만을 다루고자하는 것이 아니라 여러 개의 웹사이트를 주기적으로 자동분석되게 하는 방법에 대한 내용을 다루고자 하는 것이다. 앞에서도 누차 강조드린 바와 같이 서버관리자는 주기적이고 단순 반복적인 작업들은 자동화, 단순화 시켜나가면서 서버관리업무를 체계화 시켜나가야한다.

 

이번에 설명할 webalizer를 통한 웹로그분석 또한 이런 관점에서 단순한 웹로그분석 방법 보다는 많은 웹사이트의 웹로그를 각각 자동분석되게 하여 그 결과 또한 사이트별로 각각 확인할 수 있도록 하는 방법을 제시할 것이다.

 

, 그럼 webalizer의 웹로그분석법에 대한 설명을 시작해 보겠다.

우선, webalizer의 특징에 대해서 간단히 설명하면 다음과 같다.

 

- C언어로 개발되었기 때문에 실행속도가 굉장히 빠르다.

  + 200Mhz펜티엄에서 초당 10000레코드 처리.
  + accesswatch는 Perl로 개발되었으며, webalizer에 비해 그 속도가 현저하게 떨어진다.

- common, combined 로그 포맷지원(combined를 사용하면 로그파일크기가 커지지만, 자세한 정보를 얻을 수 있다)

- 설정파일이나 커맨드라인을 이용하여 리포트를 커스터마이징 가능
- 특히, 한국어를 지원한다는 점에 굉장한 매력이 있다.

- webalizer는 C로 개발되었지만 그 소스를 공개하고 있다.

- 분석대상이 되는 소스파일의 크기에 제한이 없다. 


1) Webalizer 다운로드 받을 수 있는 곳

- ftp://ftp.superuser.co.kr (http://ftp.superuser.co.kr/pub/weblog/webalizer/)

- http://www.mrunix.net/webalizer/ 또는

- http://www.webalizer.com


2) Webalizer 설치

먼저 다운받은 Webalizer를 설치해 보겠다. 앞서도 말씀드렸지만 설치방법을 포함하여 여기서 설명드리는 모든 내용들은 단순한 방법이 아닌 호스팅서버등에서 여러 개의 웹사이트의 웹로그분석을 동시에 자동으로 설정하는 방법에 대한 것이다.

 

아래 보는 바와 같이 현재 작업위치는 /usr/local 입니다. 물론, 다른위치에서 작업을 하셔도 상관없지만 대부분 소스를 가져와서 설치하는 위치는 /usr/local로 하고 있다.

 

아래 예처럼 가져온 webalizer의 압축을 풀어준다. tgz로 압축되어 있는 파일은 tar와 gzip으로 압축이 되어있는 것이므로 tar에서 xvfz라는 옵션으로 풀어주시면 된다.

 

압축을 풀고나면 webalizer 디렉토리가 생성이되면서 그 디렉토리내에 필요한 파일들이 들어간다.

 

다음 작업은 configure작업이다. Configure할 때에는 한국어 지원을 위해서 옵션을 -with-language=korean을 준다.

 

configure작업이 정상적으로 끝났다면 이번에는 컴파일(make)을 합니다. 컴파일은 아래 예처럼 “make”라고만 하면 된다.

 

컴파일 작업까지 정상적으로 끝났다면 이번에는 “make install”으로 설치작업을 하면 된다.

설치작업까지 정상적으로 끝났다면 webalizer의 설치는 끝난 것이다.

 

이제부터 Webalizer를 이용하여 여러 개(여기서는 3개)의 사이트를 동시에 자동분석하는 방법에 대해서 알아보자.

 

3) 웹로그분석을 위한 가상호트스 및 로그파일 구성도

이제 본격적으로 웹사이트분석을 하도록 하겠다. 우선, 다음과 같이 3개의 웹사이트가 서버내에서 설치되어 운용되고 있다는 가정을 하겠다. 아래는 3개의 웹사이트를 위한 가상호스트 설정입니다.

이들 3개의 웹사이트의 구성방법은 모두 동일하다. 그리고 Webalizer를 포함한 디렉토리구성은 다음과 같다.

 

 - 기본 홈페이지 위치 : /home/ID/www/
 - 웹로그파일 위치 : /home/ID/www_log/access_log

 - 웹로그분석 결과가 저장될 위치 : /home/ID/www/weblog

 - 웹로그 결과 확인방법 : http://도메인/weblog

 

위의 구성은 분석하고자하는 모든 웹사이트에 동일하게 적용이되는 구성이다. 즉 모든 웹사이트의 홈디렉토리는 /home/ID/www/가 될 것이며, 웹로그파일의 저장 위치는 /home/ID/www_log/access_log가 될 것이다. 그리고 Webalizer로 분석된 결과가 저장 위치는 각각 /home/ID/www/weblog가 된다. 그리고 Webalizer 분석결과를 웹으로 확인하는 방법은 http://도메인/weblog로 각각 확인할 수 있다.

 

위의 예는 여기서 예로든 3개의 웹사이트의 로그파일위치를 각각 확인한 것이다.

 

4) 웹로그 분석을 위한 Webalizer 환경구성

여러 개의 웹사이트를 동시에 분석하려면 다음과 같은 작업이 필요하다 .

현재 webalizer가 설치된 위치는 /usr/local/webalizer이며 webalizer뒤에는 버전번호가 붙여져 있지만 가능하다면 버전번호를 생략한 webalizer라는 이름으로 변경을 해주시는 것이 좋다.

[root@inter-devel ~]# cd /usr/local/
[root@inter-devel local]# pwd
/usr/local
[root@inter-devel local]# ln -s webalizer-2.01-10 webalizer

 

Webalizer를 설치하고난 후에는 설치시에 생성되지 않는 디렉토리와 파일들을 만들어 주셔야합니다. 이 또한 멀티웹로그분석을 위한 작업입니다.

 

 - 환경설정파일 디렉토리 : /usr/local/webalizer/conf/개별도메인.conf

 - 실행 쉘스크립트 파일 : /usr/local/webalizer/bin/webalizer.sh

 

이 두개의 디렉토리와 파일들은 모두 직접 만들어 줘야한다. 그 리고 webalizer.conf 파일에는 분석대상이 되는 모든 웹사이트의 웹로그분석을 위한 설정파일들이 “도메인.conf”라는 파일이름으로 각각 한 개씩 생성해야한다. 그리고 /usr/local/webalizer/bin에 생성되는 webalizer.sh 파일 또한 직접 만들어 줘야하며 이 파일에는 개별 conf 파일들을 하나씩 분석하기 위한 실행명령들이 들어가게 된다.

 

5) Webalizer의 실행설정파일 만들기

, 그럼 먼저 conf 디렉토리를 아래와 같이 만들자.


그리고 이 디렉토리내에서 분석하고자하는 대상 도메인의 설정파일(*.conf)파일을 다음과 같이 만들어 줘야한다.

Webalizer설치하고 나면 “make install”과정에서 샘플설정파일(webalizer.conf.sample)이 /etc/디렉토리내에 생성된다. 따라서 아래의 예처럼 이 샘플파일을 도메인에 하나씩 복사해오면 된다.

 

모두 복사된 후에 개별 도메인의 설정파일들을 확인한 것이다.

 

무엇보다 중요한 것은 이렇게 복사해온 샘플파일의 내용은 개별 도메인의 환경과는 맞지않다는 것이다. 따라서 개별 도메인의 환경에 맞게 조금 수정을 해줘야하는데 수정하는 내용은 꼭 필요한 5개 항목만 변경해주면 된다.

 

수정해주실 항목은 개별 설정파일내의 5개항목이며 다음과 같다.

 

 - LogFile        : 로그파일 위치 (예 : /home/bsuhak/www_log/access_log)

 - OutputDir      : 분석결과 저장위치 (예 : /home/bsuhak/www/weblog)

 - HistoryName  : 사이트명 (예 : bsuhak.com)

 - ReportTitle    : 분석결과 페이지 이름 (예 : BSUHAK.COM WebSite)

 - HostName     :  호스트명 FQDN형식 (예 : www.bsuhak.com)

 

다음의 예는 위의 3개의 설정파일중 하나인 bsuhak.com.conf 파일의 예를 보인 것이다. 3개 파일 모두 vi로 파일을 열어서 최소한 5개 부분은 맞게 수정을 해줘야 한다. 만약 분석하는 사이트수가 3개 이상된다 하더라도 모두 이와 같은 방법으로 수정해주면 된다. 아래의 진하게 표시된 부분이 수정해줘야 할 부분이다. 

 

[root@su2 conf]# cat bsuhak.com.conf

LogFile        /home/bsuhak/www_log/access_log

#LogType        clf

OutputDir      /home/bsuhak/www/weblog

HistoryName     bsuhak.com

#Incremental    no

#IncrementalName        webalizer.current

ReportTitle    BSUHAK.COM WebSite

HostName       www.bsuhak.com

#HTMLExtension  html

PageType        htm*

PageType        cgi

#PageType       phtml

#PageType       php3

#PageType       pl

#UseHTTPS       no

#DNSCache       dns_cache.db

#DNSChildren    0

#HTMLPre <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

#HTMLHead <META NAME="author" CONTENT="The Webalizer">

#HTMLBody <BODY BGCOLOR="#E8E8E8" TEXT="#000000" LINK="#0000FF" VLINK="#FF0000">

#HTMLPost       <BR CLEAR="all">

#HTMLTail <IMG SRC="msfree.png" ALT="100% Micro$oft free!">

#HTMLEnd </BODY></HTML>

#Quiet          no

#ReallyQuiet    no

#TimeMe         no

#GMTTime                no

#Debug          no

#FoldSeqErr     no

#VisitTimeout   1800

#IgnoreHist     no

#CountryGraph   yes

#DailyGraph     yes

#DailyStats     yes

#HourlyGraph    yes

#HourlyStats    yes

#GraphLegend    yes

#GraphLines     2

 

#TopSites        30

#TopKSites       10

#TopURLs         30

#TopKURLs        10

#TopReferrers    30

#TopAgents       15

#TopCountries    30

#TopEntry        10

#TopExit         10

#TopSearch       20

#TopUsers        20

 

#AllSites       no

#AllURLs        no

#AllReferrers   no

#AllAgents      no

#AllSearchStr   no

#AllUsers       no

 

#IndexAlias     home.htm

#IndexAlias     homepage.htm

 

#HideSite       *mrunix.net

#HideSite       localhost

 

#HideReferrer   mrunix.net/

 

#HideReferrer   Direct Request

 

HideURL         *.gif

HideURL         *.GIF

HideURL         *.jpg

HideURL         *.JPG

HideURL         *.png

HideURL         *.PNG

HideURL         *.ra

 

#HideAgent      RealPlayer

 

#HideUser       root

#HideUser       admin

 

#GroupURL       /cgi-bin/*      CGI Scripts

#GroupURL       /images/*       Images

 

#GroupSite      *.aol.com

#GroupSite      *.compuserve.com

 

#GroupReferrer  yahoo.com/      Yahoo!

#GroupReferrer  excite.com/     Excite

#GroupReferrer  infoseek.com/   InfoSeek

#GroupReferrer  webcrawler.com/ WebCrawler

 

#GroupUser      root            Admin users

#GroupUser      admin           Admin users

#GroupUser      wheel           Admin users

 

#GroupAgent     MSIE            Micro$oft Internet Exploder

#HideAgent      MSIE

#GroupAgent     Mozilla         Netscape

#HideAgent      Mozilla

#GroupAgent     Lynx*           Lynx

#HideAgent      Lynx*

 

#HideAllSites   no

 

#GroupDomains   0

 

#GroupShading   yes

 

#GroupHighlight yes

 

#IgnoreSite     bad.site.net

#IgnoreURL      /test*

#IgnoreReferrer file:/*

#IgnoreAgent    RealPlayer

#IgnoreUser     root

 

#IgnoreURL      *

#IncludeURL     ~joeuser*

 

#IgnoreUser     *

#IncludeUser    someuser

 

#MangleAgents    0

 

SearchEngine    yahoo.com       p=

SearchEngine    altavista.com   q=

SearchEngine    google.com      q=

SearchEngine    eureka.com      q=

SearchEngine    lycos.com       query=

SearchEngine    hotbot.com      MT=

SearchEngine    msn.com         MT=

SearchEngine    infoseek.com    qt=

SearchEngine    webcrawler      searchText=

SearchEngine    excite          search=

SearchEngine    netscape.com    search=

SearchEngine    mamma.com       query=

SearchEngine    alltheweb.com   query=

SearchEngine    northernlight.com  qr=

 

#DumpPath       /var/lib/httpd/logs

 

#DumpHeader     no

 

#DumpExtension  tab

 

#DumpSites      no

#DumpURLs       no

#DumpReferrers  no

#DumpAgents     no

#DumpUsers      no

#DumpSearchStr  no

 

6) Webalizer의 실행파일 생성하기

이제 마지막으로 지금까지 설정했던 개별 설정파일들(*.conf)의 실행을 위한 실행 쉘스크립트파일인 webalizer.sh를 생성해 줄 단계이다.

아래 예를 보시는 바와 같이 webalizer.sh는 설치 후에 생성되는 것이 아니며 멀티웹로그분석을 위해 직접 생성한 것이다.

 

위치는 /usr/local/webalizer/bin이며 이 위치에 webalizer.sh라는 실행파일이 위와 같이 생성되게 된다. 참고로 하나의 예만 본다면

 

/usr/local/bin/webalizer -c /usr/local/webalizer/conf/bsuhak.com.conf > /home/bsuhak/www/weblog/bsuhak.com

 

이것은 bsuhak.com의 웹로그분석을 위한 실행설정이며 -c 옵션을 사용하시면 개별적인 설정파일사용이 가능하게 된다. 그리고 그 결과를 /home/bsuhak/www/weblog/bsuhak.com으로 하였습니다. 나머지 2개의 도메인 또한 동일한 방법으로 설정하였다.

 

그리고 생성된 webalizer.sh를 다음과 같이 실행퍼미션을 주어 실행가능하도록 설정하였다.

 

이로서 webalizer의 멀티웹로그분석을 위한 모든 설정이 끝이 났다.

 

6) Webalizer.sh 실행 및 실행결과 확인

이제 웹로그분석 실행을 해 보자. 분석실행은 아래 예처럼 webalizer.sh라고만 하면 된다. 참고로 실행은 가능하다면 아래 예처럼 절대경로로 실행을 해주시는 것이 좋다. 위의 webalizer.sh 파일내에서도 절대경로를 사용하였음을 확인하기 바란다.

 

아무런 메시지없이 실행이 끝났다면 분석결과가 정상적으로 진행이 되었다는 것을 의미합니다. 앞서도 말씀드렸듯이 webalizer는 C언어로 개발되었기 때문에 실행속도가 굉장히 빠르다. accesswatch와 실행속도를 비교해 보면 속도면에서 많은 차이점을 느낄 수 있을 것이다. 그리고 이 실행 결과 개별 웹사이트의 분석결과가 /home/ID/www/weblog 디렉토리에 각각 저장이 되었을 것이다.

 

이제 webalizer의 실행결과를 확인하기 위해 여기서 예로든 3개의 웹사이트 분석결과 디렉토리를 확인해 보도록 하겠다.

 

먼저, jangyu.or.kr의 웹로그분석결과가 /home/ju/www/weblog 디렉토리에 저장이 되었는가를 확인한 것입니다.

 

위와 같이 확인을 하셨다면 설정작업과 실행이 정상적으로 이루어 진다는 것을 의미합니다.

이제 남은 것은 주기적인 실행을 위한 cron설정만을 하면 된다.

 

7) 자동분석 설정을 위한 cron 설정하기

아래 예처럼 “crontab -e”라고 하시면 cron설정을 vi모드에서 하실 수가 있습니다. 실행시간은 서버내의 부하가 가장 적은 새벽 시간대로 해주면 될 것이다.  

 

이로써 멀티웹로그분석을 위한 webalizer 설치 및 구성, 그리고 실행 및 실행결과 확인과 cron설정을 모두 마쳤다.