Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
goaccess — GoAccess는 *nix 시스템의 터미널 또는 브라우저를 통해 실행되는 실시간 웹 로그 분석기이자 대화형 뷰어입니다. | Kitploit
도구/GitHubGitHub/allinurl/goaccess
General Purpose UtilitiesPrivacyAnomaly DetectionLog Analysis
GitHuballinurl/goaccess

goaccess

GoAccess는 *nix 시스템의 터미널 또는 브라우저를 통해 실행되는 실시간 웹 로그 분석기이자 대화형 뷰어입니다.

저장소 보기웹사이트
20.8k1.2k15일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

GoAccess C build GoAccess

무엇인가요?

GoAccess는 오픈 소스, 실시간 웹 로그 분석기이자 인터랙티브 뷰어로, *nix 시스템의 터미널에서 또는 브라우저에서 직접 실행됩니다. 시스템 관리자, DevOps 엔지니어, 보안 전문가를 위해 설계되었으며, 빠르고 실행 가능한 HTTP 통계와 시각적 서버 보고서를 즉시 제공합니다. GoAccess는 웹 서버 로그를 실시간으로 파싱하여 데이터를 터미널에 직접 표시하거나 라이브 HTML 대시보드를 통해 제공하므로, 트래픽 모니터링, 이상 징후 감지, 문제 해결을 손쉽게 할 수 있습니다.

자세한 정보: https://goaccess.io.

GoAccess 터미널 대시보드 GoAccess HTML 대시보드

기능

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는 모든 사용자 정의 로그 형식 문자열을 허용합니다. 미리 정의된 옵션은 다음과 같지만 이에 국한되지 않습니다:

  • Amazon CloudFront (다운로드 배포)
  • Amazon Simple Storage Service (S3)
  • AWS Elastic Load Balancing
  • 결합 로그 형식 (XLF/ELF) Apache | Nginx
  • 공통 로그 형식 (CLF) Apache
  • Google Cloud Storage
  • Apache 가상 호스트
  • Squid 네이티브 형식
  • W3C 형식 (IIS)
  • Caddy의 JSON 구조화 형식
  • Traefik의 CLF 변형

왜 GoAccess인가?

GoAccess는 빠르고 터미널 기반의 로그 분석기로 설계되었습니다. 핵심 아이디어는 웹 서버 통계를 브라우저를 사용하지 않고 실시간으로 신속하게 분석하고 확인하는 것입니다 (SSH를 통해 액세스 로그를 빠르게 분석하거나 단순히 터미널에서 작업하는 것을 좋아하는 경우에 유용합니다).

또한 보안 모니터링을 위한 실용적인 도구로, 로그에서 의심스러운 활동, 비정상적인 트래픽 패턴, 무차별 대입 공격, 스캐너, 봇, 비정상적인 요청을 쉽게 발견할 수 있습니다.

터미널 출력이 기본 출력이지만, 완전하고 자체 포함된 실시간 HTML 보고서, JSON 및 CSV 보고서를 생성할 수 있습니다.

이는 그 무엇보다 모니터 명령 도구로 볼 수 있습니다.

설치

패키징 상태

릴리스에서 빌드

GoAccess는 *nix 시스템에서 컴파일되어 사용할 수 있습니다.

다운로드, 추출 및 컴파일:

root@kitploit:~
$ 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

GitHub에서 빌드 (개발)

root@kitploit:~
$ 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가 있는 것은 아닙니다.

Debian/Ubuntu

root@kitploit:~
# apt-get install goaccess

참고: 이렇게 하면 구버전의 GoAccess가 설치될 가능성이 높습니다. 최신 안정 버전을 실행하려면 아래 대체 옵션을 확인하세요.

공식 GoAccess Debian & Ubuntu 저장소

root@kitploit:~
$ 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를 설치해야 할 수도 있습니다.

Fedora

root@kitploit:~
# yum install goaccess

Arch

root@kitploit:~
# pacman -S goaccess

Gentoo

root@kitploit:~
# emerge net-analyzer/goaccess

OS X / Homebrew

root@kitploit:~
# brew install goaccess

FreeBSD

root@kitploit:~
# cd /usr/ports/sysutils/goaccess/ && make install clean
# pkg install sysutils/goaccess

OpenBSD

root@kitploit:~
# cd /usr/ports/www/goaccess && make install clean
# pkg_add goaccess

openSUSE

root@kitploit:~
# zypper ar -f obs://server:http http
# zypper in goaccess

OpenIndiana

root@kitploit:~
# pkg install goaccess

pkgsrc (NetBSD, Solaris, SmartOS, ...)

root@kitploit:~
# pkgin install goaccess

Windows

GoAccess는 Cygwin을 통해 Windows에서 사용할 수 있습니다. Cygwin의 패키지를 참조하세요. 또는 Windows 10의 GNU+Linux 하위 시스템을 통해 사용할 수 있습니다.

Docker

액세스 로그에서 출력을 지시할 수 있는 Docker 이미지가 업데이트되었습니다. 보고서만 출력하려면 외부 환경의 로그를 Docker 기반 프로세스로 파이프할 수 있습니다:

root@kitploit:~
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 -

또는 실시간:

root@kitploit:~
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 기반 시스템용 바이너리를 격리된 컨테이너 환경에서 빌드할 수도 있습니다:

root@kitploit:~
$ 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를 빌드하기 위한 선택적 종속성을 보여줍니다.

참고: 소스에서 소프트웨어를 컴파일/빌드하려면 gcc, autoconf, gettext, autopoint 등의 빌드 도구를 설치해야 할 수 있습니다. 예: base-devel, build-essential, "Development Tools" 등.

스토리지

기본 해시 테이블

인메모리 스토리지는 더 나은 성능을 제공하지만 데이터셋 크기를 사용 가능한 물리적 메모리 양으로 제한합니다. GoAccess는 인메모리 해시 테이블을 사용합니다. 메모리 사용량이 매우 적고 성능이 우수합니다. 이 스토리지는 디스크 기반 지속성도 지원합니다.

명령줄 / 설정 옵션

명령에 제공되거나 설정 파일에 지정할 수 있는 옵션을 참조하세요. 설정 파일에 지정하는 경우 긴 옵션 앞에 --를 붙이지 않고 사용해야 합니다.

사용법 / 예제

참고: GoAccess에 데이터를 파이핑하면 로그/날짜/시간 구성 대화상자가 나타나지 않으므로, 설정 파일이나 명령줄에서 미리 정의해야 합니다.

시작하기

터미널에 출력하고 인터랙티브 보고서 생성:

root@kitploit:~
# goaccess access.log

HTML 보고서 생성:

root@kitploit:~
# goaccess access.log -a > report.html

JSON 보고서 파일 생성:

root@kitploit:~
# goaccess access.log -a -d -o report.json

표준 출력으로 CSV 보고서 생성:

root@kitploit:~
# goaccess access.log --no-csv-summary -o csv

GoAccess는 실시간 필터링 및 파싱에 뛰어난 유연성을 제공합니다. 예를 들어, goaccess가 시작된 이후의 로그를 모니터링하여 문제를 신속하게 진단하려면:

root@kitploit:~
# tail -f access.log | goaccess -

더 나아가, 실시간 분석을 유지하기 위해 파이프를 열어둔 상태에서 필터링하려면 tail -f와 grep, awk, sed 등의 패턴 매칭 도구를 사용할 수 있습니다:

root@kitploit:~
# tail -f access.log | grep -i --line-buffered 'firefox' | goaccess --log-format=COMBINED -

또는 파일의 처음부터 파싱하면서 파이프를 열어두고 필터를 적용하려면:

root@kitploit:~
# tail -f -n +0 access.log | grep -i --line-buffered 'firefox' | goaccess -o report.html --real-time-html -

여러 로그 파일

GoAccess로 여러 로그를 파싱하는 방법은 여러 가지입니다. 가장 간단한 방법은 명령줄에 여러 로그 파일을 전달하는 것입니다:

root@kitploit:~
# goaccess access.log access.log.1

일반 파일을 읽으면서 파이프에서 파일을 파싱하는 것도 가능합니다:

root@kitploit:~
# cat access.log.2 | goaccess access.log access.log.1 -

참고: 명령줄에 단일 대시를 추가하여 GoAccess가 파이프에서 읽어야 함을 알립니다.

이제 GoAccess에 더 많은 유연성을 추가하려면 zcat --force를 사용하여 압축 및 비압축 파일을 읽을 수 있습니다. 예를 들어, 모든 로그 파일 access.log*를 처리하려면:

root@kitploit:~
# zcat --force access.log* | goaccess -

참고: Mac OS X에서는 zcat 대신 gunzip -c를 사용하세요.

멀티스레드 지원

--jobs=<count> (또는 -j)를 사용하여 멀티스레드 파싱을 활성화합니다. 예:

root@kitploit:~
# goaccess access.log -o report.html -j 4

그리고 --chunk-size=<256-32768>를 사용하여 청크 크기를 조정합니다. 기본 청크 크기는 1024입니다. 예:

root@kitploit:~
# goaccess access.log -o report.html -j 4 --chunk-size=8192

