Установка GoAccess
Проще всего установить GoAccess на Linux с помощью предпочитаемого менеджера пакетов вашего дистрибутива Linux.
Обратите внимание, что не во всех дистрибутивах будет доступна последняя версия GoAccess.
# apt-get install goaccess
Примечание: вероятно, это установит устаревшую версию GoAccess. Чтобы убедиться, что вы используете последнюю стабильную версию GoAccess, см. альтернативный вариант ниже.
$ echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
$ wget -O - http://deb.goaccess.io/gnugpg.key | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install goaccess
Примечание:
sudo apt-get install goaccess-tcb
.deb
в официальном репозитории также доступны через https. Возможно, вам потребуется установить apt-transport-https
.# yum install goaccess
# pacman -S goaccess
# emerge net-analyzer/goaccess
# brew install goaccess
# cd /usr/ports/sysutils/goaccess/ && make install clean
# pkg install sysutils/goaccess
# cd /usr/ports/www/goaccess && make install clean
# pkg_add goaccess
# pkg install goaccess
# pkgin install goaccess
GoAccess можно использовать в Windows через Cygwin.
Есть три варианта хранения данных, которые можно использовать с GoAccess. Выбор зависит от вашей среды и потребностей.
Хранилище в памяти обеспечивает лучшую производительность за счёт ограничения размера набора данных объёмом доступной физической памяти. По умолчанию GoAccess использует хеш-таблицы в памяти. Если ваш набор данных может поместиться в память, то это будет работать хорошо. У него очень хорошее использование памяти и довольно хорошая производительность.
Используйте этот метод хранения для больших наборов данных, где невозможно всё уместить в памяти. База данных B+ tree медленнее любой из хеш-баз данных, поскольку данные должны быть записаны на диск. Однако использование SSD значительно повышает производительность. Вы также можете использовать этот метод хранения, если вам нужна постоянство данных для быстрой загрузки статистики позже.
Альтернатива хеш-таблицам по умолчанию. Использует общий тип данных и поэтому его производительность с точки зрения памяти и скорости средняя.
Следующие параметры можно указать в командной строке или в файле конфигурации. Если они указаны в файле конфигурации, длинные параметры нужно использовать без префикса --
.
Параметр командной строки | Описание |
---|---|
-a --agent-list |
Включить список пользовательских агентов по хосту. |
-c --config-dialog |
Вывести окно конфигурации журнала/даты. |
-d --with-output-resolver |
Включить IP-преобразователь в HTML |
-e --exclude-ip=<IP> |
Исключить один или несколько IPv4/v6, включая диапазоны IP. |
-f --log-file=<filename> |
Путь к файлу входного журнала. |
-g --std-geoip |
Стандартная база данных GeoIP для меньшего использования памяти. |
-h --help |
Эта справка. |
`-H --http-protocol=<yes | no>` |
-i --hl-header |
Цветная подсветка активной панели. |
-M --http-method=<yes | no> |
-m --with-mouse | Включает поддержку мыши на главной панели инструментов. |
-o --output=<file.[html | csv |
-p --config-file= | Пользовательский файл конфигурации. |
-q --no-query-string | Удаляет строку запроса. Может уменьшить использование памяти. |
-r --no-term-resolver | Отключает IP-преобразователь в выводе терминала. |
-s --storage | Показывает текущий метод хранения. Например, B+ Tree, Hash. |
-V --version | Отображает информацию о версии и завершает работу. |
--444-as-404 | Рассматривает нестандартный код состояния 444 как 404. |
--4xx-to-unique-count | Добавляет ошибки клиента 4xx к количеству уникальных посетителей. |
--addr= | Указывает IP-адрес для привязки сервера. |
--all-static-files | Включает статические файлы, содержащие строку запроса. |
--cache-lcnum= | Максимальное количество кэшируемых конечных узлов. [1024] |
--cache-ncnum= | Максимальное количество неконечных кэшируемых узлов. [512] |
--color=<fg:bg[attrs, PANEL]> | Задаёт пользовательские цвета. |
--color-scheme=<1 | 2 |
--compression=<zlib,bz2> | Каждая страница сжимается с помощью кодировки ZLIB |
--date-format= | Задаёт формат даты в журнале. |
--date-spec=<date | hr> |
--db-path= | Путь к файлу базы данных. [/tmp/] |
--dcf | Показывает путь к файлу конфигурации по умолчанию. |
--debug-file= | Отправляет все сообщения отладки в указанный файл. |
--double-decode | Декодирует дважды закодированные значения. |
--enable-panel= | Включает анализ и отображение заданной панели. |
--geoip-city-data= | То же самое, что использовать --geoip-database . |
--geoip-database= | Путь к базе данных GeoIP v4/v6. Например, GeoLiteCity.dat |
--hour-spec=<hr | min> |
--html-custom-css=<path.css> | Указывает пользовательский CSS-файл в HTML-отчёте. |
--html-custom-js=<path.js> | Указывает пользовательский JS-файл в HTML-отчёте. |
--html-report-title | Устанавливает заголовок страницы и заголовок HTML-отчёта. |
--ignore-crawlers | Игнорирует сканеры. |
--ignore-panel= | Игнорирует анализ и отображение указанной панели. |
--ignore-referer= | Игнорирует рефереры при подсчёте. Можно использовать подстановочные знаки. |
--ignore-status=
|
Игнорировать обработку указанного кода состояния(ов). |
--invalid-requests= | Регистрирует недействительные запросы в указанном файле. |
--json-pretty-print | Форматирует вывод JSON с использованием табуляции и перевода строки. |
--keep-db-files | Сохраняет обработанные данные на диск. |
--load-from-disk | Загружает ранее сохранённые данные с диска. |
--log-format="" | Задаёт формат журнала. Внутренние кавычки необходимо экранировать. |
--max-items | Максимальное количество элементов для отображения в одном Панель. |
|
|--no-color| Отключить цветной вывод.|
|--no-column-names| Не выводить имена столбцов в выводе терминала.|
|--no-csv-summary| Отключить сводные метрики в CSV-выводе.|
|--no-global-config| Не загружать глобальный файл конфигурации.|
|--no-progress| Отключить показатели прогресса.|
|--no-tab-scroll| Отключить прокрутку панелей по TAB.|
|--no-html-last-updated| Не показывать поле последнего обновления в HTML-отчёте.|
|--num-tests=<число>| Количество строк для тестирования по заданному формату журнала.|
|--origin=| Гарантировать, что клиенты отправляют указанный заголовок источника при рукопожатии WS.|
|--port=<порт>| Указать используемый порт.|
|--real-os| Отображать реальные имена ОС, например Windows XP, Snow Leopard.|
|--real-time-html| Включить вывод HTML в реальном времени.|
|--sort-panel=PANEL,METRIC,ORDER| Сортировать панель при начальной загрузке. См. manpage для получения информации о метриках.|
|--static-file=<расширение>| Добавить расширение статического файла, например .mp3. Чувствительно к регистру.|
|--time-format=<формат времени>| Задать формат времени в журнале.|
|--tune-bnum=<число>| Число элементов массива корзины. [32749]|
|--tune-lmemb=<число>| Число членов на каждой листовой странице. [128]|
|--tune-nmemb=<число>| Число членов на каждой нелистовой странице. [256]|
|--ws-url=<[схема://]URL[:порт]>| URL, на который отвечает сервер WebSocket.|
|--xmmap=<число>| Установить размер в байтах дополнительной отображаемой памяти. [0]|
Для вывода в терминал и создания интерактивного отчёта:
# goaccess -f access.log
Чтобы создать HTML-отчёт:
# goaccess -f access.log -a > report.html
Создать JSON-отчёт:
# goaccess -f access.log -a -d -o json > report.json
Сгенерировать CSV-файл:
# goaccess -f access.log --no-csv-summary -o csv > report.csv
Флаг -a
указывает, что мы хотим обработать список агентов для каждого анализируемого хоста.
Флаг -d
указывает, что мы хотим включить IP-разрешитель в HTML | JSON-вывод. (Это займёт больше времени, поскольку необходимо разрешить все запросы.)
Флаг -c
предложит окно конфигурации даты и формата журнала. Только когда инициализируются проклятия.
Фильтрацию можно выполнить с помощью каналов. Например, используя grep для фильтрации определённых данных и затем передавая вывод в GoAccess. Это добавляет большую гибкость тому, что может отображать GoAccess. Например:
Если мы хотим обработать все access.log.*.gz
, мы можем сделать одно из следующего:
# zcat -f access.log* | goaccess
# zcat access.log.*.gz | goaccess
Примечание: На Mac OS X используйте gunzip -c
вместо zcat
.
GoAccess имеет возможность выводить данные в режиме реального времени в HTML-отчёты. Вы даже можете отправить HTML-файл по электронной почте, так как он состоит из одного файла без внешних зависимостей — это удобно!
Чтобы вывести HTML-отчёт и настроить сервер WebSocket для прослушивания порта 7890 и localhost:
# goaccess -f access.log -o report.html --real-time-html
Если GoAccess работает и анализирует журналы на конкретном хосте, вы можете указать URL, к которому будет подключаться браузер клиента.
# goaccess -f access.log -o report.html --real-time-html --ws-url=goaccess.io
Чтобы использовать другой порт, отличный от 7890, вы можете задать его следующим образом:
# goaccess -f access.log -o report.html --real-time-html --ws-url=goaccess.io --port=9870
И чтобы связать... WebSocket-сервер на другой адрес, кроме 0.0.0.0, вы можете указать его так:
# goaccess -f access.log -o report.html --real-time-html --ws-url=goaccess.io --addr=127.0.0.1
Работа с датами
Ещё одна полезная функция — фильтрация дат из веб-журнала.
Следующие команды получат все 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
Если мы хотим проанализировать только определённый временной интервал от DATE a до DATE b, мы можем сделать следующее:
# 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
Чтобы исключить список виртуальных хостов, вы можете сделать следующее:
# grep -v "`cat exclude_vhost_list_file`" vhost_access.log | goaccess
Файлы и коды состояния
Для анализа конкретных страниц, например просмотров страниц, html
, htm
, php
и т. д. в запросе:
# awk '$7~/\.html|\.htm|\.php/' access.log | goaccess
Обратите внимание, $7
— это поле запроса для общего и комбинированного формата журнала (без виртуального хоста), если ваш журнал включает виртуальный хост, то вы, вероятно, захотите использовать $8
вместо этого. Лучше всего проверить, какое поле вам нужно, например:
# tail -10 access.log | awk '{print $8}'
Или для анализа определённого кода состояния, например 500 (внутренняя ошибка сервера):
# awk '$9~/500/' access.log | goaccess
Также стоит отметить, что если мы хотим запустить GoAccess с более низким приоритетом, мы можем запустить его следующим образом:
# nice -n 19 goaccess -f access.log -a
А если вы не хотите устанавливать его на свой сервер, вы всё равно можете запустить его со своего локального компьютера:
# ssh root@server 'cat /var/log/apache2/access.log' | goaccess -a
Инкрементная обработка журналов
GoAccess может обрабатывать журналы инкрементно через базу данных B+Tree на диске. Это работает следующим образом:
--keep-db-files
, затем тот же набор данных можно загрузить с помощью --load-from-disk
.--keep-db-files
.--load-from-disk
без --keep-db-files
, файлы базы данных будут удалены после закрытия программы.Примеры:
// журнал доступа за последний месяц
# goaccess -f access.log.1 --keep-db-files
Затем загрузите его с помощью:
// добавьте этот месяц журнала доступа и сохраните новые данные
# goaccess -f access.log --load-from-disk --keep-db-files
Чтобы прочитать только сохранённые данные (без анализа новых данных):
# goaccess --load-from-disk --keep-db-files
Любая помощь в GoAccess приветствуется. Самый полезный способ — попробовать его и дать обратную связь. Не стесняйтесь использовать трекер проблем Github и запросы на вытягивание для обсуждения и отправки изменений кода.
Наслаждайтесь!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )