달력

42024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

다양한 웹로그 분석 프로그램들이 존재하며, 지금 소개하려고 하는 AWStats 는 GNU GPL 을 따르는 훌륭한 웹 로그 분석 도구이다.

다운로드는 http://awstats.sourceforge.net 에서 받을 수 있다. 공식 사이트에는 apache 와 iis 의 두가지를 설명하고 있지만, 현재 필자가 설치해본 것이 redhat linux 에서 apache 를 사용중인 경우였으므로 이 경우를 예를 들어 설명하기로 하겠다. 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 

(보통 기본값인 위와 같이 CustomLog /usr/local/apache/logs/access_log common  하면 된다)

 

뒤에 붙은 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. 웹서버를 새로 시작하도록 한다. ( /usr/local/apache/bin/apachectl restart )

 

그리고 나서 브라우저로 웹사이트에 접속한 다음 로그파일(access_log)을 열어보도록 하자.

다음과 같은 식으로 로그가 남으면 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-6.1.tgz 를 /usr/local 에 다운받았다고 가정하자.

tar xzvf awstats-6.1.tgz 라고 입력하면, /usr/local/awstats-6.1 이라는 경로 밑으로 파일들이 생성될 것이다.

/usr/local/awstats-6.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-6.1/wwwroot/icon 디렉토리에 있는 내용들을 웹문서 루트경로인 /home/계정명디렉토리/public_html/icon 정도에 복사하면 될 것이다.

 

/usr/local/apache/cgi-bin  디렉토리에 있는  awstats.model.conf 파일을 awstats.자기도메인명(myvirtualhostname).conf 으로 하나를 더 만든 후 /usr/local/awstats-6.1/wwwroot/cgi-bin 에 복사한다.

 

awstats.자기도메인명(myvirtualhostname).conf 파일을 열고 다음의 내용을 편집한다.

 

1.LogFile 의 내용을 웹서버의 httpd.conf 에서 설정한 것과 동일하게 셋팅한다.

(위에서 /usr/local/apache/logs/access_log    와 같이 셋팅했다)

2.LogFormat 을 1로 설정한다(기본 1, NCSA apache combined/ELF/XLF로그포맷의 의미)

3.DirIcons 를 위에서 icon 을 복사한 그 경로로 설정해준다.(보통 /icon 으로 셋팅한다) 

4.SiteDomain 을 자신의 웹서버의 도메인명으로 설정해준다. ( mydoman.com 같은식으로 )

5.웹로그 분석내용이 한글로 보길 원하면, Lang 파라메터 부분을 찾아서 Lang="kr"로 수정.

 

그 외에 필요한 부분은 읽어보고 수정을 하면 된다.(더 이상 할거 없당)

설정내용을 보면 웹페이지상에서 웹로그분석을 할 수 있도록 하는 기능을 비롯해서 다양한 부가기능이 있다. 한번씩 시도해 보기 바란다.

 

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

 

우선 telnet 커맨드상에서 다음과 같이 실행해보도록 하자.

스크립트 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

 

위 얘기가 이얘기다.    한달에~
- 10,000명의 방문자가 있다면 하루에 한번
- 50,000명의 방문자가 있다면 매 4시간에 한번
- 250,000명의 방문자가 있다면 한시간마다
- 1,000,000명의 방문자가 있다면 한시간마다. 

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

 

awstats 를 처음 설치한 곳(/usr/local/awstats-6.1/tools/)를 보면 awstats_buildstaticpages.pl 이라는 파일이 있다. 이 펄 스크립트가 귀찮은 처리과정을 한번에 해결해주는 유틸리티이다.

다음과 같이 입력해 보자.

 

스크립트 2

/usr/local/awstats-6.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-6.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/ 또는 /etc/cron.hourly/에 복사해넣으면 간단하게 해결된다.

 

물론 이렇게 하면 처음에 설정했던 crond 작업(스크립트 1)은 crond 에서 제거해야 불필요한 서비스가 실행되는 것을 막을 수 있을 것이다.

 

이젠 웹브라우저에서 확인만 하면 된다.

awstats.자기도메인명(myvirtualhostname).conf 의 자기도메인명(myvirtualhostname)을 아래에 적용한다.

 

http://나의도메인주소/cgi-bin/awstats.pl?config=자기도메인명(myvirtualhostname 엔터

 

끝이당...^^

 

 

Posted by tornado
|