Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
goaccess — GoAccess — это анализатор веб-логов в реальном времени и интерактивный просмотрщик, который работает в терминале в *nix-системах или через ваш браузер. | Kitploit
Инструменты/GitHubGitHub/allinurl/goaccess
Утилиты общего назначенияКонфиденциальностьОбнаружение АномалийАнализ Журналов
GitHuballinurl/goaccess

goaccess

GoAccess — это анализатор веб-логов в реальном времени и интерактивный просмотрщик, который работает в терминале в *nix-системах или через ваш браузер.

Репозиторий
20.8k1.2k1 день назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

GoAccess C build GoAccess

Что это?

GoAccess — это анализатор веб-журналов с открытым исходным кодом, работающий в реальном времени и интерактивный просмотрщик, который работает в терминале на *nix-системах или непосредственно в вашем браузере. Разработанный с учётом потребностей системных администраторов, DevOps-инженеров и специалистов по безопасности, он предоставляет быструю и действенную HTTP-статистику и визуальные отчёты сервера на лету. GoAccess анализирует журналы вашего веб-сервера в реальном времени и отображает данные непосредственно в терминале или через живую HTML-панель, что упрощает мониторинг трафика, обнаружение аномалий и мгновенное устранение неполадок.

Подробнее на: https://goaccess.io.

GoAccess Terminal Dashboard GoAccess HTML Dashboard

Возможности

GoAccess анализирует указанный файл веб-журнала и выводит данные в X-терминал. Возможности включают:

  • Полностью в реальном времени
    Все панели и метрики обновляются каждые 200 мс в терминале и каждую секунду в HTML-выводе.

  • Минимальная настройка
    Вы можете просто запустить его с файлом журнала доступа, выбрать формат журнала и позволить GoAccess проанализировать журнал и показать статистику.

  • Отслеживание времени ответа приложения
    Отслеживайте время, затраченное на обработку запроса. Чрезвычайно полезно, если вы хотите отследить страницы, замедляющие ваш сайт.

  • Аутентификация WebSocket:
    GoAccess предлагает расширенную аутентификацию WebSocket, поддерживающую локальную и внешнюю проверку JWT, с возможностью безопасного обновления токенов и бесшовной интеграцией с внешними системами аутентификации.

  • Почти все форматы веб-журналов
    GoAccess поддерживает любую пользовательскую строку формата журнала. Предопределённые параметры включают Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront и т.д.

  • Инкрементальная обработка журналов
    Нужна сохранность данных? GoAccess может обрабатывать журналы инкрементально с помощью опций сохранения на диск.

  • Только одна зависимость
    GoAccess написан на C. Для запуска вам нужен только ncurses. И всё. Он даже имеет собственный Web Socket сервер — http://gwsocket.io/.

  • Посетители
    Определите количество хитов, посетителей, пропускную способность и метрики самых медленных запросов по часам или датам.

  • Метрики для каждого виртуального хоста
    Есть несколько виртуальных хостов (серверных блоков)? Он имеет панель, отображающую, какой виртуальный хост потребляет больше всего ресурсов веб-сервера.

  • ASN (сопоставление номеров автономных систем)
    Отлично подходит для обнаружения вредоносных шаблонов трафика и их блокировки.

  • Настраиваемая цветовая схема
    Настройте GoAccess под свои цветовые предпочтения/схемы. Либо через терминал, либо применив таблицу стилей к HTML-выводу.

  • Поддержка больших наборов данных
    GoAccess может обрабатывать большие журналы благодаря оптимизированным хеш-таблицам в памяти. Он имеет очень хорошее использование памяти и довольно хорошую производительность. Это хранилище также поддерживает сохранение на диск.

  • Поддержка Docker Возможность собрать Docker-образ GoAccess из репозитория. Вы всё ещё можете полностью настроить его, используя монтирование томов и редактируя . Смотрите раздел ниже. Также есть документация по использованию .

Почти все форматы веб-журналов...

GoAccess поддерживает любую пользовательскую строку формата журнала. Предопределённые параметры включают, но не ограничиваются:

  • Amazon CloudFront (Download Distribution).
  • Amazon Simple Storage Service (S3)
  • AWS Elastic Load Balancing
  • Combined Log Format (XLF/ELF) Apache | Nginx
  • Common Log Format (CLF) Apache
  • Google Cloud Storage.
  • Apache virtual hosts
  • Squid Native Format.
  • W3C format (IIS).
  • Caddy's JSON Structured format.
  • Traefik's CLF flavor

Зачем GoAccess?

GoAccess был разработан как быстрый анализатор журналов на базе терминала. Его основная идея — быстро анализировать и просматривать статистику веб-сервера в реальном времени без необходимости использования браузера (отлично, если вы хотите быстро проанализировать журнал доступа через SSH или просто любите работать в терминале). Он также служит практическим инструментом для мониторинга безопасности, позволяя легко обнаруживать подозрительную активность, необычные шаблоны трафика, попытки подбора паролей, сканеры, ботов и аномальные запросы непосредственно из журналов. Хотя вывод в терминал является стандартным, он также может генерировать полный автономный отчет HTML в реальном времени, а также отчеты JSON и CSV. Вы можете рассматривать его скорее как команду мониторинга, чем что-то ещё.

Установка

Packaging status

Сборка из релиза

GoAccess может быть скомпилирован и использован на *nix-системах.

Скачайте, распакуйте и скомпилируйте GoAccess с помощью:

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

Дистрибутивы

Проще всего установить GoAccess на GNU+Linux, используя предпочтительный менеджер пакетов вашего дистрибутива GNU+Linux. Обратите внимание, что не все дистрибутивы будут иметь последнюю версию GoAccess.

Debian/Ubuntu

root@kitploit:~
# apt-get install goaccess

Примечание: Вероятно, это установит устаревшую версию 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 можно использовать в Windows через Cygwin. Смотрите пакеты Cygwin. Или через подсистему GNU+Linux в Windows 10.

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-отчёта в stdout:

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 используйте gunzip -c вместо zcat.

Поддержка многопоточности

Используйте --jobs=<количество> (или -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=<сертификат.crt> и --ssl-key=<приватный.key>.

Фильтрация

Работа с датами

Ещё один полезный конвейер — фильтрация дат из веб-журнала.

Следующее получит все HTTP-запросы, начиная с 05/Dec/2010 до конца файла.

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 -

Если мы хотим анализировать только определённый временной интервал с ДАТЫ 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 отслеживает inodes всех обработанных файлов (предполагая, что файлы останутся в том же разделе), кроме того, он извлекает фрагмент данных из журнала вместе с последней обработанной строкой каждого файла и временной меткой последней обработанной строки. Например, 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 и pull requests для обсуждения и отправки изменений кода.

Вы можете внести свой вклад в наши переводы, редактируя .po-файлы напрямую на GitHub или с помощью визуального интерфейса inlang.com

Приятного использования!

Скачать инструмент

goaccess.conf
Docker
docker-compose
DistroNCursesGeoIP (opt)GeoIP2 (opt)OpenSSL (opt)
Ubuntu/Debianlibncurses-devlibgeoip-devlibmaxminddb-devlibssl-dev
RHEL/CentOSncurses-develgeoip-devellibmaxminddb-developenssl-devel
Archncursesgeoiplibmaxminddbopenssl
Gentoosys-libs/ncursesdev-libs/geoipdev-libs/libmaxminddbdev-libs/openssl
SlackwarencursesGeoIPlibmaxminddbopenssl