GoAccess

Оглавление

1. Описание GoAccess

2. Справка по GoAccess

3. Руководство по GoAccess

4. Примеры запуска GoAccess

4.1 Простые случае использования

4.2 Работа с несколькими файлами логов

4.3 HTML вывод в реальном времени

4.4 Фильтрация

4.5 Сервер

4.6 Обработка увеличивающегося лога

5. Установка GoAccess

5.1 Как установить GoAccess в Linux

5.2 Установка GoAccess в Ubuntu, Linux Mint, Debian, Kali Linux и их производные

5.3 Установка GoAccess в Arch Linux

5.4 Установка GoAccess в Fedora, RHEL, CentOS

6. Как установить GoAccess в Windows

6.1 Пара слов о Cygwin

6.2 Пример запуска GoAccess в Windows

7. Скриншоты GoAccess

8. Инструкции по GoAccess


Описание GoAccess

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

С помощью этой программы вы можете не только выполнить анализ аудитории (геоданные, время посещения, запрашиваемые страницы), то и выявить агрессивные хосты и боты. Агрессивные, плохо настроенные или излишне активные веб обходчики, боты, парсеры могут замедлить работу сервера и даже вызвать отказ в обслуживании для обычных посетителей. С помощью этой программы вы сможете выявить самые активные источники запросов и локализовать аномалии.

С GoAccess можно анализировать данные получаемые в реальном времени, а также сохранённые логи веб-сервера. Программа может показывать данные (в реальном времени или при последующем анализе) в терминал, в браузере или сохранять в HTML документ, а также создавать JSON и CSV отчёты.

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

Особенности и преимущества GoAccess

GoAccess парсит указанный файл веб лога и выводит данные в X терминал.

Функцию включают в себя:

  • Полностью в реальном времени. Все панели и метрики регулярно обновляются каждые 200 мс при выводе в терминал и каждую секунду при HTML выводе.
  • Требуется минимальная конфигурация. Вы можете просто запустить программу указав файл журнала access, выбрать формат лога и всё остальное GoAccess сделает самостоятельно: распарсит журнала доступа и покажет вам статистику.
  • Отслеживание времени ответа приложения. Отслеживает время понадобившееся для обслуживания запроса. Крайне полезно если вы хотите отследить страницы, которые замедляют ваш сайт.
  • Поддерживаются практически все типы веб логов. GoAccess работает с любой настраиваемой строкой формата логов. Предварительно настроенные опции включают Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront и другие.
  • Инкрементальная обработка журнала. Требуется постоянство данных? GoAccess имеет возможность обрабатывать журналы поэтапно через базу данных B+Tree на диске.
  • Только одна зависимость. GoAccess записан на C. Для запуска программы в качестве зависимости требуется только ncurses. И это всё. Программа поставляется со своим собственным веб сокет (Web Socket) сервером http://gwsocket.io/.
  • Посетители. Определяет количество хитов, посетителей, переданных данных и метрики для самых медленных выполненных запросов по часам или датам.
  • Метрики для каждого виртуального хоста. У вас несколько виртуальных хостов (серверных блоков)? В программе есть панель, которая отображает, какой виртуальный хост потребляет больше всего ресурсов веб-сервера.
  • Настраиваемые цветовые схемы. Вы можете использовать ваши собственные предпочтения в цвете, цветовые схемы. Это можно менять через терминал или просто применяя таблицы стилей к HTML выводу.
  • Поддержка больших наборов данных. GoAccess имеет дисковое B+Tree хранилище для больших наборов данных на тот случай, если невозможно всё удержать в памяти.
  • Поддержка Docker. Возможность построить образ GoAccess в Docker из последних версий. Вы по-прежнему можете полностью конфигурировать его используя Volume mapping и редактируя goaccess.conf.
  • Панели для простой и понятной навигации. Единая панель состоит из различных отчётов. Панели отчётов могут быть расширены для увеличения количества показываемой информации. Одновременный вывод разнообразной информации позволяет вам быстро переключить внимания и проверить корреляции между различными отчётами.
  • HTML отчёты в реальном времени. Предпочитаете вместо терминала HTML, JSON или CSV отчёты? Программа умеет создавать любой из них в реальном времени. Она даже умеет отправлять по электронной почте HTML файл, поскольку умеет упаковывать все данные в единый документ без внешних зависимостей. Ведь удобно же!
  • Поддерживаются практически все форматы логов. GoAccess позволяет задать любую настраиваемую строку формата лога. Предварительно заданные опции включают, но не ограничиваются:
  • Amazon CloudFront (Download Distribution).
  • Amazon Simple Storage Service (S3)
  • AWS Elastic Load Balancing
  • Комбинированный формат логов (XLF/ELF) Apache | Nginx
  • Обычный формат логов (CLF) Apache
  • Google Cloud Storage.
  • Виртуальные хосты Apache
  • Squid Native Format.
  • W3C format (IIS).

Домашняя страница: https://goaccess.io/

Автор: Gerardo Orellana

Лицензия: MIT

Справка по GoAccess

Использование:

goaccess [имя_файла] [ опции ... ] [-c][-M][-H][-S][-q][-d][...]

С командой следующие опции могут быть указаны:

Опции формата лога и даты

  --date-format=<dateformat>      - Указывает формат даты, например, %d/%b/%Y
  --log-format=<logformat>        - Указывает формат лога. Внутренние кавычки должны
                                    быть экранированы или используйте одинарные кавычки.
  --time-format=<timeformat>      - Указывает формат времени в логе, например, %H:%M:%S

Опции пользовательского интерфейса

  -c --config-dialog               - Окно с запросом конфигурации лога/даты/времени.
  -i --hl-header                  - Цветное выделение активной панели.
  -m --with-mouse                 - Включить поддержку мыши на главной панели.
  --color=<fg:bg[attrs, PANEL]>   - Указать пользовательские цвета. Подробности
                                    и опции в Руководстве ниже.
  --color-scheme=<1|2|3>          - Схемы: 1 => Серая, 2 => Зелёная, 3 => Monokai.
  --html-custom-css=<path.css>    - Указать пользовательский CSS файл в HTML отчёте.
  --html-custom-js=<path.js>      - Указать пользовательский JS файл в HTML отчёте.
  --html-prefs=<json_obj>         - Установить стандартные настройки HTML отчёта.
  --html-report-title=<title>     - Установить название и заголовок страницы HTML отчёта.
  --json-pretty-print             - Формат JSON вывода с табами и переходами на новые строки.
  --max-items                     - Максимальное количество элементов для показа на панель.
                                    Ограничения смотрите в руководстве.
  --no-color                      - Отключить цветной вывод.
  --no-column-names               - Не записывать имена колонок в терминальный вывод.
  --no-csv-summary                - Отключить суммарные метрики на CSV выводе.
  --no-html-last-updated          - Спрятать поле HTML последнего обновления.
  --no-parsing-spinner            - Отключить метрики прогресса и показатель парсига.
  --no-progress                   - Отключить метрики прогресса.
  --no-tab-scroll                 - Отключить скроллинг по панелям с TAB.

Опции сервера

  --addr=<addr>                   - Указать IP адрес к которому привязать сервер.
  --daemonize                     - Запустить как демон (если отключена --real-time-html).
  --fifo-in=<путь>                 - Путь до именной трубы для чтения (FIFO).
  --fifo-out=<путь>                - Путь до именной трубы для записи (FIFO).
  --origin=<addr>                 - Убедиться, что клиенты отправляют указанный заголовок источника
                                    во время рукопожатия с WebSocket.
  --pid-file=<путь>                - Записать PID в файл когда используется --daemonize.
  --port=<порт>                   - Указать порт для использования.
  --real-time-html                - Включить HTML вывод в реальном времени.
  --ssl-cert=<cert.crt>           - Путь до TLS/SSL сертификата.
  --ssl-key=<priv.key>            - Путь до TLS/SSL приватного ключа.
  --ws-url=<url>                  - URL на который отвечает WebSocket.

Файловые опции

  -                               - Лог файл для парсинга читается из стандартного ввода (stdin).
  -f --log-file=<имя_файла>        - Путь до вводимого лог фаайла.
  -S --log-size=<число>           - Указать размер лог файла, полезно когда логи передаются по трубе.
  -l --debug-file=<имя_файла>      - Отправлять все отладочные сообщения в
                                    указанный файл.
  -p --config-file=<имя_файла>      - Пользовательский конфигурационный файл.
  --invalid-requests=<имя_файла>  - Журналировать в указанный файл невалидные запросы.
  --no-global-config               - Не загружать глобальный конфигурационный файл.

Опции парсинга

  -a --agent-list                 - Включить список user-agents по хосту.
  -b --browsers-file=<путь>        - Использовать дополнительный пользовательский список браузеров.
  -d --with-output-resolver       - Включить IP преобразование на HTML|JSON выводе.
  -e --exclude-ip=<IP>            - Исключить один или несколько IPv4/6. Разрешены 
                                    IP диапазоны, например, 192.168.0.1-192.168.0.10
  -H --http-protocol=<yes|no>     - Установить/снять протокол HTTP запроса если найден.
  -M --http-method=<yes|no>       - Установить/снять метод HTTP запроса если найден.
  -o --output=file.html|json|csv   - Вывод в HTML, JSON или CSV файл.
  -q --no-query-string            - Игнорировать содержимое строк запроса. Удаление
                                    строк запроса может очень значительно уменьшить
                                    потребляемую память.
  -r --no-term-resolver           - Отключить IP преобразователь в терминальном выводе.
  --444-as-404                    - Обрабатывать нестандартный код статуса 444 как 404.
  --4xx-to-unique-count           - Добавить клиентов с ошибками 4xx к счётчику
                                    уникальных посетителей.
  --anonymize-ip                  - Анонимизировать IP адреса перед выводом в отчёт.
  --all-static-files               - Включить статичные файлы со строкой запроса.
  --crawlers-only                 - Парсить и отображать только пауков.
  --date-spec=<date|hr>           - Указать дату. Возможные значения: `date`
                                    (по умолчанию), или `hr`.
  --double-decode                 - Декодировать дважды закодированные значения.
  --enable-panel=<PANEL>          - Включить парсинг/отображение заданной панели.
  --hide-referer=<NEEDLE>         - Спрятать реферера, но всё равно считать его. Разрешены
                                    подстановочные символы. например, *.bing.com
  --hour-spec=<hr|min>            - Спецификация часов. Возможные значения: `hr`
                                    (по умолчанию), или `min` (десятые части минут).
  --ignore-crawlers               - Игнорировать веб пауков.
  --ignore-panel=<PANEL>          - Игнорировать данную панель парсинга/отображения.
  --ignore-referer=<NEEDLE>       - Игнорировать и не считать реферера. Разрешены
                                    подстановочные символы. Например, *.bing.com
  --ignore-statics=<req|panel>    - Игнорировать статичные запросы.
                                    req => Игнорировать от валидных запросов.
                                    panel => Игнорировать от валидных запросов и панели.
  --ignore-status=<CODE>          - Игнорировать парсинг данного кода статуса.
  --num-tests=<число>             - Количество строк для тестирования. >= 0 (10 по умолчанию)
  --process-and-exit              - Распарсить лог и выйти без вывода данных.
  --real-os                       - Показать настоящие имена ОС. Например, Windows XP, Snow
                                    Leopard.
  --sort-panel=PANEL,METRIC,ORDER - Сортировать панели при начальной загрузке. Например:
                                    --sort-panel=VISITORS,BY_HITS,ASC. Список 
                                    панелей/полей в Руководстве ниже.
  --static-file=<расширение>       - Добавить статичное расширение файла, например: .mp3.
                                    Расширения чувствительны к регистру.

GeoIP Options

  --geoip-database=<путь>         - Указать путь до файла базы данынх GeoIP, например,
                                    GeoLiteCity.dat, GeoIPv6.dat ...

Другие опции

  -h --help                       - Справка.
  -V --version                    - Показать информацию о версии и выйти.
  -s --storage                    - Показать текущий метод хранения данных. Например, B+
                                    Tree, Hash.
  --dcf                           - Показать файла конфигурации по умолчанию
                                    когда не используется `-p` .

Руководство по GoAccess

Имя

goaccess — быстрый анализатор веб логов и интерактивный просмотрщик.

Синопсис

goaccess [имя_файла] [опции...] [-c][-M][-H][-q][-d][...]

Описание

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

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

GoAccess парсит указанный файл веб журнала и выводит данные в X терминал.

Функции включают:

  • Обобщённая статистика: Эта панель даёт итоговую информацию по нескольким метрикам, таким как количество валидных и невалидных запросов, время затраченное для анализа набора данных, уникальные посетители, запрошенные файлы, статичные файлы (CSS, ICO, JPG, etc) HTTP рефереры, ошибки 404, размер разобранного лог файла и количество принятой и отправленной информации.
  • Уникальные посетители: Эта панель показывает метрики, такие как хиты, уникальные посетители и совокупный трафик по датам. HTTP запросы, содержащие тот же IP, ту же дату и тот же пользовательский агент расцениваются как уникальные посетители. По умолчанию он включает веб обходчиков/пауков.
    Опционально дата может быть установлена на разбитие не по дням, а по часам, для этого используется опция --date-spec=hr, которая будет отображать даты как 05/Jun/2016:16. Это отлично если вы хотите прослеживать ваш ежедневный трафик на часовом уровне.
  • Запрошенные файлы: Эта панель отображает самые часто запрашиваемые файлы на вашем веб-сервере. Она показывает хиты, уникальные посетители и проценты, а также общий потреблённый трафик, протокол и использованный метод запроса.
  • Запрошенные статичные файлы: Выводит список самых частых статичных файлов, таких типов файлов как JPG, CSS, SWF, JS, GIF и PNG с теми же метриками, как и для предыдущей панели. Дополнительные статичные файлы могут быть добавлены в конфигурационном файле.
  • 404 или Not Found: Показывает такие же метрики, как и для предыдущих панелей, тем не менее, её данные содержат все страницы, которые не были найдены на этом сервере, то есть запрос которых вызвал код статус 404.
  • Хосты: Эта панель имеет детальную информацию о самих хостах. Это очень удобно для обнаружения агрессивных обходчиков и идентификации тех, кто потребляет пропускные ресурсы канала.
    Расширение панели может показать больше информации, такую как результаты обратного DNS преобразования хоста, страну источника и город. Если включён аргумент -a, может быть отображён список пользовательских агентов, для этого нужна выбрать интересующий IP адрес и затем нажать ENTER.
  • Операционные системы: Эта панель сообщит, на каких операционных системах работают хосты, делавшие запросы на этот сервер. Она пытается предоставить самую точную версию для каждой операционной системы.
  • Браузеры: Эта панель сообщит, какие браузеры использовали хосты, когда они посетили сервер. Она пытается предоставить самую точную версию по каждому браузеру.
  • Время визита: Эта панель отобразит почасовой отчёт. Эта опция покажет среднюю статистику посещаемости за все дни с разбивкой на 24 часа.
    Опционально, часы могут быть установлены на уровень одной десятой часа, для этого используется опция --hour-spec=min, которая отобразит часы как 16:4. Это отлично подходит если вы хотите локализовать пики трафика на вашем сервере.
  • Виртуальные хосты: Эта панель покажет все виртуальные хосты, распарсенные из лога доступа. Эта панель показывается если %v используется внутри строки формата лога.
  • URL ссылающихся страниц (referrer): Если хост, о котором идёт речь, обратился к сайту через другой ресурс, или был отправлен по ссылке/доставлен вам с другого хоста, то URL, с которого была сделана ссылка, будет отображена в этой панели. Смотрите опцию «--ignore-panel» в вашем конфигурационном файле для её включения, так как она по умолчанию отключена.
  • Ссылающиеся сайты: Эта панель покажет только часть, содержащую хост, но не целый URL с которого пришёл запрос.
  • Ключевые слова: Здесь сообщается о поисковых словах, используемых в поиске Google, Google кэше и Google Переводчике, которые видут на ваш веб-сервер. В настоящее время поддерживается только поиск Google через HTTP. Смотрите в вашем конфигурационном файле «--ignore-panel» для её включения, поскольку по умолчанию она отключена.
  • Геолокация: Определяет где IP адрес расположен географически. Статистика разбивается по континентам и странам. Для этой функции нужно компилировать с поддержкой GeoLocation.
  • Коды статуса HTTP: Цифровое значение кода статуса HTTP запросов.
  • Удалённый пользователь (HTTP аутентификация): Это userid персоны, запрашивающий документ определяемый как HTTP аутентификация. Если документ не защищён паролем, эта часть в строке лога будет "-", в томности как стоящая перед ней. Эта панель не включена, если %e не дана внутри переменной формата лога.

