[카테고리:] 미분류

  • 웹 서버 로그 분석을 위한 GoAccess 설치 및 사용법 가이드

    작성일: 2025년 3월 6일

    소개

    웹 서버를 운영하다 보면 트래픽 패턴, 방문자 통계, 오류 발생 등을 모니터링하는 것이 중요합니다. 이러한 정보는 서버 최적화와 보안 관리에 큰 도움이 됩니다. 오늘은 NGINX나 Apache와 같은 웹 서버의 로그를 실시간으로 분석할 수 있는 강력한 도구인 GoAccess에 대해 소개하겠습니다.

    GoAccess는 터미널 기반의 로그 분석기로, 직관적인 대시보드를 제공하며 HTML 보고서 생성 기능도 있습니다. 설치가 간단하고 사용법도 쉬워 웹 관리자에게 매우 유용한 도구입니다.

    설치 방법

    Ubuntu/Debian 시스템

    Ubuntu나 Debian 기반 시스템에서는 apt 패키지 관리자를 사용하여 쉽게 설치할 수 있습니다:

    sudo apt update
    sudo apt install goaccess
    

    CentOS/RHEL 시스템

    CentOS나 RHEL 시스템에서는 yum을 사용합니다:

    sudo yum install goaccess
    

    macOS

    macOS에서는 Homebrew를 사용하여 설치할 수 있습니다:

    brew install goaccess
    

    소스에서 컴파일

    최신 버전을 사용하고 싶다면 소스에서 직접 컴파일할 수도 있습니다:

    wget https://tar.goaccess.io/goaccess-1.6.tar.gz
    tar -xzvf goaccess-1.6.tar.gz
    cd goaccess-1.6/
    ./configure --enable-utf8 --enable-geoip=legacy
    make
    sudo make install
    

    기본 사용법

    GoAccess는 다양한 로그 형식을 지원합니다. NGINX와 Apache의 기본 로그 형식도 잘 인식합니다.

    1. 터미널에서 로그 분석하기

    가장 기본적인 사용법은 터미널에서 로그 파일을 직접 분석하는 것입니다:

    goaccess /var/log/nginx/access.log
    

    처음 실행 시 로그 형식을 선택하라는 프롬프트가 나타납니다. NGINX의 경우 보통 COMBINED 형식(옵션 4번)을 사용합니다.

    로그 형식을 직접 지정하려면:

    goaccess /var/log/nginx/access.log --log-format=COMBINED
    

    2. HTML 보고서 생성하기

    터미널 인터페이스 외에도 HTML 보고서를 생성할 수 있습니다:

    goaccess /var/log/nginx/access.log --log-format=COMBINED -o report.html
    

    이 명령어는 현재 디렉토리에 report.html 파일을 생성합니다. 웹 브라우저로 이 파일을 열어 시각적으로 더 풍부한 통계를 볼 수 있습니다.

    3. 실시간 모니터링 (대화형 모드)

    대화형 모드로 실시간 모니터링을 할 수 있습니다:

    goaccess /var/log/nginx/access.log --log-format=COMBINED -c
    

    4. 실시간 HTML 보고서

    실시간으로 업데이트되는 HTML 보고서를 생성할 수도 있습니다:

    goaccess /var/log/nginx/access.log --log-format=COMBINED -o report.html --real-time-html
    

    이 방식으로 실행하면 report.html 파일이 생성되고, 웹 브라우저에서 이 파일을 열면 자동으로 새로고침되며 실시간 통계를 볼 수 있습니다.

    5. 여러 로그 파일 분석

    로그 로테이션으로 인해 여러 파일로 나뉜 로그를 모두 분석하려면:

    goaccess /var/log/nginx/access.log* --log-format=COMBINED
    

    압축된 로그 파일도 분석할 수 있습니다:

    zcat /var/log/nginx/access.log*.gz | goaccess --log-format=COMBINED
    

    고급 사용법

    1. 사용자 정의 로그 형식

    웹 서버의 로그 형식이 표준과 다른 경우 사용자 정의 형식을 지정할 수 있습니다:

    goaccess /var/log/nginx/access.log --log-format='%h %^[%d:%t %^] "%r" %s %b "%R" "%u"' --date-format='%d/%b/%Y' --time-format='%H:%M:%S'
    

    2. 설정 파일 사용하기

    자주 사용하는 설정을 파일로 저장하여 재사용할 수 있습니다:

    # 기본 설정 파일 복사
    sudo cp /etc/goaccess/goaccess.conf /etc/goaccess/goaccess.conf.bak
    
    # 설정 파일 편집
    sudo nano /etc/goaccess/goaccess.conf
    

    설정 파일에서 주석을 제거하여 원하는 옵션을 활성화할 수 있습니다. 예를 들어, NGINX 로그 형식을 사용하려면 다음 라인의 주석을 제거합니다:

    log-format COMBINED
    

    설정 파일을 사용하여 실행:

    goaccess /var/log/nginx/access.log -p /etc/goaccess/goaccess.conf
    

    3. WebSocket 서버로 실행

    내장된 WebSocket 서버를 사용하여 실시간 보고서를 제공할 수 있습니다:

    goaccess /var/log/nginx/access.log --log-format=COMBINED -o report.html --ws-url=ws://localhost:7890
    

    이 명령어는 WebSocket 서버를 포트 7890에서 실행하고, 웹 브라우저에서 실시간으로 업데이트되는 보고서를 볼 수 있게 합니다.

    대시보드 해석하기

    GoAccess는 다음과 같은 유용한 정보를 제공합니다:

    1. 일반 통계: 총 방문자 수, 요청 수, 정적/동적 파일, 트래픽 등
    2. 방문자 통계: 고유 방문자 수, IP 주소별 통계
    3. 시간별 요청: 시간대별 요청 분포
    4. 가장 많이 요청된 파일: 인기 페이지 및 파일
    5. HTTP 상태 코드: 오류 및 리디렉션 통계
    6. 운영체제, 브라우저: 방문자의 사용 환경
    7. 참조 사이트: 트래픽이 어디서 유입되었는지
    8. 지리적 위치: 방문자의 국가별 분포 (GeoIP 활성화 시)

    실제 운영 사례

    저는 NGINX 서버의 성능과 트래픽 패턴을 모니터링하기 위해 GoAccess를 사용하고 있습니다. 특히 실시간 HTML 보고서 기능이 유용한데, 다음 명령어로 간단히 설정했습니다:

    goaccess /var/log/nginx/access.log --log-format=COMBINED -o /var/www/html/stats/report.html --real-time-html
    

    이렇게 생성된 보고서를 웹 서버의 특정 디렉토리에 저장하고, 비밀번호로 보호된 URL을 통해 언제든지 접근할 수 있게 설정했습니다. 서버 상태를 실시간으로 모니터링하면서 트래픽 증가나 비정상적인 접근 패턴을 빠르게 감지할 수 있게 되었습니다.

    결론

    GoAccess는 가볍고 강력한 웹 로그 분석 도구로, 복잡한 설정 없이도 유용한 인사이트를 제공합니다. 특히 작은 규모의 웹 서버나 개인 프로젝트에 적합하며, 실시간 모니터링 기능은 서버 관리에 큰 도움이 됩니다.

    터미널 기반의 인터페이스부터 HTML 보고서까지 다양한 방식으로 정보를 확인할 수 있어 사용자의 필요에 맞게 활용할 수 있습니다. 웹 서버 로그 분석이 필요하다면 GoAccess를 꼭 한번 시도해보세요!


    참고 링크: