Complete Virtual Mail Server/awstats/ko

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Complete Virtual Mail Server/awstats and the translation is 100% complete.

Other languages:
English • ‎русский • ‎한국어

도입부

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 동작이 실패할 수도 있습니다.

아파치 에 붙은 로그 형식은 다음과 같이 설정합니다:

코드 Apache 로그 형식
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.confMake awstats listen to the domains
SiteDomain="example.com"
 
HostAliases="localhost 127.0.0.1 REGEX[example\.com$] REGEX[example\.(org|net)$]

또한, AWStats는 어딘가에 데이터베이스를 저장해야합니다. 젠투에서는 이 목적 때문에 /var/lib/awstats를 만들었지만 어디든지 저장할 수 있습니다. 퍼미션을 부여하여 아파치 사용자가 기록할 수 있게 했는지 확인하십시오:

파일 /etc/awstats/awstats.example.com.confAWStats 데이터베이스 저장소
DirData="/var/lib/awstats"

설정 파일의 다른 부분을 선택하는건 취향에 달려있지만, 다음 부분은 살펴볼만합니다:

기록

awstats는 데이터베이스를 빌드하려면 아파치 로그 파일을 처리해야 합니다. 동작하는지 한번 직접 확인하고 나면 그 다음 과정은 자동으로 처리할 수 있습니다.

수작업

우선, awstats 를 콘솔에서 실행하여 초기 오류를 잡아내십시오:

user $awstats.pl -config=stats.example.com -update -showdropped

이 명령의 결과로 어떤 문제든 나와야 하며 설정에서 빠진 도메인 이름도 나와야 합니다.

크론

모두 제대로 동작한다면 cron.hourly에 추가할 수 있습니다:

파일 /etc/cron.hourly/awstatsAWstats 크론 작업
#!/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.comawstats용 별칭
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.comawstats 용 별칭
<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.confawstats.mail.example.com.conf로 복사하고 난 후에는 AWStats를 메일 로그 분석기로 돌아갈 수 있게 몇가지 설정을 바꾸어야합니다.

파일 /etc/awstats.mail.example.com.confaccess.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-ngsyslog에서 메일 로그 항목 수정
# 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에게 원격 로깅을 수행하도록 설정해도 됩니다.

아파치 파일 로깅을 원하지 않거나 웹 메일이 다른 서버에 있다면, 웹 서버 로그 해석을 크론 작업에서 제거할 수 있습니다.