Complete Virtual Mail Server/awstats/ko

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Complete Virtual Mail Server/awstats and the translation is 82% complete.
Outdated translations are marked like this.
Other languages:
참고
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 동작이 실패할 수도 있습니다.

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

코드 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.confawstats 도메인 감청 설정
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 &gt; /dev/null 2&gt;&1 || true
    endscript
}
참고
/var/log/mail.log파일은 동일한 서버에 있지 않아도 됩니다. AWStats에서 접근할 수 있어야 합니다. NFS를 통해 가능합니다. 또는 syslog에게 원격 로깅을 수행하도록 설정해도 됩니다.

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