[리눅스] Apache 웹 로그 분석하기 – awk와 GoAccess 활용
- 10-28
- 775 회
- 0 건
웹 서버를 운영하다 보면 방문자 통계, 인기 페이지, 트래픽 현황 등을 파악해야 할 때가 많습니다.
이런 정보를 확인하기 위해 로그 분석(Log Analysis) 은 필수입니다.
이번 글에서는 리눅스 환경에서 자주 사용되는 기본 명령어 awk를 이용한 간단한 분석법과,
시각화 도구인 GoAccess를 이용한 고급 분석 방법을 함께 소개합니다.
Apache Access Log란
Apache 웹 서버는 기본적으로 /var/log/httpd/access_log 파일에
서버로 들어오는 모든 요청(request) 정보를 기록합니다.
예를 들어, 다음과 같은 한 줄이 하나의 요청 로그를 의미합니다.
192.168.0.10 - - [27/Oct/2025:14:20:31 +0900] "GET /index.html HTTP/1.1" 200 5123 "-" "Mozilla/5.0"
각 항목의 의미는 다음과 같습니다.
| 필드 | 설명 |
|---|---|
$1 |
클라이언트 IP 주소 |
$4 |
요청 시간 |
$6 |
HTTP 메서드(GET, POST 등) |
$7 |
요청된 URL 경로 |
$9 |
HTTP 응답 코드 (200, 404 등) |
$10 |
전송된 바이트 수 |
awk를 이용한 로그 분석
awk는 텍스트 파일을 컬럼 단위로 다룰 수 있는 강력한 도구입니다.
간단한 명령어 조합만으로도 유용한 웹 로그 통계를 얻을 수 있습니다.
가장 많이 요청된 URL TOP 20
awk '{print $7}' /var/log/httpd/access_log | sort | uniq -c | sort -nr | head -20
설명
$7: 요청된 파일 경로(URL)를 출력sort | uniq -c: 각 URL별 요청 횟수를 계산sort -nr: 요청이 많은 순으로 정렬head -20: 상위 20개 결과만 출력
예시 결과
1500 /index.html
850 /about.html
700 /images/logo.png
가장 많이 방문된 페이지를 빠르게 확인할 수 있습니다.
전송된 데이터량이 많은 URL TOP 20
awk '{print $7, $10}' /var/log/httpd/access_log | \
awk '{bytes[$1]+=$2} END {for (f in bytes) print bytes[f], f}' | sort -nr | head -20
설명
$10: 전송된 바이트 수를 의미- 첫 번째
awk: URL과 바이트 값을 추출 - 두 번째
awk: URL별로 바이트를 합산 sort -nr | head -20: 데이터 전송량이 많은 URL 20개 출력
활용
사이트 내에서 대용량 트래픽이 발생하는 리소스(이미지, 동영상, 다운로드 파일 등)를 쉽게 식별할 수 있습니다.
GoAccess를 이용한 실시간 웹 로그 분석
awk로 기본적인 통계는 얻을 수 있지만, 보다 시각적이고 종합적인 분석이 필요하다면 GoAccess가 훨씬 효율적입니다.
GoAccess란
GoAccess는 C로 작성된 오픈소스 로그 분석기입니다.
CLI(터미널) 인터페이스뿐 아니라 HTML 리포트까지 제공하며, 실시간 대시보드 기능도 지원합니다.
Apache, Nginx, Amazon S3 등 다양한 로그 형식을 인식합니다.
공식 사이트: https://goaccess.io
GoAccess 설치
CentOS / RHEL 계열에서 설치하려면 다음 명령을 실행합니다.
yum install goaccess -y
설치 확인:
goaccess --version
기본 사용법
Apache 기본 로그 포맷은 COMBINED 형식이므로, 아래 명령으로 분석을 시작합니다.
goaccess /var/log/httpd/access_log --log-format=COMBINED
실행하면 터미널에서 다음과 같은 대시보드를 볼 수 있습니다.
- 전체 방문자 수
- 인기 페이지
- 트래픽 사용량
- HTTP 상태 코드 통계
- 브라우저 및 운영체제별 비율
HTML 리포트 생성
웹 브라우저에서 볼 수 있는 HTML 리포트를 생성할 수도 있습니다.
goaccess /var/log/httpd/access_log --log-format=COMBINED -o /var/www/html/report.html
생성 후 http://서버주소/report.html 에 접속하면 그래프 기반의 대시보드를 볼 수 있습니다.
실시간 분석 대시보드
실시간으로 로그 변화를 모니터링하려면 --real-time-html 옵션을 추가합니다.
goaccess /var/log/httpd/access_log --log-format=COMBINED \
-o /var/www/html/report.html --real-time-html
서버의 로그가 업데이트될 때마다 HTML 리포트가 자동으로 갱신됩니다.
마무리
awk는 간단한 통계 확인에 매우 유용하며, 별도의 설치가 필요 없습니다.
반면 GoAccess는 한 단계 높은 수준의 로그 분석과 시각화를 제공합니다.
- 빠르게 추세를 확인하려면 →
awk - 트래픽 패턴을 시각화하고 공유하려면 →
GoAccess
두 방법을 함께 사용하면, 시스템 관리자는 웹 서버의 상태를 훨씬 효율적으로 모니터링할 수 있습니다.











로그인 후 댓글내용을 입력해주세요