실시간 HTML 출력

GoAccess는 HTML 보고서에서 실시간 데이터를 출력할 수 있습니다. HTML 파일은 단일 파일로 구성되어 외부 파일 종속성이 없으므로 이메일로 보낼 수도 있습니다!

실시간 HTML 보고서 생성 과정은 정적 보고서 생성 과정과 매우 유사합니다. 실시간으로 만들려면 --real-time-html만 추가하면 됩니다.

root@kitploit:~
# goaccess access.log -o /usr/share/nginx/html/your_site/report.html --real-time-html

보고서를 보려면 http://your_site/report.html로 이동하면 됩니다.

기본적으로 GoAccess는 생성된 보고서의 호스트 이름을 사용합니다. 선택적으로 클라이언트 브라우저가 연결할 URL을 지정할 수 있습니다. 자세한 예제는 FAQ를 참조하세요.

root@kitploit:~
# goaccess access.log -o report.html --real-time-html --ws-url=goaccess.io

기본적으로 GoAccess는 포트 7890에서 수신 대기합니다. 7890 이외의 다른 포트를 사용하려면 다음과 같이 지정합니다(포트가 열려 있는지 확인하세요):

root@kitploit:~
# goaccess access.log -o report.html --real-time-html --port=9870

WebSocket 서버를 0.0.0.0이 아닌 다른 주소에 바인딩하려면 다음과 같이 지정합니다:

root@kitploit:~
# goaccess access.log -o report.html --real-time-html --addr=127.0.0.1

참고: TLS/SSL 연결을 통해 실시간 데이터를 출력하려면 --ssl-cert=<cert.crt> 및 --ssl-key=<priv.key>를 사용해야 합니다.

필터링

날짜 작업

또 다른 유용한 파이프는 웹 로그에서 날짜를 필터링하는 것입니다.

다음은 05/Dec/2010부터 파일 끝까지의 모든 HTTP 요청을 가져옵니다.

root@kitploit:~
# sed -n '/05\/Dec\/2010/,$ p' access.log | goaccess -a -

또는 상대 날짜(예: 어제 또는 내일) 사용:

root@kitploit:~
# sed -n '/'$(date '+%d\/%b\/%Y' -d '1 week ago')'/,$ p' access.log | goaccess -a -

특정 날짜 범위(DATE a부터 b까지)만 파싱하려면:

root@kitploit:~
# sed -n '/5\/Nov\/2010/,/5\/Dec\/2010/ p' access.log | goaccess -a -

일정량의 데이터만 보관하고 스토리지를 재활용하려면 특정 일수만 유지할 수 있습니다. 예를 들어 최근 5일만 유지 및 표시:

root@kitploit:~
# goaccess access.log --keep-last=5

가상 호스트

로그에 가상 호스트 필드가 포함되어 있다고 가정합니다. 예:

root@kitploit:~
vhost.io:80 8.8.4.4 - - [02/Mar/2016:08:14:04 -0600] "GET /shop HTTP/1.1" 200 615 "-" "Googlebot-Image/1.0"

그리고 상위 URL이 어떤 가상 호스트에 속하는지 확인하기 위해 요청에 가상 호스트를 추가하려면:

root@kitploit:~
awk '$8=$1$8' access.log | goaccess -a -

동일한 작업을 수행하면서 실시간 필터링 및 파싱을 사용하려면:

root@kitploit:~
tail -f  access.log | unbuffer -p awk '$8=$1$8' | goaccess -a -

가상 호스트 목록을 제외하려면 다음을 수행할 수 있습니다:

root@kitploit:~
# grep -v "`cat exclude_vhost_list_file`" vhost_access.log | goaccess -

파일, 상태 코드 및 봇

특정 페이지(예: 페이지 뷰, html, htm, php 등)를 요청 내에서 파싱하려면:

root@kitploit:~
# awk '$7~/\.html|\.htm|\.php/' access.log | goaccess -

참고: $7은 공통 및 결합 로그 형식(가상 호스트 미포함)의 요청 필드입니다. 로그에 가상 호스트가 포함된 경우 대신 $8을 사용하는 것이 좋습니다. 대상 필드를 확인하는 것이 가장 좋습니다. 예:

root@kitploit:~
# tail -10 access.log | awk '{print $8}'

또는 특정 상태 코드(예: 500 (내부 서버 오류)) 파싱:

root@kitploit:~
# awk '$9~/500/' access.log | goaccess -

또는 여러 상태 코드(예: 모든 3xx 및 5xx):

root@kitploit:~
# tail -f -n +0 access.log | awk '$9~/3[0-9]{2}|5[0-9]{2}/' | goaccess -o out.html -

서버에 접속하는 봇(크롤러)의 대략적인 개요를 확인하려면:

root@kitploit:~
# tail -F -n +0 access.log | grep -i --line-buffered 'bot' | goaccess -

팁

또한 GoAccess를 낮은 우선순위로 실행하려면 다음과 같이 실행할 수 있습니다.

root@kitploit:~
# nice -n 19 goaccess -f access.log -a

서버에 설치하지 않고도 로컬 머신에서 실행할 수 있습니다!

root@kitploit:~
# ssh -n root@server 'tail -f /var/log/apache2/access.log' | goaccess - --log-format=COMBINED

참고: SSH는 -n이 필요하므로 GoAccess가 stdin에서 읽을 수 있습니다. 또한 암호가 필요한 경우 작동하지 않으므로 SSH 키 인증을 사용해야 합니다.

문제 해결

이전에 이미 답변된 많은 질문과 이슈를 받습니다.

  • 날짜/시간 일치 문제? 로그 형식과 GoAccess를 실행하는 시스템 로케일이 일치하는지 확인하세요. #1571 참조
  • 패턴 일치 문제? 공백이 자주 문제가 됩니다. 예를 들어 #136, #1579 참조
  • 로그 항목 일치와 관련된 기타 문제: 로그/날짜/시간 형식에 관한 200개 이상의 종료된 이슈 참조
  • 로그 처리 문제? 로그 처리에 관한 111개 이상의 이슈 참조

증분 로그 처리

GoAccess는 내부 저장소를 통해 로그를 증분 방식으로 처리하고 데이터를 디스크에 덤프할 수 있습니다. 작동 방식은 다음과 같습니다:

  1. 먼저 --persist로 데이터셋을 유지해야 합니다. 그런 다음 동일한 데이터셋을 로드할 수 있습니다.
  2. --restore. 새 데이터가 전달되면(파이프 또는 로그 파일을 통해) 원본 데이터셋에 추가됩니다.
참고 사항

GoAccess는 처리된 모든 파일의 inode를 추적합니다(파일이 동일한 파티션에 남아 있다고 가정). 또한 각 파일의 마지막 분석 줄에서 로그 데이터 스니펫과 마지막 분석 줄의 타임스탬프를 추출합니다. 예: inode:29627417|line:20012|ts:20171231235059

먼저 스니펫이 분석 중인 로그와 일치하는지 비교합니다. 일치하면 로그가 크게 변경되지 않았다고 가정합니다(예: 잘리지 않음). inode가 현재 파일과 일치하지 않으면 모든 줄을 분석합니다. 현재 파일이 inode와 일치하면 나머지 줄을 읽고 분석된 줄 수와 타임스탬프를 업데이트합니다. 추가 예방 조치로, 저장된 타임스탬프보다 작거나 같은 타임스탬프가 있는 로그 줄은 분석하지 않습니다.

파이프 데이터는 마지막으로 읽은 줄의 타임스탬프를 기준으로 작동합니다. 예를 들어, 저장된 타임스탬프보다 크거나 같은 타임스탬프를 찾을 때까지 들어오는 모든 항목을 분석하고 폐기합니다.

예제
root@kitploit:~
// 지난 달 액세스 로그
# goaccess access.log.1 --persist

그런 다음 로드:

root@kitploit:~
// 이번 달 액세스 로그 추가하고 새 데이터 보존
# goaccess access.log --restore --persist

유지된 데이터만 읽으려면 (새 데이터 파싱 없이):

root@kitploit:~
# goaccess --restore

기여하기 ##GoAccess에 대한 도움은 언제나 환영합니다. 가장 도움이 되는 방법은 직접 사용해보고 피드백을 주는 것입니다. GitHub 이슈 트래커와 풀 리퀘스트를 자유롭게 사용하여 코드 변경 사항을 논의하고 제출해 주세요.

GitHub에서 직접 .po 파일을 편집하거나 시각적 인터페이스 inlang.com을 사용하여 번역에 기여할 수 있습니다.

즐기세요!

도구 다운로드
배포판NCursesGeoIP (선택)GeoIP2 (선택)OpenSSL (선택)
Ubuntu/Debianlibncurses-devlibgeoip-devlibmaxminddb-devlibssl-dev
RHEL/CentOSncurses-develgeoip-devellibmaxminddb-developenssl-devel
Archncursesgeoiplibmaxminddbopenssl
Gentoosys-libs/ncursesdev-libs/geoipdev-libs/libmaxminddbdev-libs/openssl
SlackwarencursesGeoIPlibmaxminddbopenssl