작성일: 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는 다음과 같은 유용한 정보를 제공합니다:
- 일반 통계: 총 방문자 수, 요청 수, 정적/동적 파일, 트래픽 등
- 방문자 통계: 고유 방문자 수, IP 주소별 통계
- 시간별 요청: 시간대별 요청 분포
- 가장 많이 요청된 파일: 인기 페이지 및 파일
- HTTP 상태 코드: 오류 및 리디렉션 통계
- 운영체제, 브라우저: 방문자의 사용 환경
- 참조 사이트: 트래픽이 어디서 유입되었는지
- 지리적 위치: 방문자의 국가별 분포 (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를 꼭 한번 시도해보세요!
참고 링크: