
GoAccess는 *nix 시스템의 터미널 또는 브라우저를 통해 실행되는 실시간 웹 로그 분석기이자 대화형 뷰어입니다.
GoAccess는 *nix 시스템의 터미널이나 브라우저에서 직접 실행되는 오픈 소스 실시간 웹 로그 분석기이자 대화형 뷰어입니다. 시스템 관리자, DevOps 엔지니어, 보안 전문가를 염두에 두고 설계되었으며, 빠르고 실행 가능한 HTTP 통계와 시각적 서버 보고서를 즉석에서 제공합니다. GoAccess는 웹 서버 로그를 실시간으로 파싱하여 데이터를 터미널에 직접 또는 라이브 HTML 대시보드를 통해 표시하므로, 트래픽을 모니터링하고 이상 징후를 감지하며 문제를 즉시 해결하기가 쉽습니다.
자세한 정보: https://goaccess.io.
GoAccess는 지정된 웹 로그 파일을 파싱하여 데이터를 X 터미널에 출력합니다. 주요 기능은 다음과 같습니다:
완전한 실시간 처리
모든 패널과 지표는 터미널 출력에서는 200ms마다, HTML 출력에서는 매초마다 갱신되도록 설정되어 있습니다.
최소한의 구성만 필요
액세스 로그 파일에 대해 실행하고 로그 형식만 선택하면 GoAccess가 액세스 로그를 파싱하여 통계를 보여줍니다.
애플리케이션 응답 시간 추적
요청을 처리하는 데 걸린 시간을 추적합니다. 사이트 속도를 저하시키는 페이지를 추적하려는 경우 매우 유용합니다.
WebSocket 인증:
GoAccess는 로컬 및 외부 JWT 검증을 지원하고, 안전한 토큰 갱신 기능과 외부 인증 시스템과의 원활한 통합을 제공하는 향상된 WebSocket 인증을 제공합니다. 검증된 토큰은 해당 exp 클레임까지 추적되며, 만료되면 연결이 종료됩니다.
거의 모든 웹 로그 형식
GoAccess는 모든 사용자 정의 로그 형식 문자열을 허용합니다. 미리 정의된 옵션에는 Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront 등이 포함됩니다.
증분 로그 처리
데이터 지속성이 필요하신가요? GoAccess는 디스크 기반 지속성 옵션을 통해 로그를 증분적으로 처리할 수 있습니다.
단 하나의 의존성
GoAccess는 C로 작성되었습니다. 실행하려면 ncurses만 의존성으로 필요합니다. 그게 전부입니다. 자체 Web Socket 서버도 갖추고 있습니다 — http://gwsocket.io/.
방문자
시간 또는 날짜별로 히트 수, 방문자 수, 대역폭, 그리고 가장 느린 요청에 대한 지표를 확인할 수 있습니다.
가상 호스트별 지표
여러 가상 호스트(서버 블록)가 있으신가요? 어떤 가상 호스트가 웹 서버 리소스를 가장 많이 소비하는지 보여주는 패널이 있습니다.
UTM 캠페인 추적
요청된 URL에서 추출한 매체, 소스, 캠페인, 콘텐츠, 용어별로 캠페인 트래픽을 분석합니다.
봇 및 크롤러 분류
AI 크롤러와 Fediverse(ActivityPub) 트래픽을 기존 검색 엔진 크롤러와 분리하여 자체 카테고리로 유지합니다.
TLS 설정
로그 형식에 %K, %k, %g가 포함된 경우 협상된 프로토콜, 암호화 스위트, 키 교환 그룹을 보고합니다.
ASN (자율 시스템 번호 매핑)
악성 트래픽 패턴을 탐지하고 그에 따라 차단하는 데 유용합니다. --exclude-asn으로 파싱 시 전체 네트워크를 제외할 수도 있고, --include-asn으로 보고서를 특정 네트워크로 제한할 수도 있습니다.
색상 구성 사용자 정의 가능
터미널을 통하거나 HTML 출력에 스타일시트를 적용하는 것만으로 GoAccess를 자신의 색상 취향/구성에 맞게 조정할 수 있습니다.
대용량 데이터셋 지원
GoAccess는 최적화된 인메모리 해시 테이블 덕분에 대용량 로그를 파싱하는 기능을 갖추고 있습니다. 메모리 사용량이 매우 우수하고 성능도 상당히 좋습니다. 이 저장소는 디스크 영속성도 지원합니다.
Docker 지원
업스트림에서 GoAccess의 Docker 이미지를 빌드할 수 있습니다. 볼륨 매핑과 goaccess.conf 편집을 통해 여전히 완전히 구성할 수 있습니다. 아래의 Docker 섹션을 참조하세요. docker-compose 사용 방법에 대한 문서도 있습니다.
GoAccess는 모든 사용자 정의 로그 형식 문자열을 허용합니다. 미리 정의된 옵션에는 다음이 포함되지만 이에 국한되지는 않습니다:
HTML 보고서는 Natural Earth 지도 데이터를 사용하며, 이는 퍼블릭 도메인입니다. 번들로 제공되는 국가 지도에는 UN 총회 결의안 68/262에 부합하여 크림반도를 우크라이나의 일부로 표시하는 로컬 조정이 포함되어 있습니다. resources/countries-110m.json을 업데이트할 때 이 조정을 유지하세요. 트래픽에 대한 국가 할당은 구성된 GeoIP 데이터베이스에서 가져옵니다. 지도 윤곽을 변경해도 보고서 합계는 변경되지 않습니다.
GoAccess는 빠른 터미널 기반 로그 분석기로 설계되었습니다. 핵심 아이디어는 브라우저를 사용할 필요 없이 웹 서버 통계를 실시간으로 빠르게 분석하고 확인하는 것입니다 (SSH를 통해 액세스 로그를 빠르게 분석하려는 경우, 또는 단순히 터미널에서 작업하는 것을 좋아하는 경우에 유용합니다).
또한 보안 모니터링을 위한 실용적인 도구로도 활용되어, 로그에서 직접 의심스러운 활동, 비정상적인 트래픽 패턴, 무차별 대입 시도, 스캐너, 봇 및 비정상적인 요청을 쉽게 발견할 수 있습니다.
터미널 출력이 기본 출력이지만, 완전하고 자체 포함된 실시간 HTML 보고서는 물론 JSON 및 CSV 보고서를 생성하는 기능도 갖추고 있습니다.
이는 무엇보다도 모니터링 명령 도구로 볼 수 있습니다.
GoAccess는 *nix 시스템에서 컴파일하고 사용할 수 있습니다.
다음 명령으로 GoAccess를 다운로드, 추출 및 컴파일하세요:
$ wget https://tar.goaccess.io/goaccess-1.12.tar.gz
$ tar -xzvf goaccess-1.12.tar.gz
$ cd goaccess-1.12/
$ ./configure --enable-utf8 --enable-geoip=mmdb --with-zlib
$ make
# make install
$ git clone https://github.com/allinurl/goaccess.git
$ cd goaccess
$ autoreconf -fiv
$ ./configure --enable-utf8 --enable-geoip=mmdb
$ make
# make install
GNU+Linux 배포판에서 선호하는 패키지 관리자를 사용하여 GoAccess를 설치하는 것이 가장 쉽습니다. 모든 배포판에서 최신 버전의 GoAccess를 사용할 수 있는 것은 아닙니다.
# apt-get install goaccess
참고: 이 명령은 오래된 버전의 GoAccess를 설치할 가능성이 높습니다. 최신 안정 버전의 GoAccess를 실행하고 있는지 확인하려면 아래의 대체 옵션을 참조하세요.
$ wget -O - https://deb.goaccess.io/gnugpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/goaccess.gpg >/dev/null
$ echo "deb [signed-by=/usr/share/keyrings/goaccess.gpg arch=$(dpkg --print-architecture)] https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/goaccess.list
$ sudo apt-get update
$ sudo apt-get install goaccess
참고:
.deb 패키지는 HTTPS를 통해서도 사용할 수 있습니다. apt-transport-https를 설치해야 할 수도 있습니다.# yum install goaccess
# pacman -S goaccess
# emerge net-analyzer/goaccess
# brew install goaccess
# cd /usr/ports/sysutils/goaccess/ && make install clean
# pkg install sysutils/goaccess
# cd /usr/ports/www/goaccess && make install clean
# pkg_add goaccess
# zypper ar -f obs://server:http http
# zypper in goaccess
# pkg install goaccess
# pkgin install goaccess
GoAccess는 Cygwin을 통해 Windows에서 사용할 수 있습니다. Cygwin의 패키지를 참조하십시오. 또는 Windows 10의 GNU+Linux 하위 시스템을 통해서도 사용할 수 있습니다.
액세스 로그에서 출력을 전달할 수 있는 Docker 이미지가 업데이트되었습니다. 보고서만 출력하려는 경우 외부 환경의 로그를 Docker 기반 프로세스로 파이프할 수 있습니다:
touch report.html
cat access.log | docker run --rm -i -v ./report.html:/report.html -e LANG=$LANG allinurl/goaccess -a -o report.html --log-format COMBINED -
또는 실시간으로
tail -F access.log | docker run -p 7890:7890 --rm -i -e LANG=$LANG allinurl/goaccess -a -o report.html --log-format COMBINED --real-time-html -
docker-compose 사용 방법에 대한 문서도 있습니다.
개발 라이브러리로 로컬 시스템을 어지럽히지 않도록 격리된 컨테이너 환경에서 Debian 기반 시스템용 바이너리를 빌드할 수도 있습니다:
$ curl -L "https://github.com/allinurl/goaccess/archive/refs/heads/master.tar.gz" | tar -xz && cd goaccess-master
$ docker build -t goaccess/build.debian-12 -f Dockerfile.debian-12 .
$ docker run -i --rm -v $PWD:/goaccess goaccess/build.debian-12 > goaccess
Docker 이미지 사용에 대한 자세한 내용은 DOCKER.md에서 확인할 수 있습니다.
GoAccess는 요구 사항이 최소화되어 있으며 C로 작성되었고 ncurses만 필요로 합니다. 그러나 아래는 일부 배포판에서 소스로부터 GoAccess를 빌드하기 위한 선택적 종속성 표입니다.