본문 바로가기

StoreHouse/Server

RedHat logrotate + webalizer : 웹로그 관리 및 분석

logrotate은 로그 파일을 잘라서, 로그 파일이 일정 크기 이상으로 크지지 않게 해주는 프로그램입니다. webalizer는 로그분석기입니다. 상용 로그 분석기들도 있지만, webalizer도 매우 훌륭합니다. interative한 실시간 CRM이 필요하시다면, 상용을 구입하셔야 하겠지만, 그렇지 않다면 webalizer만으로도 충분합니다.

이 문서는 logratate와 webalizer에 대해서 자세히 설명하지 않으며, 정기적으로 logrotate으로 로그 파일을 짜른 후에 webalizer로 분석하는 방법을 간략하게 설명합니다.

전체적인 순서는 다음과 같습니다.

cron이 logrotate를 실행
logrotate이 로그를 짜른다음, webalizer를 실행
webalizer가 로그를 분석한다.


cron에 logrotate을 등록한다.


crontab에
/usr/sbin/logrotate /etc/logrotate.conf
를 등록합니다. 한 시간에 한 번 정도 실행을 한다면 다음과 같이 crontab에 넣어 주면 되겠지요.
0 * * * * /usr/sbin/logrotate /etc/logrotate.conf

그러면 매 시간마다 logrotate를 실행하게 됩니다. /etc/logrotate.conf는 logrotate의 설정 파일입니다.

logrotate.conf 설정


logrotate은 리눅스를 설치하면 기본적으로 설치가 되어 있지만 설치가 되어 있지 않다면, ftp://ftp.redhat.com/pub/redhat/linux/code/logrotate/에서 구할 수 있습니다. redhat ftp에 접속하기 귀찮으신 분은 여기를 누르세요. 설치( make; make install)는 간단하므로 생략합니다.
logrotate.conf 파일을 아래 내용으로 작성합니다. cron에 등록할 때 적어준 위치에 이 파일을 두면 됩니다. 위와 같이 한 경우리면 /etc/logrotate.conf로 작성하면 되겠지요.

errors jirisan@rok.to

/home/httpd/logs/access_log {
daily
rotate 5
mail jirisan@rok.to
errors jirisan@rok.to
size=100k
postrotate
/opt/webalizer/webalizer -c /opt/etc/webalizer.conf
endscript
}

postrotate/endscript가 로그를 자르고 나 다음에 실행할 명령을 적을 두는 곳입니다. logrotate이 로그를 자르고 나면 webalizer를 실행하게 되지요.

webalizer.conf 설정


webalizer의 홈페이지는 http://www.mrunix.net/webalizer/입니다. 그곳에서 소스와 바이너리를 구할 수 있습니다. 귀찮으신 분은 여기를 누르시면 됩니다. 설치(./configure --prefix=/opt/webalizer --with-language=korean; make ; make install)는 간단하므로 생략합니다. 저는 /opt/webalizer에 설치를 하였지만 디폴트로는 /usr/local/에 설치가 됩니다.
/opt/etc/webalizer.conf의 내용은 다음과 같습니다.

# start
LogFile /home/httpd/logs/access_log.1
LogType clf
OutputDir /home/httpd/htdocs/usage
HistoryName webalizer.hist
Incremental yes
IncrementalName webalizer.current
ReportTitle Usage Statistics for
HostName yorinuri.com
HTMLExtension html
PageType htm*
PageType cgi
PageType phtml
PageType php3
PageType php
PageType pl
TopSites 1
TopKSites 1
TopURLs 100
TopKURLs 50
TopReferrers 50
TopAgents 15
TopCountries 30
TopEntry 10
TopExit 10
TopSearch 20
TopUsers 50
HideURL *.gif
HideURL *.GIF
HideURL *.jpg
HideURL *.JPG
HideURL *.png
HideURL *.PNG
HideURL *.ra
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=
# end

위와 같이 하셨다면, http://hostname/usage/에서 webalizer가 분석한 결과를 볼 수 있습니다.

LogFile, LogType, OutputDir 만 주의하시면 됩니다.

LogFile의 경우 access_log가 아니라 access_log.1입니다. logrotate가 log를 짜르면 access_log 파일에는 새로운 로그가 쌓이게 되고 현재까지 쌓인 로그는 access_log.1 파일로 짤려 나오기 때문입니다.

LogType는 일반적인 웹서버는 clf 타입으로 로그를 남기지만, 관리자가 custom 로그를 남기게 설정을 하였다면, webalizer도 그기에 맞추어야겠죠? 또한 webalizer는 squid 로그와 ftp 로그도 지원합니다. web log를 분석하는 것이 아니라 squid로그나 ftp 로그를 분석하는 것이라면 각각 squi, ftp로 적어 주면 됩니다.

OutputDir은 웹으로 볼 수 있는 디렉토리이어야 합니다. webalizer의 결과가 html 형태로 출력되기 때문입니다. 웹으로 볼 수 없는 디렉토리면 분석 결과를 pc로 가져와서 봐야 하겠죠.

webalizer 에대해 자세히 보기 http://www.superuser.co.kr/weblog/webalizer/

출처 2001/09/11 윤희 남편