웹 서버 로그 분석을 위한 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를 꼭 한번 시도해보세요!


참고 링크:

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다