CentOS 8 - AWStats (로그 분석) 설치 및 웹로그 분석하기

CentOS 8 - AWStats (Log Analyzer)

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 메일서버 로그분석에 대해서

추가적으로 알아보도록 하겠습니다.

이 글을 공유하기

댓글(0)

Designed by JB FACTORY