ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹 서버 로그 분석도구 GoAccess
    소프트웨어개발 이야기 2020. 2. 10. 13:08

    관리자 입장에서 웹 서버의 로그 파일을 보다 쉽게 분석하고 활용할 수 있는 도구에 대해 정리합니다.

    구글링이나 Stackoverflow를 통해 웹 서버 로그 분석도구를 검색해 보면 하기의 도구를 추천 하고 있습니다.

    조사의 목표는,
    OSS 기반의, 설치나 분석 및 사용을 손쉽게 할 수 있는 분석도구를 찾는 것이었기 때문에 이에 부합하는 GoAccess를 선택하였고, 하기의 순서로 정리 합니다. (확장성이나 보다 다양한 검색을 위해서는 Elastic Stack 사용 권장)

    • GoAccess 소개
    • GoAccess 상세 기능
    • GoAccess 설치
    • 주의사항

    GoAccess 소개

    GoAccess는 OSS기반의 실시간 웹 서버 로그 분석 도구로, xNix 계열의 터미널과 웹 브라우저를 통한 분석 화면을 제공합니다.

    GoAcess(Terminal, Web screen shot)

     

    Github에서도 관심이 많은 프로젝트이고, Contributor들의 활동도 꾸준히 일어나고 있어서, 지속적인 개선이 이뤄지고 있습니다.

    most stars project in github.com

     

    Contributors

     

    Commits

     

    주요 특징은 다음과 같습니다.

    • 빠른 실시간 분석(millisecond/second) 가능 (C언어 개발)
    • 의존 라이브러리는 ncurses 
    • 대부분의 웹 서버 로그 포맷 지원
      - 
      Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront 등
    • 아름다운 터미널 화면과 Bootstrap기반의 대시보드 제공(커스트마이징 가능)
    • Valgrind 테스트 완료

    GoAccess 상세기능

    Teminal과 Web Dashboard에서 확인 가능한 상세기능을 설명합니다.

    • Dashboard Number Widgets
      종합 정보를 숫자로 표시

    Number Widget in Terminal Dashboard

     

    Number Widget in Web Dashboard

     

    • Unique visitors per day
      일자별 방문자 정보(동일 아이피)

    Unique visitors in Terminal Dashboard
    Unique visitors in Web Dashboard

     

    • Requested Files (URLs)
      요청 URL 정보

    Requested Files in Terminal Dashboard

     

    Requested Files in Web Dashboard

     

    • Static Requests
      정적 리소스(이미지, 아이콘 등) 요청 정보

    Static Requests in Terminal Dashboard
    Static Requests in Web Dashboard

     

    • Not Found URLs
      404 요청 정보

    Not Found URLs in Terminal Dashboard

     

    Not Found URLs in Web Dashboard

     

    • Visitor Hostnames and IPs
      방문자별 정보

    Visitors in Terminal Dashboard

     

    Visitors in Web Dashboard

     

    • Operating Systems
      OS별 정보

    Operating Systems in Terminal Dashboard

     

    Operating Systems in Web Dashboard

     

    • Browsers
      브라우저별 정보

    Browsers in Terminal Dashboard

     

    Browsers in Web Dashboard

     

    • Time Distribution
      시간별(00~23) 정보

    Time Distribution in Terminal Dashboard

     

    Time Distribution in Web Dashboard

     

    • Referring Sites
      Refer 사이트 정보

    Referer in Terminal Dashboard

     

    Referer in WebDashboard

     

    • HTTP Status Codes
      HTTP 상태코드 정보

    HTTP Status in Terminal Dashboard

     

    HTTP Status in Web Dashboard

     

    • Geo Location
      국가별 정보

    Geo Location in Terminal Dashboard

     

    Geo Location in Web Dashboard

     

    GoAccess 설치

    개발서버(CentOS 6.8)에서 GoAccess 를 설치하고, Apache 로그파일을 통해 Terminal 과 웹으로 모니터링 하는 과정을 정리합니다.

    • 설치
      보다 자세한 설명은 공식 홈페이지 또는 github 의 인스톨 가이드를 참고합니다. 설치는 아래의 두가지 방법으로 가능하며, 최신 버전으로 설치를 할 경우 가급적 컴파일 방식을 추천합니다.
    // yum을 통한 GoAccess 설치
    yum install goaccess
    // 소스 컴파일을 통한 GoAccess 설치
    
    // Install Dependencies 
    $ yum install gcc ncurses-devel glib2-devel GeoIP-devel
    
    // Download Source and Compile 
    $ wget http://tar.goaccess.io/goaccess-1.1.1.tar.gz
    $ tar -xzvf goaccess-1.1.1.tar.gz
    $ cd goaccess-1.1.1/
    $ ./configure --enable-geoip --enable-utf8
    $ make
    # make install

     

    • 설정
      분석을 위해서 로그파일의 날짜, 시간 포맷을 설정합니다. 설정파일(/usr/local/etc/goaccess.conf)의 내용을 확인하여, 분석하고자 하는 서버의 날짜, 시간 포맷에 맞도록 주석을 해제합니다.
    // Apache 분석을 위한 날짜, 시간 포맷 설정
    # Apache/NGINX's log formats below.
    time-format %H:%M:%S
    
    # Apache/NGINX's log formats below.
    date-format %d/%b/%Y
    
    # NCSA Combined Log Format
    log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

     

    • 실행
      로그파일 분석은 터미널 모드, 파일 생성 모드, 실시간 분석 모드로 실행 가능합니다.
    // 터미널 모드 실행
    // To output to a terminal and generate an interactive report
    # goaccess -f access.log

     

    터미널 모드 실행 화면

     

    // 파일 생성 모드 실행
    // To generate an HTML report
    # goaccess -f access.log -a > report.html
    
    // To generate a JSON report
    # goaccess -f access.log -a -d -o json > report.json
    
    // To generate a CSV file
    # goaccess -f access.log --no-csv-summary -o csv > report.csv
    // 실시간 분석 모드 실행
    // Real Time HTML Output
    # goaccess -f access.log -o /www/your_site/report.html --real-time-html --ws-url=host

     

    주의사항

    • yum을 통한 설치시 repository에서 예전버전의 GoAccess를 설치할 경우가 있기 때문에 가급적이면 최신버전의 패키지 또는 소스를 받아서 설치하는 것이 좋습니다.

    이전 버전 GoAccess(v0.9.3)

     

    • 실시간 분석 모드로 실행 할 경우, 내부적으로 웹소켓을 사용하여 브라우저와 통신하기 때문에 방화벽에서 포트 확인이 필요합니다.

    댓글

Designed by Joypinkgom.