ПРИМЕЧАНИЕ: Опционально, если настроено, все панели могут отображать среднее время, затраченное на запрос.

Хранилище

Имеется три опции хранилища, которые могут использоваться с GoAccess. Выбор одной из них зависит от вашего окружения и потребностей.

Хеш таблица по умолчанию

В оперативной памяти хранилище обеспечивает лучшую производительность ценой ограничения размера набора данных до количества доступной физической памяти. По умолчанию GoAccess использует хеш таблицы в-памяти (in-memory). Если ваш набор данных подходит под память, то это отлично отработает. Она имеет очень хорошее использование памяти и весьма хорошую производительность.

Tokyo Cabinet On-Disk B+ Tree

Используйте этот метод хранения для больших наборов данных, когда невозможно поместить всё в память. База данных B+ tree медленнее чем любая хеш база данных, поскольку данные должны быть размещены на диске. Тем не менее использование SSD очень здорово улучшает производительность. Вы также можете использовать этот метод хранения если вам нужно, чтобы данные сохранялись для быстрой загрузки статистики для дальнейшего использования.

Tokyo Cabinet хеш база данных в-памяти (in-memory)

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

Конфигурация (перед компиляцией)

Для настройки GoAccess может использоваться множество опций. Для просмотра полного актуального списка выполните ./configure --help

--enable-debug

Скомпилировать с отладочными символами и отключить оптимизации компилятора.

--enable-utf8

Скомпилировать с поддержкой широкого набора символов. Требуется Ncursesw.

--enable-geoip=<legacy|mmdb>

Скомпилировать с поддержкой GeoLocation. Требуется GeoIP от MaxMind. legacy будет использовать оригинальные базы данных GeoIP. mmdb будет использовать расширенные базы данных GeoIP2.

--enable-tcb=<memhash|btree>

Скомпилировать с поддержкой хранилища Tokyo Cabinet, memhash означает использовать хеш базу данных в-памяти (on-memory) Tokyo Cabinet. btree означает использовать базу данных на-диске (on-disk) базу данных B+ Tree Tokyo Cabinet.

--disable-zlib

Отключить zlib сжатие в базе данных B+ Tree.

--disable-bzip

Отключить bzip2 сжатие в базе данных B+ Tree.

--with-getline

Динамически расширять строковой буфер чтобы парсить полностроковые запросы вместо использования фиксированного буфера 4096.

--with-openssl

Компилировать GoAccess с поддержкой OpenSSL для его WebSocket сервера.

Опции

Следующие опции могут быть указаны в команде или определены в конфигурационном файле. Если указаны в конфигурационном файле, длинные опции должны использоваться с добавлением -- и без добавления знака равенства =.

Формат лога/даты/времени

--time-format=<timeformat>

Переменная формата времени за которой следует пробел, указывает формат времени в журнале, содержащей или имя в предопределённом формат (смотрите опции ниже) или любую комбинацию регулярных символов и специальных спецификаторов формата.

Они все начинаются со знака процент (%). Смотрите «man strftime». %T или %H:%M:%S.

Помните, что отметка времени даётся в микросекундах, %f должен использоваться как формат времени

--date-format=<dateformat>

Переменная формата даты, за которой следует пробел, определяет формат даты в журнале, содержит или предопределённый формат (смотрите опции ниже) или любую комбинацию регулярных символов и специальных спецификаторов формата.

Они все начинаются со знака процент (%). Смотрите «man strftime». %Y-%m-%d.

Помните, что отметка времени даётся в микросекундах, %f должен использоваться как формат времени

--log-format=<logformat>

Переменная формата журнала, за который следует пробел или \t при разделении табом (tab), определяет формат строки лога.

Помните, что если имеются какие-либо пробелы внутри формата, строка должна быть помещена в одинарные/двойные кавычки. Внутренние кавычки должны быть экранированы.

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

                COMBINED     - Комбинированный формат лога,
                VCOMBINED    - Комбинированный формат лога с виртуальными хостами,
                COMMON       - Обычный формат лога,
                VCOMMON      - Обычный формат лога с виртуальными хостами,
                W3C          - W3C расширенный формат лога,
                SQUID        - Нативный формат Squid Log,
                CLOUDFRONT   - Amazon CloudFront Web Distribution,
                CLOUDSTORAGE - Google Cloud Storage,
                AWSELB       - Amazon Elastic Load Balancing,
                AWSS3        - Amazon Simple Storage Service (S3)

Примечание: при передаче данных по трубе в GoAccess не будет показан диалог запроса конфигурации журнала/даты/времени, вам нужно предварительно задать его в вашем конфигурационном файле или в строке команды.

Опции пользовательского интерфейса

-c --config-dialog

Окно с запросом конфигурации журнала/времени/даты при запуске программы. Только когда инициализирован curses.

-i --hl-header

Цветная подсветка активной панели терминала.

-m --with-mouse

Включить поддержку мыши в главной панели терминала.

--color=<fg:bg[attrs, PANEL]>

Указать пользовательские цвета для терминального вывода.

Синтаксис цвета

ОПРЕДЕЛЕНИЕ пробел/tab colorFG#:colorBG# [аттрибуты,ПАНЕЛЬ]

               FG# = фоновый цвет [-1...255] (-1 = цвет терминала по умолчанию)
               BG# = фоновый цвет [-1...255] (-1 = цвет терминала по умолчанию)

Опционально можно применить аттрибуты цвета (несколько аттрибутов разделяются запятыми), такие как: bold, underline, normal, reverse, blink

Если нужно, то возможно применить настраиваемые цвета для каждой панели, то есть метрики в панели REQUESTS могут быть цвета A, в то время как такая же метрика в панели BROWSERS может быть цвета B.

Доступные цветовые определения:

  • COLOR_MTRC_HITS
  • COLOR_MTRC_VISITORS
  • COLOR_MTRC_DATA
  • COLOR_MTRC_BW
  • COLOR_MTRC_AVGTS
  • COLOR_MTRC_CUMTS
  • COLOR_MTRC_MAXTS
  • COLOR_MTRC_PROT
  • COLOR_MTRC_MTHD
  • COLOR_MTRC_HITS_PERC
  • COLOR_MTRC_HITS_PERC_MAX
  • COLOR_MTRC_VISITORS_PERC
  • COLOR_MTRC_VISITORS_PERC_MAX
  • COLOR_PANEL_COLS
  • COLOR_BARS
  • COLOR_ERROR
  • COLOR_SELECTED
  • COLOR_PANEL_ACTIVE
  • COLOR_PANEL_HEADER
  • COLOR_PANEL_DESC
  • COLOR_OVERALL_LBLS
  • COLOR_OVERALL_VALS
  • COLOR_OVERALL_PATH
  • COLOR_ACTIVE_LABEL
  • COLOR_BG
  • COLOR_DEFAULT
  • COLOR_PROGRESS

