This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
Complete Virtual Mail Server/awstats/ko
도입부
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
그 다음 다음 설정으로 바꾸어야 합니다:
/etc/awstats/awstats.example.com.conf
아파치 로그 형식과 맞추기.LogFormat = "%virtualname %host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"
다음 AWStats에서 로그파일로부터 따로 걸러볼 도메인과 별명을 알아야 합니다:
/etc/awstats/awstats.example.com.conf
Make awstats listen to the domainsSiteDomain="example.com" HostAliases="localhost 127.0.0.1 REGEX[example\.com$] REGEX[example\.(org|net)$]
또한, AWStats는 어딘가에 데이터베이스를 저장해야합니다. 젠투에서는 이 목적 때문에 /var/lib/awstats를 만들었지만 어디든지 저장할 수 있습니다. 퍼미션을 부여하여 아파치 사용자가 기록할 수 있게 했는지 확인하십시오:
/etc/awstats/awstats.example.com.conf
AWStats 데이터베이스 저장소DirData="/var/lib/awstats"
설정 파일의 다른 부분을 선택하는건 취향에 달려있지만, 다음 부분은 살펴볼만합니다:
기록
awstats는 데이터베이스를 빌드하려면 아파치 로그 파일을 처리해야 합니다. 동작하는지 한번 직접 확인하고 나면 그 다음 과정은 자동으로 처리할 수 있습니다.
수작업
우선, awstats 를 콘솔에서 실행하여 초기 오류를 잡아내십시오:
user $
awstats.pl -config=stats.example.com -update -showdropped
이 명령의 결과로 어떤 문제든 나와야 하며 설정에서 빠진 도메인 이름도 나와야 합니다.
크론
모두 제대로 동작한다면 cron.hourly에 추가할 수 있습니다:
/etc/cron.hourly/awstats
AWstats 크론 작업#!/bin/sh awstats.pl -config=stats.example.com -update > /dev/null 2>&1
필요한 경우 스크립드를 실행 가능하게 설정하는 것 잊지 마십시오.
Logrotate
AWStats 는 매 시간마다 로그 파일을 처리하겠지만 logrotate가 아파치 로그를 돌린다면 몇가지 항목이 빠질 수도 있습니다. 그럼에도 아래에 이 문제를 쉽게 해결할 방법이 있습니다.
/etc/logrotate.d/apache2
초기화 이전 스크립트 비교# 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 섹션에 다음 부분을 추가해야합니다:
/etc/apache2/vhosts.d/stats.example.com
awstats용 별칭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에서 접근할 수 있도록 올바른 권한이 필요합니다:
/etc/apache2/vhosts.d/stats.example.com
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를 메일 로그 분석기로 돌아갈 수 있게 몇가지 설정을 바꾸어야합니다.
/etc/awstats.mail.example.com.conf
access.log 대신 mail.log 에 기록 (diff -u, 추가 삭제만 표시)-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 스크립트에 다음의 내용을 추가할 수 있습니다:
/etc/cron.hourly/awstats
메일 기록 해석 추가awstats.pl -config=mail.example.com -update > /dev/null 2>&1
또한 syslog도 다른 파일로 돌리기 때문에, AWStats에서 메일 로그를 전환하기 전 메일로그 파일을 전환해야합니다:
/etc/logrotate.d/syslog-ng
syslog에서 메일 로그 항목 수정# 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에게 원격 로깅을 수행하도록 설정해도 됩니다.
아파치 파일 로깅을 원하지 않거나 웹 메일이 다른 서버에 있다면, 웹 서버 로그 해석을 크론 작업에서 제거할 수 있습니다.