Установка и использование GoAccess на Ubuntu 20.04
Кратко: GoAccess — лёгкий и быстрый анализатор веб-логов в реальном времени. В статье показано, как установить GoAccess через репозиторий и из исходников, запустить консольную панель, сгенерировать HTML-отчёт и применить советы для администратора. Подойдёт для Apache, Nginx и других источников логов.
Что такое GoAccess
GoAccess — это свободный и открытый инструмент для анализа веб-логов в реальном времени. Он парсит логи в формате Common Log Format (и популярных вариантах вроде COMBINED), поддерживает HTTP/2 и IPv6, даёт вывод в JSON и CSV, а также предлагает интерактивную панель в терминале или статический HTML-отчёт для браузера.
Коротко о ключевых возможностях:
- Быстрый анализ прямо в терминале или через веб-отчёт.
- Статистика: уникальные посетители, пропускная способность, рефереры, URLs, ОС, геолокация, HTTP-коды и т.д.
- Экспорт в HTML/JSON/CSV.
Важно: GoAccess не является SIEM и не хранит логи централизованно — он анализирует файлы логов, которые вы ему подаёте.

Требования
- Сервер с Ubuntu 20.04.
- Доступ root или привилегии sudo.
- Логи веб-сервера (например, /var/log/apache2/access.log).
Быстрый старт — обновление системы
Перед началом обновите пакеты:
apt-get update -yПосле обновления можно переходить к установке.
Установка GoAccess из репозитория
GoAccess предоставляет собственное APT-репозиторий. Последовательность команд:
- Добавьте GPG-ключ:
wget -O - https://deb.goaccess.io/gnugpg.key | apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -- Подключите репозиторий (подставляется кодовое имя вашей версии Ubuntu):
echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | tee -a /etc/apt/sources.list.d/goaccess.list- Обновите кеш и установите пакет:
apt-get update -y
apt-get install goaccess -yПосле этого GoAccess будет установлен и готов к использованию.
Установка GoAccess из исходников
Если нужна конкретная версия или опции при сборке, можно собрать из исходников.
- Установите зависимости:
apt-get install libncursesw5-dev libgeoip-dev libtokyocabinet-dev build-essential -y- Скачайте исходники (пример для версии 1.4 в исходном руководстве):
wget http://tar.goaccess.io/goaccess-1.4.tar.gz- Распакуйте и соберите:
tar -xzvf goaccess-1.4.tar.gz
cd goaccess-1.4/
./configure --enable-utf8 --enable-geoip=legacy
make
make installПосле установки проверьте версию:
goaccess --versionИ найдите файл конфигурации:
goaccess --dcfОбычно он указывает путь вроде /usr/local/etc/goaccess/goaccess.conf.
Пример вывода конфигурации сборки (поясняет включённые опции):
Your build configuration:
Prefix : /usr/local
Package : goaccess
Version : 1.4
Compiler flags : -pthread
Linker flags : -lnsl -lncursesw -lGeoIP -lpthread
UTF-8 support : yes
Dynamic buffer : no
Geolocation : GeoIP Legacy
Storage method : In-Memory with On-Disk Persitance Storage
TLS/SSL : no
Bugs : [email protected]Запуск консольной панели GoAccess
Самый простой запуск для анализа access.log Apache:
goaccess /var/log/apache2/access.log --log-format=COMBINEDОткроется интерактивная панель в терминале. Основные клавиши навигации:
F5 : обновить панель
G : перейти к последнему элементу (g — к началу)
j/k: прокрутка вниз/вверх
s : опции сортировки для текущего модуля
? : справка
TAB: перейти дальше
q : выйти
Нумерованные горячие клавиши переключают модули (в большинстве сборок):
- Сутки: уникальные посетители, трафик и хиты по дням

- Наиболее запрашиваемые нестатические файлы

- Статические файлы: изображения, CSS, JS

- Путь не найден — 404

- Хостнеймы и IP посетителей

- Операционные системы хостов

- Информация по каждому уникальному посетителю

- Почасовая статистика: хиты, уникальные посетители, трафик