Для примеров цветовой схемы смотрите конфигурационный файл.

--color-scheme=<1|2|3>

Выберите среди цветовых схем терминала. 1 для дефолтной серой схемы. 2 для зелёной схемы. 3 для Monokai схемы (показывается только если терминал поддерживает 256 цветов).

--crawlers-only

Парсить и показывать только обходчиков (ботов).

--html-custom-css=<path/custom.css>

Указать путь до пользовательского CSS файла для загрузки в HTML отчёт.

--html-custom-js=<path/custom.js>

Установить путь до пользовательского JS файла для загрузки в HTML отчёт.

--html-report-title=<title>

Установить имя и заголовок HTML отчёта.

--html-prefs=<JSON>

Установить дефолтные настройки HTML отчёта. В качестве значения опции передаётся валидный JSON объект, содержащим HTML настройки. Это даёт возможность настроить график каждой панели. Смотрите примеры ниже.

Примечание: нужно, чтобы передаваемый объект JSON был одной строкой. Например,

--html-prefs='{"theme":"bright","perPage":5,"layout":"horizontal","showTables":true,"visitors":{"plot":{"chartType":"bar"}}}'

--json-pretty-print

Форматировать вывод JSON используя табы (tab) и переводы строк.

Примечание: это не рекомендуется когда делается вывод в HTML отчёт в реальном времени, поскольку нагрузка на WebSocket будет намного намного выше.

--max-items=<число>

Максимальное количество пунктов для отображения на каждую панель. Максимумом может быть число между 1 и n.

Помните: Только CSV и JSON вывод позволяет максимальное число более чем стандартное значение в 366 (или 50 для HTML отчётов реального времени) пунктов на каждую панель.

--no-color

Отключить цветной вывод. Это вывод по умолчанию в терминалы, которые не поддерживают цвета.

--no-column-names

Не записывать имена столбцов в терминальном выводе. По умолчанию он отображает имена столбцов для каждой доступной метрики в каждой панели.

--no-csv-summary

Отключить результирующие метрики в CSV выводе.

--no-progress

Отключить метриги прогресса [общее число запросов/запросы в секунду].

--no-tab-scroll

Отключить скроллинг по панелям когда нажимается клавиша TAB или когда панель выбирается цифровой кнопкой.

--no-html-last-updated

Не показывать поле о последнем обновлении, которое по умолчанию выводится в генерируемый HTML отчёт.

--no-parsing-spinner

Не показывать метрики прогресса и информацию о текущем состоянии процесса парсинга.

Опции сервера

--addr=<address>

Указать IP адрес к которому привязывается сервер. В противном случае привязывается на 0.0.0.0.

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

--daemonize

Запустить GoAccess как демон (только если включена --real-time-html).

Помните: В конфигурации GoAccess важно использовать абсолютные пути.

--origin=<url>

Убедитесь, что клиенты отправляют определённый исходный заголовок во время рукопожатия WebSocket. Указываемый источник должен выглядеть в точности как оригинальное поле заголовка, отправленное сервером, например, --origin=http://goaccess.io

--pid-file=<path/goaccess.pid>

Записать PID демона в файл когда используется опция --daemonize.

--port=<порт>

Указать порт для использования. По умолчанию WebSocket сервер для GoAccess прослушивает порт 7890.

--real-time-html

Включить HTML вывод в реальном времени.

GoAccess использует свой собственный WebSocket сервер для отправки данных от сервера к клиенту. Смотрите http://gwsocket.io для дополнительной информации, как работает WebSocket сервер.

