Complete Virtual Mail Server/awstats/ko
This article is part of the Complete Virtual Mail Server series, and may require previous parts to have been read or followed.
postfix에서 로그 기능을 제공하긴 하지만, 그래픽 형식으로 표시하고 분석하면 더욱 이해하기 쉬울 수 있습니다. www-misc/awstats 는 널리 사용하는 로그 분석기이며 로그를 해석하고 적합한 결과 도출을 설정할 수 있습니다.
설치
AWStats는 웹 프로그램이지만 webapp-config에 의존하지 않습니다. 이머지하지 않았다면 이머지해야합니다.
root #
emerge --ask www-misc/awstats
설치하고 나면, 설정 파일을 도메인별로 만들거나 처리할 모든 도메인에 대해 만들어야합니다.
root #
cp /etc/awstats/awstats.model.conf /etc/awstats/awstats.example.com.conf
AWStats는 webapp-config로 설치하지 않지만 대힌 간단한 심볼릭 링크는 사용합니다.
root #
ln -s /usr/share/awstats/wwwroot /var/www/mail.example.com/htdocs/awstats
설정
AWStats
AWStats는 당연히 기본 설정이 딸려오겠지만, 그럼에도 불구하고 몇가지 바꿔야 할 사항이 있습니다.
이를 위해, AWStats에서 가상 호스트를 활용하지 않음을 가정합니다. 아파치에 기본으로 붙어있는 가상 호스트 로그를 사용하는 경우를 예로 든다면, AWStats 동작이 실패할 수도 있습니다.
아파치 에 붙은 로그 형식은 다음과 같이 설정합니다:
LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" VLOG=%{VLOG}e" vhost
그 다음 다음 설정으로 바꾸어야 합니다:
LogFormat = "%virtualname %host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"
다음 AWStats에서 로그파일로부터 따로 걸러볼 도메인과 별명을 알아야 합니다:
SiteDomain="example.com"
HostAliases="localhost 127.0.0.1 REGEX[example\.(com)$] REGEX[example\.(org|net)$]
또한, AWStats는 어딘가에 데이터베이스를 저장해야합니다. 젠투에서는 이 목적 때문에 /var/lib/awstats를 만들었지만 어디든지 저장할 수 있습니다. 퍼미션을 부여하여 아파치 사용자가 기록할 수 있게 했는지 확인하십시오:
DirData="/var/lib/awstats"
설정 파일의 다른 부분을 선택하는건 취향에 달려있지만, 다음 부분은 살펴볼만합니다:
기록
awstats는 데이터베이스를 빌드하려면 아파치 로그 파일을 처리해야 합니다. 동작하는지 한번 직접 확인하고 나면 그 다음 과정은 자동으로 처리할 수 있습니다.
수작업
우선, awstats 를 콘솔에서 실행하여 초기 오류를 잡아내십시오:
user $
awstats.pl -config=stats.example.com -update -showdropped
이 명령의 결과로 어떤 문제든 나와야 하며 설정에서 빠진 도메인 이름도 나와야 합니다.
크론
모두 제대로 동작한다면 cron.hourly에 추가할 수 있습니다:
#!/bin/sh
awstats.pl -config=stats.example.com -update > /dev/null 2>&1
필요한 경우 스크립드를 실행 가능하게 설정하는 것 잊지 마십시오.
Logrotate
AWStats 는 매 시간마다 로그 파일을 처리하겠지만 logrotate가 아파치 로그를 돌린다면 몇가지 항목이 빠질 수도 있습니다. 그럼에도 아래에 이 문제를 쉽게 해결할 방법이 있습니다.
# Apache2 logrotate snipet for Gentoo Linux
# Contributes by Chuck Short
#
/var/log/apache2/*log {
missingok
notifempty
sharedscripts
+ prerotate
+ /etc/cron.hourly/awstats > /dev/null 2>&1
+ endscript
postrotate
/etc/init.d/apache2 reload > /dev/null 2>&1 || true
endscript
}
Apache
AWStats를 아파치에 쓰려면 웹 호스트를 제대로 설정해야합니다. alias 섹션에 다음 부분을 추가해야합니다:
Alias /awstats/classes "/usr/share/awstats/wwwroot/classes"
Alias /awstats/css "/usr/share/awstats/wwwroot/css"
Alias /awstats/icon "/usr/share/awstats/wwwroot/icon"
Alias /awstats/js "/usr/share/awstats/wwwroot/js"
ScriptAlias /awstats/ "/usr/share/awstats/wwwroot/cgi-bin/"
awstats용 별칭
마지막으로, AWStats에서 접근할 수 있도록 올바른 권한이 필요합니다:
<Directory "/usr/share/awstats/wwwroot">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
아파치를 다시 시작하고 나면, http://stats.example.com/awstats/awstats.pl?config=stats.example.com 에서 AWStats를 사용할 수 있어야합니다. 설정 옵션을 전달하지 않으면 현재 호스트 이름을 사용하는데, 이 경우 옵션을 생략할 수 있습니다.
메일 로그용 AWStats
AWStats는 아파치 로그 분석기로 알려져있습니다. 하지만 메일 로그 분석에도 사용할 수 있습니다.
설정
awstats.stats.example.com.conf를 awstats.mail.example.com.conf로 복사하고 난 후에는 AWStats를 메일 로그 분석기로 돌아갈 수 있게 몇가지 설정을 바꾸어야합니다.
-LogFile="/var/log/apache2/access_log"
+LogFile="perl /usr/bin/awstats_maillogconvert.pl standard < /var/log/mail.log |"
-LogType=W
+LogType=M
-LogFormat=1
+LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd"
-SiteDomain="localhost"
+SiteDomain="example.com"
-HostAliases="localhost 127.0.0.1 REGEX[myserver\.com$]"
+HostAliases="localhost 127.0.0.1 REGEX[example\.(net|org)$]"
-DirData="."
+DirData="/var/lib/awstats"
-LevelForBrowsersDetection=2 # 0 disables Browsers detection.
+LevelForBrowsersDetection=0 # 0 disables Browsers detection.
# 2 reduces AWStats speed by 2%
# allphones reduces AWStats speed by 5%
-LevelForOSDetection=2 # 0 disables OS detection.
+LevelForOSDetection=0 # 0 disables OS detection.
# 2 reduces AWStats speed by 3%
-LevelForRefererAnalyze=2 # 0 disables Origin detection.
+LevelForRefererAnalyze=0 # 0 disables Origin detection.
# 2 reduces AWStats speed by 14%
-LevelForRobotsDetection=2 # 0 disables Robots detection.
+LevelForRobotsDetection=0 # 0 disables Robots detection.
# 2 reduces AWStats speed by 2.5%
-LevelForSearchEnginesDetection=2 # 0 disables Search engines detection.
+LevelForSearchEnginesDetection=0 # 0 disables Search engines detection.
# 2 reduces AWStats speed by 9%
-LevelForKeywordsDetection=2 # 0 disables Keyphrases/Keywords detection.
+LevelForKeywordsDetection=0 # 0 disables Keyphrases/Keywords detection.
# 2 reduces AWStats speed by 1%
-LevelForFileTypesDetection=2 # 0 disables File types detection.
+LevelForFileTypesDetection=0 # 0 disables File types detection.
# 2 reduces AWStats speed by 1%
LevelForWormsDetection=0 # 0 disables Worms detection.
# 2 reduces AWStats speed by 15%
-ShowRobotsStats=HBL
+ShowRobotsStats=0
-ShowEMailSenders=0
+ShowEMailSenders=HBML
-ShowEMailReceivers=0
+ShowEMailReceivers=HBML
-ShowSessionsStats=1
+ShowSessionsStats=0
-ShowPagesStats=PBEX
+ShowPagesStats=0
-ShowFileTypesStats=HB
+ShowFileTypesStats=0
-ShowFileSizesStats=0
+ShowFileSizesStats=1
-ShowDownloadsStats=HB
+ShowDownloadsStats=0
-ShowOSStats=1
+ShowOSStats=0
-ShowBrowsersStats=1
+ShowBrowsersStats=0
-ShowOriginStats=PH
+ShowOriginStats=0
-ShowKeyphrasesStats=1
+ShowKeyphrasesStats=0
-ShowKeywordsStats=1
+ShowKeywordsStats=0
-ShowMiscStats=a
+ShowMiscStats=0
-ShowHTTPErrorsStats=1
+ShowHTTPErrorsStats=0
-ShowSMTPErrorsStats=0
+ShowSMTPErrorsStats=1
제 위치의 설정을 이렇게 바꾸면, 어떤 문제 없이 직접 실행한 상태로 동작해야합니다.
user $
awstats.pl -config=mail.example.com -showcorrupted -showdropped
기록
메일 로그를 매 시간마다 검사하려면, cron.hourly의 기존 awstats 스크립트에 다음의 내용을 추가할 수 있습니다:
awstats.pl -config=mail.example.com -update > /dev/null 2>&1
또한 syslog도 다른 파일로 돌리기 때문에, AWStats에서 메일 로그를 전환하기 전 메일로그 파일을 전환해야합니다:
# Mail system
/var/log/mail.log /var/log/mail.info /var/log/mail.err /var/log/mail.warn {
sharedscripts
missingok
prerotate
/etc/cron.hourly/awstats
endscript
postrotate
/etc/init.d/syslog-ng reload > /dev/null 2>&1 || true
endscript
}
/var/log/mail.log파일은 동일한 서버에 있지 않아도 됩니다. AWStats에서 접근할 수 있어야 합니다. NFS를 통해 가능합니다. 또는 syslog에게 원격 로깅을 수행하도록 설정해도 됩니다.
아파치 파일 로깅을 원하지 않거나 웹 메일이 다른 서버에 있다면, 웹 서버 로그 해석을 크론 작업에서 제거할 수 있습니다.