메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

웹 로그 통계 내기: AWStats

한빛미디어

|

2002-11-25

|

by HANBIT

29,159

「한빛 네트워크 기사 공모전」 입선작: 정원희

웹 서버를 운영하는데 중요한 자료가 되는 것 중 하나가 바로 웹로그이다. "어디에서 왔는지, 어떤 파일을 요청했는지, 언제 요청했는지"와 같은 아주 기초적이고 간단한 정보로부터, "어느 사이트로부터 넘어 왔는지, 검색엔진의 어디를 통해서 왔는지, 얼마동안이나 있었는지" 등등의 각종 정보들이 웹로그에 남는다. 이러한 웹로그들은 텍스트로 쌓이기 때문에 실제로 하루에 수백에서 수천 줄 이상씩 쌓이는 로그 텍스트를 일일이 분석한다는 것은 사실상 불가능하다. 때문에 많은 웹 서버 운영자들은 아예 웹로그를 남기지 않거나 웹 서버에서의 에러와 같은 특정로그만을 남기는 경우가 많다.

하지만 이제 그렇게 하지 않아도 된다. 다양한 웹로그 분석 프로그램들이 존재하고 있기 때문이다. 지금 소개하려고 하는 AWStats 또한 GNU GPL을 따르는 훌륭한 웹로그 분석 도구이다.

설치하기

이 글을 쓰는 현재 AWStats의 최신 안정버전은 5.1이고 최신 개발버전은 5.2이다. 다운로드는 http://awstats.sourceforge.net에서 받을 수 있다. 공식 사이트에서는 아파치와 IIS의 두 가지 경우를 모두 설명하고 있지만, 현재 필자가 설치해본 것이 레드햇 리눅스에서 아파치를 사용중인 경우였으므로 이 경우를 예를 들어 설명하기로 하겠다. IIS의 경우도 그리 어렵지 않으니 IIS 유저들은 공식홈페이지의 문서를 참고하도록 하자.

Apache 웹서버

웹 서버의 로그가 NCSA combined/XLF/ELF의 포맷으로 기록되도록 셋팅해야 한다. 우선 초기 아파치 셋팅시에 특별히 로그 포멧을 건드린 기억이 없다면 지금 상태 그대로 두면 된다. 아파치 설정파일인 httpd.conf(아마도 /usr/local/apache/conf 정도에 있을 것임)를 열고, 아래와 같이 되어있는 부분을 찾는다.
CustomLog   웹서버로그위치      common
보통은 아래와 같은 방식으로 되어있을 것이다.
CustomLog /usr/local/apache/logs/access_log common
이 부분을 찾아내서 다음과 같이 수정한다.
CustomLog   웹서버로그위치      combined
눈치챈 독자도 있을 것이고 원래부터 알고 있는 독자도 있겠지만 뒤에 붙은 common, combined 등은 httpd.conf의 CustomLog 부분 바로 위에 LogFormat이라는 이름으로 설정되어 있는 로그타입 중 하나이다. 만약 자신의 httpd.conf에 combined라는 이름으로 정의된 LogFormat이 없다면 다음과 같이 추가하도록 한다.
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
여기에서 한 가지 주의해야 할 점은, 기존에 남아있던 로그내용이 현재의 새로 셋팅한 로그내용과 달라서 AWStats를 실행한다고 하더라도 분석할 수 없을 뿐만 아니라 아직 변경된 httpd.conf의 내용을 웹 서버가 읽어들이지 않았으므로 아래의 두 사항을 반드시 수행해주어야 한다는 것이다.
1. 기존의 로그파일을 삭제하고
2. 웹서버를 새로 시작하도록 한다.
그리고 나서 브라우저로 웹사이트에 접속한 다음 로그파일을 열어보도록 하자. 다음과 같은 식으로 로그가 남으면 AWStats를 실행할 준비가 끝난 것이다.
62.161.78.75 - - [dd/mmm/yyyy:hh:mm:ss +0000] "GET / HTTP/1.1" 200 1234
"http://www.from.com/from.html" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"
자신에게 적당한 AWStats 파일을 다운받도록 한다. awstats.tgz를 /usr/local에 다운받았다고 가정하자.
tar xzvf awstats.tgz
위와 같이 입력하면, /usr/local/awstats-5.1 이라는 경로 밑으로 파일들이 생성될 것이다. 하위 wwwroot/cgi-bin으로 이동한 다음 awstats.pl, awstats.model.conf과 같은 파일과 lang, lib, plugins과 같은 서브디렉토리를 웹 서버의 cgi-bin 디렉토리로 복사한다. (/usr/local/apache/cgi-bin 정도일 것이다.)
참고: 필자의 경우는 다운받은 다음 압축을 풀었는데 lang 디렉토리가 없었다. 아마 미러링 하는 곳에서 압축을 잘못했던 것 같다. 그래서 다른 파일을 다운받은 다음 lang 디렉토리만 복사해 넣었다. Lang 디렉토리에는 AWStats의 결과파일 생성시 언어변환 부분이 담겨 있으므로 중요하다. 없으면 다른 파일에서라도 추출해서 꼭 복사해 넣도록 하자.
그리고 마찬가지로 /usr/local/awstats-5.1 하위의 wwwroot/icon 이하에 있는 내용들을 웹문서 루트경로의 적당한 곳에 복사한다. (/usr/local/apache/htdocs/가 웹 문서 루트라면 /usr/local/apache/htdocs/icon 정도에 복사하면 될 것이다.) awstats.model.conf 파일을 awstats.자기도메인명.conf 등으로 복사한 다음 awstats.pl이 들어있는 cgi-bin에 복사한다. 위의 conf 파일을 열고 다음의 내용을 편집한다.
LogFile의 내용을 웹 서버의 httpd.conf에서 설정한 것과 같이 맞춰준다. (웹로그 파일)
LogFormat을 1로 설정한다. 아마 기본적으로 1로 되어있을 것이다. 
DirIcons를 위에서 icon을 복사한 그 경로로 설정해준다. 
SiteDomain을 자신의 웹 서버의 도메인명으로 설정해준다.(www.mydoman.com 같은 식으로)
그 외에 필요한 부분은 읽어보고 수정을 하면 된다. 다만 영어권 사용자와 달리 웹로그 분석내용이 한글로 표시되길 원할 경우, Lang 파라미터 부분을 찾아서 다음과 같이 수정해 준다.
Lang="kr"
설정내용을 보면 웹 페이지상에서 웹로그 분석을 할 수 있도록 하는 기능을 비롯해서 다양한 부가기능이 있다. 한번씩 시도해 보기 바란다.