Генерация HTML-отчёта
GoAccess может генерировать статический HTML-отчёт, доступный через веб-сервер:
goaccess /var/log/apache2/access.log --log-format=COMBINED -a -o /var/www/html/report.htmlОткройте http://your-server-ip/report.html в браузере, чтобы просмотреть отчёт.

Практические советы и методика анализа
Мини-методология для системного администратора:
- Скопируйте или архивируйте текущие логи перед массовым анализом.
- Определите формат логов (combined/common) — один тип строки лога поможет корректно задать –log-format.
- Запустите GoAccess сначала в терминале для быстрой диагностики, затем создавайте HTML-отчёты по расписанию.
- Автоматизируйте ротацию логов (logrotate) и настройте задания cron или systemd-timers для регулярных отчётов.
Пример строки формата COMBINED (для понимания):
- Клиентский IP, идентификатор, пользователь, время, запрос, код ответа, размер, реферер, user-agent.
Совет: если GoAccess не распознаёт формат автоматически, используйте опцию –log-format и при необходимости укажите –date-format и –time-format.
Когда GoAccess может не подойти (ограничения)
- Если нужна корреляция логов в режиме SIEM/коррелятор событий — лучше использовать специализированные решения.
- Для очень больших объёмов логов в реальном времени на распределённой инфраструктуре потребуется централизованное хранение (ELK/ClickHouse и т.п.).
- Некоторые современные форматы геолокации используют GeoIP2 (MaxMind DB). В старой конфигурации GoAccess мог собираться с GeoIP Legacy; для GeoIP2 потребуется libmaxminddb и соответствующая конфигурация.
Альтернативные подходы
- Docker: запуск GoAccess внутри контейнера для изоляции среды и быстрого развёртывания.
- Централизованный стек логирования (ELK, Loki, ClickHouse) для корреляции и хранения исторических данных.
- Использовать системные утилиты (awk/grep) для простых аналитических задач, если не требуется панель и экспорт.
Контроль безопасности и приватности
- Не публикуйте HTML-отчёты в открытый доступ без защиты: отчёты содержат IP-адреса, пути и user-agent.
- Защитите /var/www/html/report.html через базовую аутентификацию или внутренний VPN.
- При экспорте данных учитывайте требования конфиденциальности (например, GDPR) — маскируйте IP или храните отчёты в защищённом хранилище.
Рекомендации для ролей
Администратор:
- Убедиться в наличии ротации логов и прав на чтение логов для пользователя, запускающего GoAccess.
- Планировать регулярные отчёты и контролировать доступ к HTML-отчётам.
DevOps/инженер по мониторингу:
- Автоматизировать сбор отчётов через cron/systemd и отправку в систему оповещений.
- Интегрировать GoAccess-отчёты в пайплайны развёртывания при необходимости.
Разработчик:
- Использовать отчёты для поиска «горячих» URL и обнаружения узких мест приложения.
Краткий глоссарий
- COMBINED: распространённый формат логов Apache/Nginx с реферером и user-agent.
- GeoIP: база геолокации по IP (Legacy — старый формат; GeoIP2/MaxMind — современный).
- UTF-8: кодировка символов, важна при работе с многоязычными user-agent и URL.
Совместимость и нюансы для Ubuntu 20.04
- Стандартный репозиторий GoAccess подходит для Ubuntu 20.04, но при сборке из исходников проверьте зависимости и опции (GeoIP Legacy vs GeoIP2).
- Если требуются TLS/SSL для внутреннего веб-интерфейса, используйте обратный прокси (nginx/Apache) перед статическим HTML и настройте сертификаты.
Критерии приёмки
- GoAccess успешно устанавливается и запускается:
goaccess --versionвозвращает версию. - Консольная панель открывается и отображает статистику без ошибок.
- Сгенерированный HTML-отчёт доступен через защищённый URL и содержит ожидаемые метрики.
Итог
GoAccess — удобный инструмент для быстрой визуализации и анализа веб-логов прямо на сервере. Он хорош для оперативной диагностики, подготовки статических отчётов и базовой аналитики. Для крупномасштабных или долговременных задач стоит рассмотреть интеграцию с централизованными системами логирования.
Если нужны примеры автоматизации (cron/systemd), шаблоны конфигурации или помощь с GeoIP2 — напишите, и я приведу конкретные шаги.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента