-
웹 서버 로그 분석도구 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 계열의 터미널과 웹 브라우저를 통한 분석 화면을 제공합니다.
GoAcess(Terminal, Web screen shot) Github에서도 관심이 많은 프로젝트이고, Contributor들의 활동도 꾸준히 일어나고 있어서, 지속적인 개선이 이뤄지고 있습니다.
most stars project in github.com Contributors Commits 주요 특징은 다음과 같습니다.
- 빠른 실시간 분석(millisecond/second) 가능 (C언어 개발)
- 의존 라이브러리는 ncurses 뿐
- 대부분의 웹 서버 로그 포맷 지원
- Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront 등 - 아름다운 터미널 화면과 Bootstrap기반의 대시보드 제공(커스트마이징 가능)
- Valgrind 테스트 완료
GoAccess 상세기능
Teminal과 Web Dashboard에서 확인 가능한 상세기능을 설명합니다.
- Dashboard Number Widgets
종합 정보를 숫자로 표시
Number Widget in Terminal Dashboard Number Widget in Web Dashboard - Unique visitors per day
일자별 방문자 정보(동일 아이피)
Unique visitors in Terminal Dashboard Unique visitors in Web Dashboard - Requested Files (URLs)
요청 URL 정보
Requested Files in Terminal Dashboard Requested Files in Web Dashboard - Static Requests
정적 리소스(이미지, 아이콘 등) 요청 정보
Static Requests in Terminal Dashboard Static Requests in Web Dashboard - Not Found URLs
404 요청 정보
Not Found URLs in Terminal Dashboard Not Found URLs in Web Dashboard - Visitor Hostnames and IPs
방문자별 정보
Visitors in Terminal Dashboard Visitors in Web Dashboard - Operating Systems
OS별 정보
Operating Systems in Terminal Dashboard Operating Systems in Web Dashboard - Browsers
브라우저별 정보
Browsers in Terminal Dashboard Browsers in Web Dashboard - Time Distribution
시간별(00~23) 정보
Time Distribution in Terminal Dashboard Time Distribution in Web Dashboard - Referring Sites
Refer 사이트 정보
Referer in Terminal Dashboard Referer in WebDashboard - HTTP Status Codes
HTTP 상태코드 정보
HTTP Status in Terminal Dashboard HTTP Status in Web Dashboard - Geo Location
국가별 정보
Geo Location in Terminal Dashboard Geo Location in Web Dashboard 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를 설치할 경우가 있기 때문에 가급적이면 최신버전의 패키지 또는 소스를 받아서 설치하는 것이 좋습니다.
이전 버전 GoAccess(v0.9.3) - 실시간 분석 모드로 실행 할 경우, 내부적으로 웹소켓을 사용하여 브라우저와 통신하기 때문에 방화벽에서 포트 확인이 필요합니다.
'소프트웨어개발 이야기' 카테고리의 다른 글
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