웹로그로부터 통계파일 생성하기

우선 커맨드상에서 다음과 같이 실행해보도록 하자.
스크립트 1
./awstats.pl -config=myvirtualhostname -update
위의 라인을 실행하기 위해서는 awstats.myvirtualhostname.conf 파일이 있어야 한다. 만약 이 파일이 없으면 awstats.conf 파일을 로딩한다. 그러면 다음과 같은 식의 결과가 출력될 것이다.

Lines in file: 225730
Found 5 dropped records,
Found 124 corrupted records,
Found 0 old records,
Found 225601 new records.
다만 방금 로그파일을 삭제했던 사용자라면 로그가 얼마 없으므로 위와 같은 정도의 결과는 나오지 않을 것이다. 위와 같이 수행하면 웹로그 파일을 분석한 결과가 텍스트로 cgi-bin 이하에 저장된다. 웹로그가 쌓여도 위의 커맨드를 실행하지 않으면 반영되지 않으므로 crontab 등을 이용해서 정기적으로 통계내용을 업데이트 할 수 있도록 한다. 다음은 awstats 의 권고안이다.
  • 10,000 visitors a month Launch AWStats once a day
  • 50,000 visitors a month Launch AWStats once every 4 hours
  • 250,000 visitors a month Launch AWStats once an hour
  • 1,000,000 visitors a month Launch AWStats once an hour
통계결과 읽기

통계파일을 읽어서 결과물로 html을 생성하도록 한다. 공식문서에는 하나하나 차례대로 만드는 방법을 먼저 설명하고 있지만, 그렇게 할 부지런한(?) 독자는 없을 것이라 생각하고 아주 게으르고 편리한 방법으로 해보겠다.

awstats를 처음 설치한 곳의 tools 서브디렉토리를 보면 awstats_buildstaticpages.pl이라는 파일이 있다. 이 펄 스크립트가 귀찮은 처리과정을 한번에 해결해주는 유틸리티이다. 다음과 같이 입력해 보자. (/usr/local/에 압축을 풀어 설치했다고 가정하고 있다는 점을 기억하길 바란다 )
스크립트 2
/usr/local/awstats-5.1/tools/awstats_buildstaticpages.pl
 -config=myvirtualhostname
 -awstatsprog=/usr/local/apache/cgi-bin/awstats.pl
 -dir=/usr/local/apache/htdocs/stats
이와 같이 입력하면 각종 결과들이 /usr/local/apache/htdocs/stats 디렉토리에 만들어진다. (stats 디렉토리는 미리 만들어져 있어야 한다.) -awstatsprog는 awstats.pl이 있는 cgi-bin의 경로이고, -dir은 결과가 만들어질 디렉토리이다.

하지만 이렇게 하면 스크립트 1이 수행될 때마다 스크립트 2를 수행해야 한다. crontab에 시간차를 두고 두 번 등록할 것인가? 이 또한 깔끔하지 못하다. 이 문제는 단지 스크립트 2 의 뒤에 -update 옵션을 붙여주는 것으로 간단히 해결된다.
/usr/local/awstats-5.1/tools/awstats_buildstaticpages.pl
 -config=myvirtualhostname
 -awstatsprog=/usr/local/apache/cgi-bin/awstats.pl
 -dir=/usr/local/apache/htdocs/stats
 -update
그리고 이 내용을 stats.cron 정도로 만들어서 /etc/cron.daily에 복사해넣으면 간단하게 해결된다. 물론 이렇게 하면 처음에 설정했던 crond 작업(스크립트 1)은 crond에서 제거해야 불필요한 서비스가 실행되는 것을 막을 수 있을 것이다. 만들어진 html 파일은 그대로 웹 브라우저에서 확인하면 된다.
TAG :
댓글 입력
자료실

최근 본 책0