--ws-url=<[scheme://]url[:port]>

URL которому отвечает WebSocket сервер. Это URL предоставляется конструктору WebSocket на клиентской стороне.

Опционально возможно указать WebSocket URI схему, такую как ws:// или wss:// для незашифрованных и зашифрованных соединений, например, wss://goaccess.io

Если GoAccess запущен за прокси, вы можете установить клиентскую сторону подключаться к другому порту указав его после хоста через двоеточие, например, goaccess.io:9999

По умолчанию, он будет пытаться подключиться к сгенерировавшему отчёт хосту. Если GoAccess запущен на удалённом сервере, хост удалённого сервера должен быть там указан. Также убедитесь, что это валидный хост а НЕ http адрес.

--fifo-in=<path/file>

Создать именную трубу (FIFO), которая считывает из заданного пути/файла.

--fifo-out=<path/file>

Создать именную трубу (FIFO), которая записывает в заданный путь/файл.

--ssl-cert=<cert.crt>

Путь до TLS/SSL сертификата. Чтобы включить поддержку TLS/SSL, требуется, чтобы в GoAccess использовались --ssl-cert и --ssl-key.

Работает только если в конфигурировании перед компиляцией использовалось --with-openssl.

--ssl-key=<priv.key>

Путь до приватного ключа TLS/SSL. Чтобы включить поддержку TLS/SSL, требуется, чтобы в GoAccess использовались --ssl-cert и --ssl-key.

Работает только если в конфигурировании перед компиляцией использовалось --with-openssl.

Файловые опции

-f --log-file=<logfile>

Указать путь до входного файла журнала. Если установлено в конфигурационном файле, это будет иметь приоритет перед -f в командной строке.

-S --log-size=<байты>

Указать размер файла журнала в байтах. Это полезно, когда для обработки логи, в которых размер журнала может быть указан явно, передаются по трубе.

-l --debug-file=<debugfile>

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

-p --config-file=<configfile>

Указать для использования пользовательский конфигурационный файл. Если установлен, то он будет иметь приоритет перед глобальным конфигурационным файлом (если есть).

--invalid-requests=<имя_файла>

Записывать невалидные запросы в указанный файл.

--no-global-config

Не загружать глобальный конфигурационный файл. Этой директорией обычно должна быть /usr/local/etc, если не указана с --sysconfdir=/dir. Смотрите опцию --dcf для поиска конфигурационного файла по умолчанию.

Опции парсинга

-a --agent-list

Включить список пользовательских агентов по хосту. Для более быстрого парсинга не включайте этот флаг.

-d --with-output-resolver

Включить IP преобразователь (resolver) в HTML|JSON выводе.

-e --exclude-ip=<IP|IP-range>

Исключить IPv4 или IPv6 из учёта. Могут быть включены диапазоны, для этого используйте дефис между начальным и конечным IP диапазона.

Примеры:

  • exclude-ip 127.0.0.1
  • exclude-ip 192.168.0.1-192.168.0.100
  • exclude-ip ::1
  • exclude-ip 0:0:0:0:0:ffff:808:804-0:0:0:0:0:ffff:808:808

-H --http-protocol=<yes|no>

Установить/отключить запрос HTTP протокола. Это создаст ключ запроса, содержащий протокол запроса + фактический запрос.

-M --http-method=<yes|no>

Установить/отключить метод HTTP протокола. Это создаст ключ запроса, содержащий метод запроса + фактический запрос.

-o --output=<path/file.[json|csv|html]>

Записать вывод в стандартный вывод (stdout), используя один из следующих файлов и соответствующее расширение для формата вывода:

  • /path/file.csv - Разделённые запятой значения (CSV)
  • /path/file.json - JSON (JavaScript Object Notation)
  • /path/file.html - HTML

-q --no-query-string

Игнорировать в HTTP запросе ту часть, которая содержит данные, передаваемые странице (строка запроса), например, www.google.com/page.htm?query превратитсья www.google.com/page.htm.

Примечание: Удаление строки запроса может значительно снизить потребление памяти, особенно по запросам с отметкой времени.

-r --no-term-resolver

Отключить IP преобразователь (resolver) в терминальном выводе.

--444-as-404

Обрабатывать нестандартный статус кода 444 как 404.

--4xx-to-unique-count

Добавить клиентов с ошибкой 4xx к счётчику уникальных посетителей.

--accumulated-time

Сохраните накопленное время обработки из анализа ежедневных журналов.

Только если сконфигурировано перед компиляцией с --enable-tcb=btree.

--anonymize-ip

Анонимизировать клиентские IP адреса. Опция анонимизации IP устанавливает в пользовательском IP последний октет для IPv4 и последние 80 бит для IPv6 на нули, например, 192.168.20.100 превратиться в 192.168.20.0, а 2a03:2880:2110:df07:face:b00c::1 будет преобразован в 2a03:2880:2110:df07::

--all-static-files

Включать статичные файлы, которые содержат строку запроса, например, /fonts/fontawesome-webfont.woff?v=4.0.3

--browsers-file=<путь>

Включить дополнительный разделённый список браузеров/сканеров/сборщиков фидов (RSS лент) и прочего. Смотрите config/browsers.list или https://raw.githubusercontent.com/allinurl/goaccess/master/config/browsers.list для дополнительных примеров.

--date-spec=<date|hr>

Установить вид даты либо на date (по умолчание), либо на hr для показа часов, которые будут добавлены к дате.

Это используется в панели посетителей. Это полезно для отслеживания посетителей на почасовом уровне. Например, указание показывать часы приведёт к показу трафика по часам, при этом дата будет в форме 18/Dec/2010:19, то есть номер часа идёт после двоеточия.

--double-decode

Дважды декодировать значения. Это включает пользовательские агенты, запросы и реферер.

--enable-panel=<PANEL>

Включить парсинг и отображение заданной панели.

Доступные панели:

  • VISITORS
  • REQUESTS
  • REQUESTS_STATIC
  • NOT_FOUND
  • HOSTS
  • OS
  • BROWSERS
  • VISIT_TIMES
  • VIRTUAL_HOSTS
  • REFERRERS
  • REFERRING_SITES
  • KEYPHRASES
  • STATUS_CODES
  • REMOTE_USER
  • GEO_LOCATION

--hide-referer=<NEEDLE>

Спрятать referer (информация о ссылающихся страницах), но всё равно считать их. Можно использовать подстановочные символы, например, *.bing.com.

--hour-spec=<hr|min>

Задать спецификацию времени, можно указать hr — часы (по умолчанию) или min, чтобы отображались десятые части часа, которые добавляются к каждому часу.

Это используется в панели распределения трафика. Это полезно для отслеживания пиково трафика на вашем сервере в определённые моменты.

--ignore-crawlers

Не учитывать веб обходчиков в счётчиках посетителей.

--ignore-panel=<PANEL>

Игнорировать парсинг и отображение заданной панели.

Доступные панели:

  • VISITORS
  • REQUESTS
  • REQUESTS_STATIC
  • NOT_FOUND
  • HOSTS
  • OS
  • BROWSERS
  • VISIT_TIMES
  • VIRTUAL_HOSTS
  • REFERRERS
  • REFERRING_SITES
  • KEYPHRASES
  • STATUS_CODES
  • REMOTE_USER

--ignore-referer=<referer>

Игнорировать рефереры (referer) из учёта. Разрешены подстановочные символы, например, *.domain.com ww?.domain.*

--ignore-status=<CODE>

Игнорировать парсинг и отображение одного или нескольких кодов статуса. Для нескольких кодов статуса, используйте эту опцию много раз.

--num-tests=<число>

Число строк из журнала доступа для тестирования предоставленного формата журнала/даты/времени. По умолчанию парсер установлен на тестирование 10 строк. Если установлено на 0, то парсер не будет тестировать какие-либо строки и будет парсить целый журнал доступа. Если строка совпадает с заданным форматом журнала/даты/времени до достижения <числа>, парсер будет считать этот лог валидным, в противном случае GoAccess вернёт EXIT_FAILURE и отобразит соответствующее сообщение об ошибке.

--process-and-exit

Парсить лог и выйти без вывода данных. Полезно если мы хотим только добавить новые данные в базу данных на-диске (on-disk) без вывода в файл или терминал.

--real-os

Отображать настоящие имена ОС, например, Windows XP, Snow Leopard.

--sort-panel=<ПАНЕЛЬ,ПОЛЕ,ПОРЯДОК>

Сортировать панели при начальной загрузке. Опции сортировки разделены запятыми. Опции в формате ПАНЕЛЬ,ПОЛЕ,ПОРЯДОК

Доступные метрики:

  • BY_HITS - Сортировать по хитам (количеству запросов)
  • BY_VISITORS — Сортировать по уникальным посетителям
  • BY_DATA - Сортировать по данным
  • BY_BW - Сортировать по затраченному трафику
  • BY_AVGTS - Сортировать по среднему времени обработки
  • BY_CUMTS - Сортировать по накопительному времени обработки
  • BY_MAXTS - Сортировать по максимальному времени обработки
  • BY_PROT - Сортировать по http протоколу
  • BY_MTHD - Сортировать по http методу

Доступные порядки:

  • ASC
  • DESC

--static-file=<расширение>

Добавить расширения статичных файлов, например: .mp3 Расширения чувствительны к регистру.

Опции геолокации

-g --std-geoip

Стандартная база данных GeoIP для уменьшенного потребления памяти.

--geoip-database=<geofile>

Указать путь до файла базы данных GeoIP. Например, GeoLiteCity.dat.

Если используется GeoIP2, вам нужно будет загрузить базу данных GeoLite2 City или Country с MaxMind.com и использовать опцию --geoip-database для указания пути до базы данных. Вы также можете получить файлы обновлённых баз данных с MaxMind.com. Одинаково поддерживаются файлы IPv4 и IPv6. Для обновлённых URL баз данных пожалуйста смотрите стандартный конфигурационный файл GoAccess.

Примечание: --geoip-city-data это псевдоним для --geoip-database.

Другие опции

-h --help

Справка.

-s --storage

Показать текущий метод хранения. Например, B+ Tree, Hash.

-V --version

Показать информацию о версии и выйти.

--dcf

Показать путь до стандартного файла конфигурации когда не используется `-p`.

Опции хранилища ON-DISK

--keep-db-files

Постоянно хранить спарсенные данные на диск. Если файлы базы данных существуют, файлы будут перезаписаны. Это должно быть установлено для первого набора данных. Установка на false удалит все файлы базы данных при выходи из программы. Смотрите примеры ниже.

Работает только если перед компиляцией сконфигурировано с --enable-tcb=btree

--load-from-disk

Загрузить с диска предварительно сохранённые данные. Если считываются только хранимые данные (без добавления из стандартного ввода), то уже должны существовать файлы базы данных. Смотрите --keep-db-files и примеры ниже.

Работает только если перед компиляцией сконфигурировано с --enable-tcb=btree

--db-path=<dir>

Путь где храниться on-disk база данных. Значение по умолчанию это директория /tmp/goaccess<PID> (создаётся по запросу).

Работает только если перед компиляцией сконфигурировано с --enable-tcb=btree

--xmmap=<число>

Установить размер в байтах дополнительно размеченной памяти. Значение по умолчанию 0.

Работает только если перед компиляцией сконфигурировано с --enable-tcb=btree

--cache-lcnum=<число>

Указать максимальное число leaf nodes (листовых узлов) для кэширования. Если это не больше чем 0, то используется значение по умолчанию. Значение по умолчанию это 1024. Установка большего значение увеличит производительность, тем не менее, повысится потребление памяти. Более низкое значение уменьшит потребление памяти.

Работает только если перед компиляцией сконфигурировано с --enable-tcb=btree

--cache-ncnum=<число>

Указывает максимальное non-leaf nodes (неконечные узлы) для кэширования. Если это не больше 0, указывается значение по умолчанию. Значением по умолчанию является 512.

Работает только если перед компиляцией сконфигурировано с --enable-tcb=btree

--tune-lmemb=<число>

Указывает число членов на каждой leaf page (странице листа). Если оно не больше 0, то указывается стандартное значение. Стандартное значение равно 128.

Работает только если перед компиляцией сконфигурировано с --enable-tcb=btree

--tune-nmemb=<число>

Указывает число членов на каждой страницы non-leaf nodes (узлов без листьев). Если оно не больше 0, то используется значение по умолчанию, которое равно 256.

Работает только если перед компиляцией сконфигурировано с --enable-tcb=btree

--tune-bnum=<число>

Указывает количество элементов в bucket array. Если оно не более чем 0, то указывается дефолтная величина. Значением по умолчанию является 32749. Предполагаемый размер bucket array примерно в 1-4 размера от числа всех страниц для сохранения.

Работает только если перед компиляцией сконфигурировано с --enable-tcb=btree

--compression=<zlib|bz2>

Указывает, что каждая страница сжимается с ZLIB|BZ2 кодировкой.

Работает только если перед компиляцией сконфигурировано с --enable-tcb=btree

Формат настраиваемого журнала/даты

GoAccess может парсить практически любой формат веб логов.

Предварительно настроенные варианты включают в себя Обычный формат логов (CLF), Комбинированный формат логов (XLF/ELF), с добавлением виртуальных хостов, Amazon CloudFront (Download Distribution), Google Cloud Storage и формат W3C (IIS).

GoAccess также позволяет любой настраиваемый формат строки

Имеется два способа настройки формата журнала. Самый простой — это запустить GoAccess с опцией -c для появления окна с запросом о настройки. В противном случае это можно настроить в ~/.goaccessrc или %sysconfdir%.

Примечание: %sysconfdir% это или /etc/, или /usr/etc/ или /usr/local/etc/

Формат времени (time-format)

Переменная time-format за которой следует пробел, определяет формат времени в журнале, она содержит любую комбинацию обычных символов и специальные спецификаторы формата. Они все начинаются со знака процент (%). Смотрите `man strftime`. Пример %T или %H:%M:%S.

Примечание: если метка времени дана в микросекундах, должен использоваться %f в качестве формата времени.

Формат даты (date-format)

За переменной date-format следует пробел, она определяет формат даты в журнале, содержит любую комбинацию обычных символов и специальных спецификаторов формата. Они все начинаются со знака процента. Смотрите `man strftime`. Пример, %Y-%m-%d.

Примечание: если метка времени дана в микросекундах, должен использоваться %f в качестве формата даты.

Формат журнала (log-format)

За переменной формата журнала следует пробел или \t, эта переменная определяет формат строки журнала.

Спецификаторы

%x

Поле даты и времени соответствующее переменным формата времени и формата даты. Это используется когда даётся метка времени или дата с временем соединены в одну строку (например, 1501647332 или 20170801235000) вместо даты и времени разделённых по двум переменным.

%t

поле времени соответствующее переменной формата времени.

%d

поле даты, соответствующее переменной формата даты.

%v

Каноническое Имя Сервера (Server Name) сервера, обслуживающего запрос (Виртуальный Хост — Virtual Host).

%e

Это userid персоны, запросившей документ как определено по HTTP аутентификации.

%h

хост (IP адрес клиента, IPv4 или IPv6).

%r

Строка запроса от клиента. Чтобы он подходил для парсинга, требуются специфические разделители вокруг запроса (единичные кавычки, двойные кавычки или что-то ещё). Если их нет, мы должны использовать комбинацию специальный формат спецификаторов, таких как %m %U %H.

Примечание: Используйте или %r для получения полного запроса ИЛИ %m, %U, %q и %H для формирования вашего запроса, не используйте оба сразу.

%q

Строка запроса.

%m

Метод запроса.

%U

Запрошенный путь URL.

Примечание: Если строка запроса в %U нет нужды использовать %q. Тем не менее если URL путь не включает строку запроса, вы можете использовать %q и строка запроса с переменными будет добавлена к запросу.

%H

Протокол запроса.

%s

Код статуса, который сервер отправляет клиенту.

%b

Размер возвращаемого клиенту объекту.

%R

Реферер (Referrer) заголовка HTTP запроса.

%u

Пользовательский агент (user-agent) заголовка HTTP запроса.

%D

Время понадобившееся для обслуживания запроса в микросекундах в виде десятичного числа.

%T

Время понадобившееся для обслуживания запроса в секундах с точностью до миллисекунд.

%L

Время понадобившееся для обслуживания запроса в миллисекундах в виде десятичного числа.

%^

Игнорировать это поле.

%~

Двигаться вперёд по строке лога до того, как будет найден первый символ не-пробела (!isspace).

~h

Хост (IP адрес клиента, может быть IPv4 или IPv6) в поле X-Forwarded-For (XFF).

Примечание: Для XFF, GoAccess использует специальный спецификатор, который состоит из тильды перед спецификатором хоста, за которым следует символ(ы), которые определяют поле XFF, которое заключено в фигурные скобки, то есть ~h{," }). Например, ~h{," } используется чтобы парсить поле "11.25.11.53, 17.68.33.17", которое разганичего двойной кавычкой, запятой и пробелом.

Примечание: Чтобы в GoAccess получить среднее, кумулятивное и максимальное время обработки запроса, вам нужно начать вести журнал времени ответов на вашем веб-сервере. В Nginx вы можете добавить $request_time в ваш формат лога или %D в Apache.

Важно: если одновременно используется несколько спецификаторов времени обработки запроса, первая опция, которая указана в строке формата, будет иметь приоритет над другими спецификаторами.

Для GoAccess требуются следующие поля:

%h

валидный IPv4/6

%d

валидная дата

%r

валидный запрос

Интерактивные ключи

F1 или h

Основная помощь.

F5

Перерисовать главное окно.

q

Выйти из программы, текущего окна или свернуть активный модуль

o или ENTER

Развернуть выделенный модуль или открытое окно

0-9 и Shift + 0

Сделать выбранный модуль активным

j

Пролистнуть далее внутри раскрытого модуля

k

Пролистнуть вверх внутри раскрытого модуля

c

Установить или изменить цветовую схему.

TAB

Переходить по модулям по кругу. Начинает с текущего активного модуля.

SHIFT + TAB

Переходить по модулям по кругу в обратном направлении. Начинает с текущего активного модуля.

^f

Пролистнуть вперёд на один экран внутри активного модуля.

^b

Пролистнуть назад на один экран внутри активного модуля.

s

Опции сортировки для активного модуля

/

Поиск по всем модулям (разрешены регулярные выражения)

n

Найти позицию следующего вхождения по всем модулям.

g

Перейти к первому элементу или верху экрана.

G

Перейти к последнем элементу или низу экрана.

Примечания

Каждая активная панель имеет в общей сложности 366 элементов или 50 в отчёте HTML реального времени. Количество элементов настраивается используя опцию --max-items. Тем не менее только в CSV и JSON выводе разрешено максимальное число больше чем значение по умолчанию в 366 элементов на панель.

При анализе того же файла журнала второй раз используя on-disk B+Tree и используя --keep-db-files и --load-from-disk при каждом запуске, GoAccess будет считать каждую запись дважды.

Хит (hit) — это запрос (строка в логе доступа), например, 10 запросов = 10 хитов. HTTP запросы с одинаковыми IP, датой и пользовательским агентом расцениваются как уникальный посетитель.

Примеры запуска GoAccess

Примечание: передача данных по трубе в GoAccess не будет выводить диалоговый запрос настройки лога/даты/времени, вам предварительно нужно установить их в вашем конфигурационном файле или в командной строке.

Простые случае использования

Вывести в терминал и сгенерировать интерактивный отчёт:

goaccess access.log

Чтобы сгенерировать HTML отчёт:

goaccess access.log -a > report.html

Чтобы сгенерировать JSON отчёт:

goaccess access.log -a -d -o json > report.json

Чтобы сгенерировать CSV файл:

goaccess access.log --no-csv-summary -o csv > report.csv

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

tail -f access.log | goaccess -

И даже ещё лучше, фильтровать во время поддержания открытой трубы для обратного анализа в реальном времени, мы можем использовать tail -f и шаблон совпадения с такими инструментами как grep, awk, sed и т.д.:

tail -f access.log | grep -i --line-buffered 'firefox' | goaccess --log-format=COMBINED -

или для парсинга из начала файла во время поддержания открытой трубы и применении фильтра

tail -f -n +0 access.log | grep -i --line-buffered 'firefox' | goaccess -o report.html --real-time-html -

Работа с несколькими файлами логов

Имеется несколько способов парсить с GoAccess много журналов. Самый простой это передать несколько файлов журналов в строку команды:

goaccess access.log access.log.1

Так можно парсить даже файлы из трубы во время считывания обычных файлов:

cat access.log.2 | goaccess access.log access.log.1 -

Обратите внимание: к команде добавляется единичное тире чтобы дать знать GoAccess что она должна считывать данные передаваемые по трубе.

Теперь если мы хотим добавить больше гибкости GoAccess, мы можем делать серию из труб. Например, если нам хотелось бы обработать все сжатые файлы журналов access.log.*.gz и дополнительно текущий конфигурационный файл, мы делаем:

zcat access.log.*.gz | goaccess access.log -

Примечание: На Mac OS X, используйте gunzip -c вместо zcat.

HTML вывод в реальном времени

GoAccess имеет возможность выводить данные реального времени в HTML отчёт. Вы можете даже отправить HTML файл по электронной почте поскольку он собран в единый файл без внешних файловых зависимостей, просто супер удобно!

Процесс генерации HTML отчёта в реальном времени очень схож с процессом создания статичного отчёта. Нужна только опция --real-time-html чтобы это делалось в реальном времени.

goaccess access.log -o /usr/share/nginx/html/your_site/report.html --real-time-html

Для просмотра вашего отчёта вы можете перейти в http://your_site/report.html.

По умолчанию GoAccess будет использовать имя хоста для создания отчёта. Опционально вы можете указать URL к которому будет подключаться клиентский браузер.

goaccess access.log -o report.html --real-time-html --ws-url=goaccess.io

По умолчанию GoAccess прослушивает порт 7890 для использования отличного от 7890 порта вы можете указать его следующим образом (убедитесь, что порт открыт, то есть не заблокирован файерволом и при этом не используется другой сетевой службой):

goaccess access.log -o report.html --real-time-html --port=9870

А для привязки WebSocket сервера другому адресу, отличному от 0.0.0.0, вы можете указать его так:

goaccess access.log -o report.html --real-time-html --addr=127.0.0.1

Примечание: Для вывода данных реального времени по TLS/SSL соединению, вам нужно использовать --ssl-cert=<cert.crt> и --ssl-key=<priv.key>.

Фильтрация

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

Иногда нужно построить отчёт по веб логу отфильтровав данные за определённые даты из журнала веб-сервера.

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

sed -n '/05\/Dec\/2010/,$ p' access.log | goaccess -a -

или используя относительные данные такие как вчерашний или завтрашний день:

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

Если вы хотите парсить только определённые границы времени от ДАТЫ А до ДАТЫ Б, то можно сделать:

sed -n '/5\/Nov\/2010/,/5\/Dec\/2010/ p' access.log | goaccess -a -

Виртуальные хосты

Предположим ваш лог содержит поле виртуальный хост, например:

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:

awk '$8=$1$8' access.log | goaccess -a -

Чтобы сделать это же самое, но также используя фильтрацию и парсинг реального времени:

tail -f access.log | unbuffer -p awk '$8=$1$8' | goaccess -a -

Для исключения списка виртуальных хостов вы можете сделать следующее:

grep -v "`cat exclude_vhost_list_file`" vhost_access.log | goaccess -

Файлы, коды статусов и боты

Для парсинга определённых страниц, например страниц views, html, htm, php и так далее внутри запроса:

awk '$7~/\.html|\.htm|\.php/' access.log | goaccess -

Обратите внимание, $7 это поле запроса для обычных и комбинированного формата логов (без виртуальных хостов), если ваш лог включает виртуальные хосты, тогда вероятном вам нужно вместо этого значения использовать $8. Лучше проверить, какое поле вы снимаете, например:

tail -10 access.log | awk '{print $8}'

Или для парсинга определённого кода статуса, например, 500 (Internal Server Error):

awk '$9~/500/' access.log | goaccess -

Или нескольких кодов статуса, например все 3xx и 5xx:

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

И для получения примерного обзора, как много ботов (веб обходчиков) заходили на ваш сервер:

tail -F -n +0 access.log | grep -i --line-buffered 'bot' | goaccess -

Сервер

Также стоит указать, что если мы хотим запустить GoAccess с более низким приоритетам, мы можем запустить её так:

nice -n 19 goaccess -f access.log -a

и если вы не хотите устанавливать её на ваш сервер, вы можете запустить её с локальной машины!

ssh root@server 'cat /var/log/apache2/access.log' | goaccess -a -

Обработка увеличивающегося лога

GoAccess имеет возможность обрабатывать логи с приращением через базу данных on-disk B+Tree. Это работает следующим образом:

  1. Вначале данные должны быть сохранены с --keep-db-files, затем этот же набор данных может быть загружен с --load-from-disk.
  2. Если переданные новые данные (по трубе или через лог файл), он добавит их к оригинальному набору данных.
  3. Чтобы данные каждый раз сохранялись, должен использоваться флаг --keep-db-files.
  4. Если --load-from-disk используется без --keep-db-files, файлы базы данных будут удалены при закрытии программы.

Примеры

// лог доступа за последний месяц
goaccess access.log.1 --keep-db-files

затем загрузите его с

// добавить лог доступа за этот месяц и сохранить новые данные
goaccess access.log --load-from-disk --keep-db-files

Чтобы только прочитать сохранённые данные (без парсинга новых данных)

goaccess --load-from-disk --keep-db-files

Установка GoAccess

Как установить GoAccess в Linux

Для большинства популярных дистрибутивов Linux в их официальных репозиториях уже присутствует GoAccess, поэтому далее будут показаны команды, с помощью которых вы можете установить GoAccess в каждый вариант дистрибутива.

Если в вашем дистрибутиве GoAccess отсутствует в репозитории, то используйте универсальный способ установки.

Универсальный способ установки GoAccess в Linux

git clone https://github.com/allinurl/goaccess.git
cd goaccess
autoreconf -fiv
./configure --enable-utf8 --enable-geoip=legacy
make
sudo make install

Установка GoAccess в Ubuntu, Linux Mint, Debian, Kali Linux и их производные

В стандартных репозиториях этих систем имеется GoAccess, но устаревшей версии. Если вас это устраивает, то для установки достаточно выполнить команды:

sudo apt install goaccess libncursesw5-dev libgeoip-dev libtokyocabinet-dev libssl-dev

Если вы хотите получить самую свежую версию GoAccess, то вместо предыдущей для Ubuntu и Debian выполните следующие команды:

sudo apt install goaccess libncursesw5-dev libgeoip-dev libtokyocabinet-dev libssl-dev goaccess-tcb apt-transport-https
echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
sudo wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key add -
sudo apt update
sudo apt install goaccess

Для установки последней версии GoAccess в Kali Linux и Linux Mint выполните команды:

sudo apt install libncursesw5-dev libgeoip-dev libtokyocabinet-dev libssl-dev autoconf autopoint gettext
git clone https://github.com/allinurl/goaccess.git
cd goaccess
autoreconf -fiv
./configure --enable-utf8 --enable-geoip=legacy
make
sudo make install

Установка GoAccess в Arch Linux

sudo pacman -S goaccess ncurses geoip openssl

Установка GoAccess в Fedora, RHEL, CentOS

sudo yum install goaccess ncurses-devel geoip-devel tokyocabinet-devel openssl-devel

Установка GoAccess в Gentoo

sudo emerge net-analyzer/goaccess

Установка GoAccess в OS X / Homebrew

brew install goaccess

Установка GoAccess в FreeBSD

cd /usr/ports/sysutils/goaccess/ && make install clean
pkg install sysutils/goaccess

Установка GoAccess в OpenBSD

cd /usr/ports/www/goaccess && make install clean
pkg_add goaccess

Установка GoAccess в openSUSE

sudo zypper ar -f obs://server:http
sudo zypper ref && sudo zypper in goaccess

Установка GoAccess в OpenIndiana

pkg install goaccess
pkgsrc # (NetBSD, Solaris, SmartOS, ...)
pkgin install goaccess

Как установить GoAccess в Windows

Программа GoAccess создана работать в Linux. Но с помощью Cygwin этот анализатор логов веб сервера можно запустить и в Windows.

Пара слов о Cygwin

Cygwin — это среда, набор программ Linux. Это не виртуальная машина и не полноценный Linux. Но с помощью Cygwin можно использовать очень многие утилиты, инструменты Linux прямо напрямую в Windows. Кстати, если вы хотите начать знакомство с командами Linux, но по каким-то причинам не можете использовать Linux даже в виртуальной машине, то Cygwin станет для вас настоящей находной. Кстати, в Cygwin есть клиент SSH с помощью которого можно без проблем подключаться к удалённым серверам. Вообще там есть большинство распространённых инструментов Linux кроме некоторых, требующих особых условий (например, драйвера или прямой доступ к железу).

Итак, Cygwin — это в любом случае полезная вещь. Особенно для веб-мастера.

Итак, переходим на официальный сайт Cygwin и скачиваем там установщик.

Запустите — установка достаточно простая, вначале просо нажимайте кнопку «Далее». Выберите любое зеркало:

Когда дойдёте до выбора пакетов, то здесь дополнительно нужно выбрать для установки следующие пакеты:

  • libGeoIP-devel
  • libncurses-devel
  • libncursesw10
  • gcc-core (несколько вариантов, выберите gcc-core: GNU Compiler Collection (C, OpenPM)
  • make (много вариантов, выберите из раздела Devel Default пакет make: The GNU version of 'make' utility)
  • automake (много версий, выберите самую последнюю)
  • gettext (много вариантов, выберите из раздела Text Default)
  • gettext-devel
  • automake wrapper (ищите по слову «automake», установите из раздела Devel Default пакет automake: Wrapper for multiple version of Automake)
  • git (много вариантов, выберите из раздела Devel Default пакет git: Distributed version control system)

Например, в поле поиска вставляем имя первого пакета libGeoIP-devel:

Находим его и кликаем на плюсик в квадрате, чтобы раскрыть подробную информацию:

Как видим, по умолчанию статус Skip — что означает, что пакет не предполагается для установки (пропускается). Один раз кликните по слову Skip, чтобы вместо него появился номер версии:

  

Повторите это для всех пакетов.

Завершите установку, дождитесь скачивания и установки компонентов Cygwin.

Оставляем галочки, чтобы был создан ярлык Cygwin.

Теперь для установки GoAccess открываем консоль Cygwin и последовательно вводим там команды.

Обратите внимание, что консоль имитирует командную строку Linux, то есть там не работает для вставки сочетание клавиш Ctrl+c (точнее говоря, работает, но имеет другое значение). Поэтому для вставки используйте сочетание клавиш Shift+Insert, либо вставляйте через контекстное меню, для этого наведите курсор на консоль, нажмите правую кнопку мыши и выберите там Paste.

git clone https://github.com/allinurl/goaccess.git
cd goaccess
autoreconf -fiv
./configure --enable-utf8 --enable-geoip=legacy
make
make install

Чтобы проверить, что всё прошло удачно, выполните команду:

goaccess

Если всё прошло хорошо, то будет показана справка по программе:

Cygwin живёт в своём мирке и у него своя собственная папка за пределы которой он не выходит. Разместите лог файл для анализа в папку C:\cygwin64\home\Имя_Пользователя\. В ней Имя_Пользователя замените на настоящее имя пользователя, например, у меня пользователя компьютера зовут Alex, тогда я размещаю лог файл в папку C:\cygwin64\home\Alex\.

Пример запуска GoAccess в Windows

После того, как файл помещён в нужную папку, возвращаемся в консоль Cygwin и выполняем там команду для перехода в домашнюю директорию пользователя:

cd ~

Также выполните команду для очистки от ненужных файлов:

rm -rf goaccess

Перед каждой работой GoAccess в Cygwin, выполняйте там команду (это важно!):

export LANG='en_US.UTF-8'

Следующей командой мы увидим, какие файлы имеются в текущей папке:

ls -l

Как можно увидеть, у меня там только один файл, который называется biglog — это и есть тот самый веб журнал, который я хочу анализировать.

Простейший запуск программы:

goaccess лог_файл

Где вместо лог_файл вставьте имя файла с веб логами. Например:

goaccess biglog

Программа задаёт вопрос, какой формат у моего файла.

Для перехода между пунктами используйте курсорные клавиши вверх и вниз, для выбора пункта используйте Пробел, для продолжения нажмите ENTER, а для выхода нажмите q.

Я выбираю NCSA Combined Log Format — подходит для большинства случаев работы с Apache.

Когда программа закончит свою работу, то она выведет результат:

Для перехода по разделам используйте клавишу TAB, для возврата к предыдущему разделу нажмите TAB+SHIFT, чтобы развернуть список нажмите курсорную клавишу вправо.

Если всё получилось, попробуйте также запуск программы со следующими опциями:

goaccess лог_файл --log-format=COMBINED -i -m

Эти опции задают формат файла лога (--log-format=COMBINED), поэтому программа его больше не спрашивает, включают подсветку активной панели (-i) и поддержку мыши (-m).

Вы также можете создать HTML файл, который можно открыть в веб-браузере — очень удобно для анализа тем, кто неуверенно себя чувствует в консоли. Для этого выполните команду вида:

goaccess ФАЙЛ_ЖУРНАЛА --log-format=COMBINED --output=file.html

В которой вместо ФАЙЛ_ЖУРНАЛА вставьте имя вашего файла с веб логами. Например, у меня этот файл называется biglog, тогда моя команда следующая:

goaccess biglog --log-format=COMBINED --output=file.html

Когда программа закончит свою работу, то в папке C:\cygwin64\home\Имя_Пользователя\ будет создан файл file.html, который можно открыть любым веб-браузером.

Если вы никуда не торопитесь (или небольшой файл лога, то можете добавить к этой команде опцию -d для преобразования IP адресов в имена хостов — дополнительная информация (хотя работает довольно медленно).

goaccess access_log.1 --log-format=COMBINED --output=file.html -d

Скриншоты GoAccess

 

 

Инструкции по GoAccess

Ссылки на инструкции будут добавлены позже.

 

 

 

 

 

Близкие программы:

  • ARTLAS (100%)
  • LORG (100%)
  • simple findbackdoor (59.4%)
  • arpwatch (59.4%)
  • mitmcanary (59.4%)
  • Loki (RANDOM - 53.2%)
  • Рекомендуется Вам:

    Comments are Closed