
GoAccess는 *nix 시스템의 터미널 또는 브라우저를 통해 실행되는 실시간 웹 로그 분석기이자 대화형 뷰어입니다.
GoAccess는 오픈 소스, 실시간 웹 로그 분석기이자 인터랙티브 뷰어로, *nix 시스템의 터미널에서 또는 브라우저에서 직접 실행됩니다. 시스템 관리자, DevOps 엔지니어, 보안 전문가를 위해 설계되었으며, 빠르고 실행 가능한 HTTP 통계와 시각적 서버 보고서를 즉시 제공합니다. GoAccess는 웹 서버 로그를 실시간으로 파싱하여 데이터를 터미널에 직접 표시하거나 라이브 HTML 대시보드를 통해 제공하므로, 트래픽 모니터링, 이상 징후 감지, 문제 해결을 손쉽게 할 수 있습니다.
자세한 정보: https://goaccess.io.
GoAccess는 지정된 웹 로그 파일을 파싱하고 데이터를 X 터미널에 출력합니다. 기능은 다음과 같습니다:
완전 실시간
모든 패널과 메트릭은 터미널 출력에서는 200ms마다, HTML 출력에서는 1초마다 업데이트되도록 설정되어 있습니다.
최소한의 설정 필요
액세스 로그 파일에 대해 실행하고, 로그 형식을 선택하기만 하면 GoAccess가 로그를 파싱하여 통계를 보여줍니다.
애플리케이션 응답 시간 추적
요청을 처리하는 데 걸린 시간을 추적합니다. 사이트 속도를 저하시키는 페이지를 추적하려는 경우 매우 유용합니다.
WebSocket 인증:
GoAccess는 향상된 WebSocket 인증을 제공하며, 로컬 및 외부 JWT 검증, 보안 토큰 갱신 기능, 외부 인증 시스템과의 원활한 통합을 지원합니다.
거의 모든 웹 로그 형식
GoAccess는 사용자 정의 로그 형식 문자열을 허용합니다. 미리 정의된 옵션에는 Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront 등이 있습니다.
증분 로그 처리
데이터 지속성이 필요하신가요? GoAccess는 디스크 기반 지속성 옵션을 통해 로그를 증분 방식으로 처리할 수 있습니다.
단 하나의 의존성
GoAccess는 C로 작성되었습니다. 실행하려면 ncurses만 의존성으로 필요합니다. 그게 전부입니다. 자체 Web Socket 서버인 http://gwsocket.io/도 포함되어 있습니다.
방문자
시간별 또는 날짜별 히트 수, 방문자 수, 대역폭, 가장 느린 요청의 메트릭을 확인할 수 있습니다.
가상 호스트별 메트릭
여러 가상 호스트(서버 블록)가 있습니까? 어떤 가상 호스트가 웹 서버 리소스를 가장 많이 소비하는지 표시하는 패널이 있습니다.
ASN (자율 시스템 번호 매핑)
악성 트래픽 패턴을 탐지하고 적절히 차단하는 데 유용합니다.
색상 구성표 사용자 정의 가능
터미널을 통해 또는 HTML 출력에 스타일시트를 적용하여 GoAccess의 색상을 취향/구성표에 맞게 조정할 수 있습니다.
대용량 데이터셋 지원
GoAccess는 최적화된 인메모리 해시 테이블 덕분에 대용량 로그를 파싱할 수 있습니다. 메모리 사용량이 매우 적고 성능이 우수합니다. 이 스토리지는 디스크 기반 지속성도 지원합니다.
Docker 지원
업스트림에서 GoAccess Docker 이미지를 빌드할 수 있습니다. 볼륨 매핑을 사용하고 goaccess.conf를 편집하여 완전히 구성할 수 있습니다. 아래 Docker 섹션을 참조하세요. docker-compose 사용 방법에 대한 문서도 있습니다.
GoAccess는 모든 사용자 정의 로그 형식 문자열을 허용합니다. 미리 정의된 옵션은 다음과 같지만 이에 국한되지 않습니다:
GoAccess는 빠르고 터미널 기반의 로그 분석기로 설계되었습니다. 핵심 아이디어는 웹 서버 통계를 브라우저를 사용하지 않고 실시간으로 신속하게 분석하고 확인하는 것입니다 (SSH를 통해 액세스 로그를 빠르게 분석하거나 단순히 터미널에서 작업하는 것을 좋아하는 경우에 유용합니다).
또한 보안 모니터링을 위한 실용적인 도구로, 로그에서 의심스러운 활동, 비정상적인 트래픽 패턴, 무차별 대입 공격, 스캐너, 봇, 비정상적인 요청을 쉽게 발견할 수 있습니다.
터미널 출력이 기본 출력이지만, 완전하고 자체 포함된 실시간 HTML 보고서, JSON 및 CSV 보고서를 생성할 수 있습니다.
이는 그 무엇보다 모니터 명령 도구로 볼 수 있습니다.
GoAccess는 *nix 시스템에서 컴파일되어 사용할 수 있습니다.
다운로드, 추출 및 컴파일:
$ wget https://tar.goaccess.io/goaccess-1.10.2.tar.gz
$ tar -xzvf goaccess-1.10.2.tar.gz
$ cd goaccess-1.10.2/
$ ./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가 설치될 가능성이 높습니다. 최신 안정 버전을 실행하려면 아래 대체 옵션을 확인하세요.
$ 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를 빌드하기 위한 선택적 종속성을 보여줍니다.
| 배포판 | NCurses | GeoIP (선택) | GeoIP2 (선택) | OpenSSL (선택) |
|---|---|---|---|---|
| Ubuntu/Debian | libncurses-dev | libgeoip-dev | libmaxminddb-dev | libssl-dev |
| RHEL/CentOS | ncurses-devel | geoip-devel | libmaxminddb-devel | openssl-devel |
| Arch | ncurses | geoip | libmaxminddb | openssl |
| Gentoo | sys-libs/ncurses | dev-libs/geoip | dev-libs/libmaxminddb | dev-libs/openssl |
| Slackware | ncurses | GeoIP | libmaxminddb | openssl |
참고: 소스에서 소프트웨어를 컴파일/빌드하려면 gcc, autoconf, gettext, autopoint 등의 빌드 도구를 설치해야 할 수 있습니다. 예: base-devel, build-essential, "Development Tools" 등.
인메모리 스토리지는 더 나은 성능을 제공하지만 데이터셋 크기를 사용 가능한 물리적 메모리 양으로 제한합니다. GoAccess는 인메모리 해시 테이블을 사용합니다. 메모리 사용량이 매우 적고 성능이 우수합니다. 이 스토리지는 디스크 기반 지속성도 지원합니다.