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

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

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

    Designed by JB FACTORY