1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/songboy-goaccess

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 23 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 08:21 5d070bd

Установка GoAccess

  • autoreconf -fiv
  • ./configure --enable-geoip --enable-utf8
  • make

make install

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

Проще всего установить GoAccess на Linux с помощью предпочитаемого менеджера пакетов вашего дистрибутива Linux.

Обратите внимание, что не во всех дистрибутивах будет доступна последняя версия GoAccess.

Debian/Ubuntu

# apt-get install goaccess

Примечание: вероятно, это установит устаревшую версию GoAccess. Чтобы убедиться, что вы используете последнюю стабильную версию GoAccess, см. альтернативный вариант ниже.

Официальный репозиторий GoAccess для Debian и Ubuntu

$ 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

Примечание:

  • Для поддержки on-disk (Trusty+ или Wheezy+) выполните: sudo apt-get install goaccess-tcb
  • Пакеты .deb в официальном репозитории также доступны через https. Возможно, вам потребуется установить apt-transport-https.

Fedora

# yum install goaccess

Arch Linux

# pacman -S goaccess

Gentoo

# emerge net-analyzer/goaccess

OS X / Homebrew

# brew install goaccess

FreeBSD

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

OpenBSD

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

OpenIndiana

# pkg install goaccess

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

# pkgin install goaccess

Windows

GoAccess можно использовать в Windows через Cygwin.

Хранение данных

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

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

Хранилище в памяти обеспечивает лучшую производительность за счёт ограничения размера набора данных объёмом доступной физической памяти. По умолчанию GoAccess использует хеш-таблицы в памяти. Если ваш набор данных может поместиться в память, то это будет работать хорошо. У него очень хорошее использование памяти и довольно хорошая производительность.

Tokyo Cabinet On-Disk B+ Tree

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

Hash-база данных Tokyo Cabinet в памяти

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

Параметры командной строки / конфигурации

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

Параметр командной строки Описание
-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.

Вывод данных в режиме реального времени в HTML-отчётах

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 на диске. Это работает следующим образом:

  1. Набор данных должен быть сохранён сначала с помощью --keep-db-files, затем тот же набор данных можно загрузить с помощью --load-from-disk.
  2. Если новые данные передаются (через канал или через файл журнала), они будут добавлены к исходному набору данных.
  3. Чтобы сохранить данные навсегда, необходимо использовать --keep-db-files.
  4. Если используется --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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/songboy-goaccess.git
git@api.gitlife.ru:oschina-mirror/songboy-goaccess.git
oschina-mirror
songboy-goaccess
songboy-goaccess
master