[리눅스] Apache 웹 로그 분석하기 – awk와 GoAccess 활용
 
		- 10-28
- 4,979 회
- 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
두 방법을 함께 사용하면, 시스템 관리자는 웹 서버의 상태를 훨씬 효율적으로 모니터링할 수 있습니다.
 
	










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