길이 이야기(Giri's Story)

[Linux] 아파치 웹로그분석툴 webalizer 설치 본문

IT기술,개발/웹프로그래밍

[Linux] 아파치 웹로그분석툴 webalizer 설치

길이 2011. 3. 31. 13:14



당신이 웹프로그래머라면 APM(apache + PHP + mysql) 또는 LAMP (Linux + APM)이라는 용어를 많이 들어보았을 것이다. APM시스템 운영시 웹서비스가 얼마나 효과적으로 운영되고 잘~ 운영되는지 분석하기 위해 웹로그를 꼭 분석해야 한다. 오늘은 웹서버 운영시 웹사이트 접속자를 분석할 수 있는 무료 웹로그 분석툴인 webalizer 설치방법에 대해 알아보겠다.

아울러 다음편에 소개될 logrotate를 이용해 분석이 끝난 아파치의 웹로그파일을 효율적으로 백업하고 필요없는 파일들을 자동으로 정리하는 부분까지 포스팅 될 예정이니 관심있게 봐주기 바란다.
(일부 웹개발자들이 웹로그관리를 신경쓰지 않는 경우가 더러 있는데 이는 시스템 자원을 효율적으로 관리하기 위한 필수사항이기도 하지만 httpd(aphach)모듈의 속도와도 연관되어 있으니 관련부분들을 심도있게 볼 필요가 있다.)

상기화면에서 보듯이 webalizer는 가장 기본적인 페이지뷰, hits수, 방문자등에 대한 분석과 시간별, 일자별, 자주 여는 페이지등의 정보를 제공한다. 부가적으로 GeoIP 모듈을 탑재하면 방문자의 국가정보까지 알 수 있으나 부과기능은 제외하고 기본 프로그램의 설치 및 설정 방법에 대해 알아본다.

-----------------

먼저 설치할 서버의 터미널(telnet 또는 ssh)에 접근하여 root권한으로 로그인을 한다.


# webalizer 계정생성


이부분은 webalizer의 분석결과를 웹화면에서 볼 수 있도록 웹계정을 개설하고 가상호스트 설정을 통해
서브도메인으로 연결할 계정을 생성하는 과정이다.

[root@localhost ~] useradd weblog -s /bin/false -d /home/weblog
[root@localhost ~] passwd weblog

먼저 useradd 명령을 통해 weblog 라는 계정을 생성하는데 -s /bin/false 옵션의 경우는 실제 weblog계정으로 터미널(ssh) 접속을 하면 접속을 강제로 차단한다는 내용이다. 일반적인 계정 발급방식대로 처리해도 되지만, weblog계정을 들어와서 계정변경을 할 일이 없어서 저렇게 설정해두었다. passwd 의 경우는 접속되면 차단되기는 하지만 함부로 접속할 수 없도록 패스워드를 설정해 둔다.


# webalizer 하단의 분석대상사이트 폴더생성

[root@localhost ~] 
cd /home
[root@localhost ~] chmod 705 weblog
[root@localhost ~] cd weblog
[root@localhost ~] mkdir public_html
[root@localhost ~] cd public_html
[root@localhost ~] mkdir (분석사이트도메인)

/home 디렉토리로 이동하여 웹페이지에 접근하는데 문제가 없도록 퍼미션을 705로 변경한다. (서버 기본설정에 따라 퍼미션이 다르니 확인하고 진행)
/home/weblog/ 폴더로 이동하여 가상호스트 연결폴더로 사용할 public_html 폴더를 생성한다.
그리고 각각의 서버구성에 맞게 하위경로를 만들던지 아니면 public_html 최상단을 바로 이용해도 문제는 없다.
(필자의 경우 동일 서버내에 여러개의 사이트가 운영되므로 weblog라는 웹루트 하단에 사이트별로 폴더를 만들기로 했다.)


# 가상호스트 설정

[root@localhost ~] vi /usr/local/apache2/conf/extra/httpd-vhosts.conf

<VirtualHost weblog도메인.com:80>
    ServerAdmin master@localhost
    DocumentRoot "/home/weblog/public_html"
    ServerName weblog도메인.com
    ErrorLog "logs/weblog도메인.com-error_log"
    CustomLog "logs/weblog도메인.com-access_log" common
</VirtualHost>

위와 같이 가상호스트 설정까지 마쳤다.


# webalizer 설치

서버에서 yum이나 rpm으로 설치가 가능하지만, 이상하게 필자가 사용하는 서버에서는 yum으로 설치하니 제대로 작동되지않아 정석으로 바이러리, 컴파일 방식으로 설치를 진행하였다.

자, 우선 설치파일을 받아서 설치를 시작해보자.

[root@localhost ~] cd /usr/local/
[root@localhost ~] wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.23-04-src.tgz
[root@localhost ~] tar xvfz webalizer-2.23-04-src.tgz
[root@localhost ~] cd webalizer-2.23-04

[root@localhost ~] ./configure -with-language=korean
[root@localhost ~] make
[root@localhost ~] make install

먼저 /usr/local/ 폴더로 이동하여 wget 명령으로 webalizer 프로그램을 다운받았다.
/usr/local/ 위치에 webalizer-2.23-04-src.tgz 파일의 다운로드가 완료되면 tar 명령으로 압축을 풀어준다.
webalizer-2.23-04 폴더에 압축풀기가 완료되면 해당 폴더로 들어간다.
한글버전을 사용해야 하니 configure 옵션에 -with-language=korea 를 넣어 한글리포트가 나오도록 옵션을 준다.
make 와 make all 을 통해 프로그램을 컴파일 해준다.

자, 컴파일 설치가 끝났으니 환경설정에 들어가보도록 하자.

[root@localhost ~] 
cd /usr/local/
[root@localhost ~] ln -s webalizer-2.23-04 webalizer
[root@localhost ~] cd webalizer
[root@localhost ~] mkdir conf
[root@localhost ~] mkdir bin
[root@localhost ~] mkdir logs
[root@localhost ~] cd conf
[root@localhost ~] cp /usr/local/etc/webalizer.conf.sample 도메인.com.conf

/usr/local/ 로 이동후에 사용편의를 위한 디렉토리 링크(ln -s webalizer-2.23-04 webalizer)를 걸어준다. 이렇게 하면 webalizer-2.23-04 버전을 쉽게 식별할 수 있고, 짧은 webalizer 폴더명을 같이 사용할 수 있다.
webalizer 폴더로 들어가 mkdir 명령을 이용하여 conf, bin, logs 폴더를 생성한다. 다시 conf 폴더로 들어가서 /usr/local/etc/webalizer.conf.sample 샘플파일을 복사해온다.

# .conf 파일 수정

vi 편집기를 이용하여 아래 3가지 항목의 값을 변경하고 주석(#)이 있다면 풀어준다.
[root@localhost ~] vi /usr/local/webalizer/conf/도메인.com.conf

 1. LogFile: 분석할 로그파일 위치 (예: /usr/local/apache2/logs/도메인.com-access_log )
 2. OutputDir: 분석결과 저장위치 (예: /home/weblog/public_html/도메인.com )
 3. HostName: 호스트명 FQDN형식 (예:
www.도메인.com or 서브도메인.com )

[root@localhost ~] cd /usr/local/webalizer/bin
[root@localhost ~] vi webalizer.sh

conf 파일 수정을 마쳤으면, /usr/local/webalizer/bin 으로 이동후
vi 편집기를 통해 webalize.sh (쉘스크립트) 파일을 생성하고 아래와 같은 내용으로 스크립트를 만든다.

--
#!/bin/bash

/usr/local/bin/webalizer -c /usr/local/webalizer/conf/도메인.com.conf > /usr/local/webalizer/logs/도메인.com
--
위 내용으로 저장 후 vi 종료.


[root@localhost ~] 
chmod 755 webalizer.sh
쉘 스크립트가 실행될 수 있도록 퍼미션을 조정한다.

이제 설치, 환경설정과 실행 스크립트까지 만들었으니 마무리만 남았다.
webalize가 하루 1번, 접속자가 없는 시간에 통계페이지 리포트를 만들도록 crontab을 이용해 스케쥴을 설정한다.

>> crontab에 매일 새벽 3시마다 돌아가게 설정
[root@localhost ~] vi /etc/crontab

--------
# webalizer script
00 03 * * * root /usr/local/webalizer/bin/webalizer.sh > /tmp/webalizer_cron.log
--------
위와 같은 내용을 관리하기 편한 위치에 추가한다.


>> 아파치 재가동 및 webalizer 실행

[root@localhost ~] service httpd restart
[root@localhost ~] /usr/local/webalizer/bin/webalizer.sh > /tmp/webalizer_cron.log

자~ 마무리가 되었다.
로그양에 따라 프롬프트가 멈춰져 있는 시간이 길어질 수 있는데... 실행이 완료될때까지 기다리면 된다.
실시간으로 쌓이는 웹로그파일의 크기가 크면 클수록 분석 시간과 서버의 CPU부하가 늘어날 수 있는데...
분석이 끝난 로그의 경우는 logrotate 프로그램을 이용하여 분리시키고 경우에 따라 분석이 끝난 로그 파일은 일정시간이 지난 후 삭제하는 것이 좋다.(물론 로그의 활용범위가 많으므로 여유공간이 많다면 남겨둬두 된다.)
로그파일의 분리(logrotate) 기능은 다음 포스팅에서 저 자세히 다뤄보도록 하자.

이제 완성된 리포트를 웹페이지에서 호출해보자.



그림에서 보는바와 같이 웹서비스에서 PV나 UV(Visitor)는 서버의 관리적인 측면에서도 매우 중요한 분석항목이지만, 서비스 기획자나 마케팅 담당자에게도 아주 유용한 분석데이터임에 틀림이 없다. 힘들게 만들어 놓고 혼자만 사용하지 말고 같이 일하는 팀원과 데이터를 공유하여 효율적인 서비스가 되도록 적극 활용하도록 하자.

Comments