AWStats
공식 웹 사이트 : https://awstats.sourceforge.io
Github : https://github.com/eldy/awstats
로그 분석 오픈소스로 자유롭게 사용 가능하며 무료이지만 상용 프로그램 못지않게 강력한 도구입니다.
웹(Apache, Nginx, Windwos IIS), 스트리밍, FTP, 웹메일서버 등 다양하게 분석이 가능하며 사용자가 직접 보고 분석할 수 있도록 그래픽 웹 페이지(HTML 페이지)에 로그에 포함된 모든 가능한 정보를 확인할 수 있습니다.
AWStats는 명령줄에서 작동하지만 CGI로도 작동하므로 Perl, CGI 및 로그 액세스를 허용하는 모든 웹 호스팅 공급자와 함께 사용 가능합니다.
□ 설치 환경 및 준비물
릴리즈 설치 테스트 : 2020-10-14
서버준비 | CentOS 8 리눅스 설치 서버 [포스팅 참고] |
OS Version | CentOS Linux release 8.2.2004 (Core) |
WEB | Apache(httpd) 2.4.X |
AWStats | 7.8 (마지막 안정화 버전 : 2020-04-30) |
STEP01 → Perl 설치 확인 및 AWStats 다운
※ AWStats 직접 다운로드 [ https://awstats.sourceforge.io/#DOWNLOAD ]
※ 새로운 기능과 이전 버전과의 호환성은 [ Changelog ] 참고
※ AWStats 6.X 이상부터는 Perl 버전이 5.00503 이상 필요
1-1 Perl 설치 여부 확인 및 설치
[root@localhost ~]# rpm -qa | grep perl (RPM 설치 확인)
[root@localhost ~]# dnf install perl (없다면 Perl 설치)
[root@localhost ~]# perl -v (버전 확인)
1-2 AWStats 다운 및 경로 이동
직접 다운받고 싶다면 위 URL을 통해 다운
서버에서 바로 받을 경우는 아래의 Wget을 이용
[root@localhost ~]# wget https://prdownloads.sourceforge.net/awstats/awstats-7.8.tar.gz (다운)
[root@localhost ~]# tar xvfz awstats-7.8.tar.gz (압축해제)
[root@localhost ~]# mv awstats-7.8 /usr/local/awstats (폴더 이동 및 이름 변경)
STEP02 → AWStats 사용자 Config 파일 생성
[root@localhost ~]# cd /usr/local/awstats/tools (경로이동)
[root@localhost tools]# ./awstats_configure.pl (파일 실행, 순서대로 진행)
-----> Running OS detected: Linux, BSD or Unix
-----> Check for web server install
Enter full config file path of your Web server.
Example: /etc/httpd/httpd.conf
Example: /usr/local/apache2/conf/httpd.conf
Example: c:\Program files\apache group\apache\conf\httpd.conf
[아파치 httpd.conf 파일 절대 경로 입력, RPM패키지 설치 시 일반적으로 아래의 경로에 있습니다.]
Config file path ('none' to skip web server setup):
> /etc/httpd/conf/httpd.conf
-----> Check and complete web server config file '/etc/httpd/conf/httpd.conf'
Add 'Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"'
Add 'Alias /awstatscss "/usr/local/awstats/wwwroot/css/"'
Add 'Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"'
Add 'ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"'
Add '<Directory>' directive
AWStats directives added to Apache config file.
-----> Update model config file '/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf'
File awstats.model.conf updated.
-----> Need to create a new config file ?
Do you want me to build a new AWStats config/profile
[새로운 AWStats 구성 및 프로필을 생성할 경우 Y]
file (required if first install) [y/N] ? y
-----> Define config file name to create
What is the name of your web site or profile analysis ?
Example: www.mysite.com
Example: demo
[분석할 본인의 사이트 도메인 이름 입력]
Your web site, virtual server or profile name:
> foxydog11.com
-----> Create config file '/etc/awstats/awstats.foxydog.co.kr.conf'
Config file /etc/awstats/awstats.foxydog.co.kr.conf created.
-----> Define config file path
In which directory do you plan to store your config file(s) ?
Default: /etc/awstats
[구성 파일을 어느 디렉토리에 저장하는지? 디폴트 경로 설정으로 엔터]
Directory path to store config file(s) (Enter for default):
> Enter(엔터)
-----> Add update process inside a scheduler
Sorry, configure.pl does not support automatic add to cron yet.
You can do it manually by adding the following command to your cron:
[스케줄러 관련 설명으로 현재 configure.pl 파일이 Cron탭에 자동 추가 지원을 하지 않기 때문에 뒤에 로그 분석
자동 업데이트 방법을 추가 설명하도록 하겠습니다]
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=foxydog.co.kr
Or if you have several config files and prefer having only one command:
/usr/local/awstats/tools/awstats_updateall.pl now
Press ENTER to continue...
Enter(엔터)
[사용자 CONF파일 생성 확인 및 수동으로 통계 업데이트 방법 설명]
A SIMPLE config file has been created: /etc/awstats/awstats.foxydog11.com.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for 'foxydog11.com' with command:
> perl awstats.pl -update -config=foxydog11.com
You can also read your statistics for 'foxydog11.com' with URL:
> http://localhost/awstats/awstats.pl?config=foxydog11.com
Press ENTER to finish...
Enter(엔터) - 최종 완료
※ httpd.conf 파일 설정이 맨 하단에 자동으로 추가된 것을 확인 (스크린샷 대처)
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
STEP03 → AWStats 사용자 Config 파일 수정
※ awstats_configure.pl 실행파일로 사용자 Config 파일을 생성했다면 아래의 경로에 자동으로 생성
[root@localhost ~]# cd /etc/awstats (경로 이동)
[root@localhost awstats]# ll
-rw-r--r-- 1 root root 64553 10월 14 03:56 awstats.foxydog11.com.conf (파일 확인)
[root@localhost awstats]# vim awstats.foxydog11.com.conf (설정 수정)
해당 라인 근처에 보면 예시(Example)가 전부 있으므로 참고하시 바랍니다.
50 #LogFile="/var/log/httpd/mylog.log" [주석(#) 처리]
51 LogFile="/home/test/weblog/foxydog11.com-access_log.%YY%MM%DD" [추가]
※저의 경우는 가상 호스트별로 도메인(vhost.comf)을 관리하고 있기 때문에 각 CustomLog 설정이 걸려있습니다.
일반적인 사이트 하나만 있다면 하나의 Access로그 파일에 쌓이므로 기본 로그 경로는
/var/log/httpd/access_log입니다.
※ awstats.conf 설정에는 전체 로그를 조회할 경우는 년월일(%YY%MM%DD)로 표기할 것
62 LogType=W [Web log file]
126 LogFormat=1 [1번일 경우 Apache combined logs 기본 포멧 사용/ 2번은 Windows IIS]
※ Apache CustomLog 설정 시에는 꼭 combined 사용해주시기 바랍니다.
157 SiteDomain="foxydog11.com" [개인 사이트 도메인]
172 HostAliases="foxydog.11.com www.foxydog11.com 127.0.0.1 localhost" [별칭 설정]
941 Lang="ko" [auto → ko 언어(한국어) 변경]
STEP04 → awstats.pl 통한 통계 데이터 업데이트
[root@localhost ~]# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=foxydog11.com -update
Error: AWStats database directory defined in config file by 'DirData' parameter (/var/lib/awstats) does not exist or isnot writable. Setup ('/etc/awstats/awstats.foxydog11.com.conf' file, web server or permissions) may be wrong.
Check config file, permissions and AWStats documentation (in 'docs' directory).
실행했더니 에러 발생하여 내용을 확인해보니 결과 값 생성을 위해 디폴트 경로[/var/lib/awstats] 폴더가 있어야 하나 자동으로 생성되는 게 아니다 보니 수동으로 생성을 해야 합니다.
[root@localhost ~]# mkdir /var/lib/awstats (경로에 폴더 생성)
※ 재시도[정상적인 패턴]
[root@localhost ~]# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=foxydog11.com -update
Create/Update database for config "/etc/awstats/awstats.foxydog11.com.conf" by AWStats version 7.8 (build 20200416)
From data in log file "/home/test/weblog/foxydog11.com-access_log.201015"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 23
Found 0 dropped records,
Found 0 comments,
Found 0 blank records,
Found 2 corrupted records,
Found 0 old records,
Found 21 new qualified records.
[root@localhost ~]# ls /var/lib/awstats/
awstats102020.foxydog11.com.txt (통계 데이터 결과값 생성 확인)
STEP05 → 통계 페이지 접근하기 위한 설정
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
맨 하단에 추가되어있습니다.
[디폴트] (아래는 Apache 2.2.X 방식)
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
[수정] (Apache 2.4.X 맞게 변경)
※ 전체 복사하고 주석(#) 부분은 필요에 따라 변경하여 이용하시면 됩니다.
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
Require all granted [전체 허용]
#Require all denied [전체 거부]
#Require ip 192.168.0.1 [특정 IP 허용]
#Require host example.com [특정 도메인 허용]
</Directory>
STEP06 → httpd.conf 설정 변경으로 Apache 재시작
[root@localhost ~]# systemctl restart httpd
STEP07 → 통계 페이지 불러오기
[예시] URL : http://localhost/awstats/awstats.pl?config=foxydog11.com (스크린샷 참고)
EXTRA
□ 호스팅 서비스로 여러 개의 도메인을 동시에 운영 중이라면 다음과 같이 진행(반복 작업)
[root@localhost ~]# ls /etc/awstats/
awstats.foxydog11.com.conf
이미 만들어진 파일을 가지고 가상 호스트(도메인) 별로 복사를 합니다.
[root@localhost ~]# cp awstats.foxydog11.com.conf awstats.foxydog22.com.conf
[root@localhost ~]# cp awstats.foxydog11.com.conf awstats.foxydog33.com.conf
파일별로 가상 도메인 경로에 맞게 수정
[root@localhost ~]# vim awstats.foxydog22.com.conf
LogFile="/home/test/weblog/foxydog22.com-access_log.%YY%MM%DD"
SiteDomain="foxydog22.com"
HostAliases="foxydog22.com www.foxydog22.com 127.0.0.1 localhost"
통계 데이터 업데이트
[root@localhost ~]# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=foxydog22.com -update
웹페이지 접속 확인
URL : http://localhost/awstats/awstats.pl?config=foxydog22.com
□ 통계 데이터 업데이트는 자동으로 안되므로 Crontab 자동실행 등록
원래는 도메인별로 하나씩 업데이트 명령어를 해야 하나 AWStats Tools에서 스크립트를 지원합니다.
[root@localhost ]# ls /usr/local/awstats/tools | grep update
awstats_updateall.pl (해당 파일 확인)
자동 등록(Crontab)
[root@localhost ~]# crontab -e (등록 저장)
*/10 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
※ 해당 의미는 10분마다 자동 실행하겠다는 의미입니다.
※ now까지 붙여줘야 명령어 실행됩니다.
[root@localhost ~]# crontab -l (등록 확인)
*/10 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
crontab 10분 후 작동확인(스크린샷 대체)
[root@localhost ~]# tail -f /var/log/cron
이후부터는 10분마다 자동으로 통계 데이터를 확인하실 수 있게 되었습니다.
다음은 통계 데이터에 IP별 국가를 확인 및 분석하기 위한 GEOIP 적용 방법 및 FTP 메일서버 로그분석에 대해서
추가적으로 알아보도록 하겠습니다.
'◈『Open(Source) Solution』 > 로그분석(Monitoring)' 카테고리의 다른 글
CentOS 8 - AWStats FTP/메일로그 분석하기 (0) | 2020.10.27 |
---|---|
CentOS 8 - AWStats GeoIP 적용 (2) | 2020.10.22 |