-
웹 서버 로그 분석도구 GoAccess소프트웨어개발 이야기 2020. 2. 10. 13:08
관리자 입장에서 웹 서버의 로그 파일을 보다 쉽게 분석하고 활용할 수 있는 도구에 대해 정리합니다.
구글링이나 Stackoverflow를 통해 웹 서버 로그 분석도구를 검색해 보면 하기의 도구를 추천 하고 있습니다.
- GoAccess
콘솔, HTML/JSON/CSV 데이터생성, 실시간 HTML 모니터링 - Apache Log Viewer
GUI 도구(일부기능 유료) - AWStats
웹시스템(Perl기반)
조사의 목표는,
OSS 기반의, 설치나 분석 및 사용을 손쉽게 할 수 있는 분석도구를 찾는 것이었기 때문에 이에 부합하는 GoAccess를 선택하였고, 하기의 순서로 정리 합니다. (확장성이나 보다 다양한 검색을 위해서는 Elastic Stack 사용 권장)- GoAccess 소개
- GoAccess 상세 기능
- GoAccess 설치
- 주의사항
GoAccess 소개
GoAccess는 OSS기반의 실시간 웹 서버 로그 분석 도구로, xNix 계열의 터미널과 웹 브라우저를 통한 분석 화면을 제공합니다.
Github에서도 관심이 많은 프로젝트이고, Contributor들의 활동도 꾸준히 일어나고 있어서, 지속적인 개선이 이뤄지고 있습니다.
주요 특징은 다음과 같습니다.
- 빠른 실시간 분석(millisecond/second) 가능 (C언어 개발)
- 의존 라이브러리는 ncurses 뿐
- 대부분의 웹 서버 로그 포맷 지원
- Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront 등 - 아름다운 터미널 화면과 Bootstrap기반의 대시보드 제공(커스트마이징 가능)
- Valgrind 테스트 완료
GoAccess 상세기능
Teminal과 Web Dashboard에서 확인 가능한 상세기능을 설명합니다.
- Dashboard Number Widgets
종합 정보를 숫자로 표시
- Unique visitors per day
일자별 방문자 정보(동일 아이피)
- Requested Files (URLs)
요청 URL 정보
- Static Requests
정적 리소스(이미지, 아이콘 등) 요청 정보
- Not Found URLs
404 요청 정보
- Visitor Hostnames and IPs
방문자별 정보
- Operating Systems
OS별 정보
- Browsers
브라우저별 정보
- Time Distribution
시간별(00~23) 정보
- Referring Sites
Refer 사이트 정보
- HTTP Status Codes
HTTP 상태코드 정보
- Geo Location
국가별 정보
GoAccess 설치
개발서버(CentOS 6.8)에서 GoAccess 를 설치하고, Apache 로그파일을 통해 Terminal 과 웹으로 모니터링 하는 과정을 정리합니다.
- 설치
보다 자세한 설명은 공식 홈페이지 또는 github 의 인스톨 가이드를 참고합니다. 설치는 아래의 두가지 방법으로 가능하며, 최신 버전으로 설치를 할 경우 가급적 컴파일 방식을 추천합니다.
// yum을 통한 GoAccess 설치 yum install goaccess
// 소스 컴파일을 통한 GoAccess 설치 // Install Dependencies $ yum install gcc ncurses-devel glib2-devel GeoIP-devel // Download Source and Compile $ wget http://tar.goaccess.io/goaccess-1.1.1.tar.gz $ tar -xzvf goaccess-1.1.1.tar.gz $ cd goaccess-1.1.1/ $ ./configure --enable-geoip --enable-utf8 $ make # make install
- 설정
분석을 위해서 로그파일의 날짜, 시간 포맷을 설정합니다. 설정파일(/usr/local/etc/goaccess.conf)의 내용을 확인하여, 분석하고자 하는 서버의 날짜, 시간 포맷에 맞도록 주석을 해제합니다.
// Apache 분석을 위한 날짜, 시간 포맷 설정 # Apache/NGINX's log formats below. time-format %H:%M:%S # Apache/NGINX's log formats below. date-format %d/%b/%Y # NCSA Combined Log Format log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
- 실행
로그파일 분석은 터미널 모드, 파일 생성 모드, 실시간 분석 모드로 실행 가능합니다.
// 터미널 모드 실행 // To output to a terminal and generate an interactive report # goaccess -f access.log
// 파일 생성 모드 실행 // To generate an HTML report # goaccess -f access.log -a > report.html // To generate a JSON report # goaccess -f access.log -a -d -o json > report.json // To generate a CSV file # goaccess -f access.log --no-csv-summary -o csv > report.csv
// 실시간 분석 모드 실행 // Real Time HTML Output # goaccess -f access.log -o /www/your_site/report.html --real-time-html --ws-url=host
주의사항
- yum을 통한 설치시 repository에서 예전버전의 GoAccess를 설치할 경우가 있기 때문에 가급적이면 최신버전의 패키지 또는 소스를 받아서 설치하는 것이 좋습니다.
- 실시간 분석 모드로 실행 할 경우, 내부적으로 웹소켓을 사용하여 브라우저와 통신하기 때문에 방화벽에서 포트 확인이 필요합니다.
'소프트웨어개발 이야기' 카테고리의 다른 글
Logstash에서 날짜, 시간 데이터 변경하기 (0) 2020.02.11 Postman 사용하기 (0) 2020.02.10 유튜브(Youtube) API - 7.Data API (Playlists, PlayItems) (1) 2020.02.10 유튜브(Youtube) API - 6. Data API (Channels) (7) 2020.02.10 유튜브(Youtube) API - 5.인증받고 사용하기 (5) 2020.02.10 - GoAccess