Установка GoAccess в Unix/Linux для анализа/просмотра log в Apache и Nginx

Установка GoAccess в Unix/Linux для анализа/просмотра log в Apache и Nginx

GoAccess —  это очень крутой инструмент ( анализатор log-файлов) и интерактивный просмоторщик в режиме реального времени для Apache/Nginx и самое главно  — это что, он с открытым исходным кодом и который работает в командной строке. Он показывает ценные статистические HTTP данные для системных администраторов, которые требуют визуального отчета сервера на лету. GoAccess будет собирать данные с журнала и будет отображать их на консоле или Х терминале. Собранная информация или сгенерированный отчет будут отображаться для пользователя/сисадмином в визуальном/интерактивном окне.

Особенности

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

  • Общая информация, пропускная способность и т.д.
  • Время, необходимое для удовлетворения запроса (полезную для отслеживания страниц, которые замедляют работу Вашего сайта)
  • Топ посетители
  • Требуемые файлы
  • Подтвердили статические файлы, изображения, SWF, JS и т.д.
  • Источники URL-адреса
  • 404 или страница не найдена
  • Операционные системы
  • Браузеры и боты
  • Хосты, Обратный DNS, IP
  • Коды состояния HTTP
  • ……….

Почти все форматы log  

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

  • Общий формат журнала (КТМ) Apache в сочетании с форматом журнала (XLF / ELF) Apache W3C формат (IIS).
  • Amazon CloudFront.
  • Apache/Nginx виртуальные хосты.

Требование к GoAccess  

  1. Ncurses
  2. Glib2 (> = 2.0.0)
  3. GeoIP (необязательно)

Установка необходимых пакетов для GoAccess

Для  rpm’s ОС (для таких как CentOS/RedHat/Fedora):

Для начала подключаем репозиторий EPEL:

Как включить EPEL репозиторий на CentOS

После чего, выполняем команду:

# yum install ncurses-devel glib2-devel geoip

Для deb’s ОС (для таких как Debian/Ubuntu):

# apt-get install libncurses5-dev libglib2.0-dev *libgeoip-dev

Установка GoAccess в Unix/Linux

Приведу примеры установок для различных Unix и Linux ОС.

Устанавливаем на deb’s ОС:

# aptitude install 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

Устанавливаем на rpm’s ОС:

# 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

Компилируем с исходного кода:

Во-первых нужно скачать последнюю стабильную версию GoAccess.

# cd /usr/local/src/
# wget http://tar.goaccess.io/goaccess-1.0.2.tar.gz
# tar -xzvf goaccess-*

После чего переходим в распакованный каталог и выполняем сборку программы, если вы хотите можно разрешить сборку с geoip (но лучше прочитать README или INSTALL):

# ./configure --enable-geoip
# make && make install && make clean

Так же, можно использовать git:

$ cd /usr/local/src/ && git clone https://github.com/allinurl/goaccess.git && cd goaccess
$ autoreconf -fiv
$ ./configure --enable-geoip --enable-utf8
$ make && sudo make install

PS: Установите git если не установлен!

С установкой я закончил, перехожу к использованию данной утилиты.

Настройка GoAccess в Unix/Linux

Найдем конфиг с goaccess, воспользуюсь утилитой locate:

┌(captain@Macbook)─(✓)─(05:57 PM Wed Sep 07)
└─(~)─(18 files, 816b)─> locate goaccess| grep -E "conf"
/usr/local/Cellar/goaccess/1.0.2/etc/goaccess.conf
/usr/local/etc/goaccess.conf

┌(captain@Macbook)─(✓)─(05:57 PM Wed Sep 07)
└─(~)─(18 files, 816b)─>

У меня все настройки лежат в — /usr/local/etc/goaccess.conf открою его:

# vim /usr/local/etc/goaccess.conf

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

Использование GoAccess в Unix/Linux

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

Опции для goaccess в Unix/Linux

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

-a,—agent-list  — Включить список пользовательских агентов (user-agents) по хостам.
-c, —config-dialog — Выводит конфигурацию log/date  в окне.
-d, —with-output-resolver — Включить IP распознаватель на HTML.
-e, —exclude-ip=<IP> — Исключить однин или несколько IPv4/IPv6, включая диапазоны IP.
-f, —log-file=<filename> — Путь к входному лог-файлу.
-g, —std-geoip — Стандартная база данных GeoIP для меньшего использования памяти.
-h, —help — Показать команды ( показать помощь).
-H, —http-protocol=<yes|no> — Установка/снятие протокола HTTP запроса, если найден.
-i, —hl-header — Цвет выделения активной панели.
-M, —http-method=<yes|no> — Установка/снятие метода запроса HTTP, если найден.
-m, —with-mouse — Включить поддержку мыши на главной панели.
-o, —output=<file.[html|csv|json> — Выход репорта в HTML, JSON или CSV файл.
-p, —config-file=<filename> — Пользовательский файл конфигурации.
-q, —no-query-string — Удалить строку с запросом. Можно уменьшить использование MEM.
-r, —no-term-resolver — Отключение IP resolver на выходе терминала.
-s, —storage — Отображение текущего способа хранения. Т.е, B+ Tree, Hash.
-V, —version — Показать информацию о версии и выйти.
—444-as-404 — Рассматривать нестандартная код состояния 444, 404.
—4xx-to-unique-count — Добавить 4xx ошибки клиента к уникальным посетителям.
—addr=<addr> — Укажите IP-адрес для привязки к серверу.
—all-static-files — Включить статические файлы, которые содержат строку запроса.
—cache-lcnum=<number> — Максимальное количество конечных узлов для кэширования. [1024]
—cache-ncnum=<number> — Максимальное количество конечных узлов для кэширования. [512]
—color=<fg:bg[attrs, PANEL]> — Укажите пользовательские цвета.
—color-scheme=<1|2|3> — Schemes: 1 => Grey, 2 => Green, 3 => Monokai.
—compression=<zlib,bz2> — Каждая страница сжимается с ZLIB.
—date-format=<dateformat> — Укажите формат даты входа.
—date-spec=<date|hr> — Дата специфичности (дата по умолчанию).
—db-path=<path> — Путь к файлу базы данных. [/tmp/]
—dcf — Отображение пути файла конфигурации по умолчанию.
—debug-file=<path> — Передать все отладочные сообщения (debug) в указанный файл.
—double-decode — Расшифровать double-encoded значения.
—enable-panel=<PANEL> — Включить разбор и отображение данной панели.
—geoip-city-data=<path> — То же самое, используя —geoip-database.
—geoip-database=<path> — Путь к базе данных 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 — Игнорировать crawlers.
—ignore-panel=<PANEL> — Игнорирование синтаксического анализа и отображения данной панели.
—ignore-referer=<referer> — Игнорировать переходы из подсчитываемых. Подстановочные допускается.
—ignore-status=<CODE> — Игнорировать разбор данного кода (ов) статусов.
—invalid-requests=<filename> — Логировать (Log) недопустимые запросы в указанный файл.
—json-pretty-print — Формат JSON вывода с помощью вкладок и новой строки.
—keep-db-files — Упорно проанализировать данные на диск.
—load-from-disk — Загрузите ранее сохраненные данные с диска.
—log-format=»<logformat>» — Укажите log формат. Внутренние кавычки должны быть экранированы.
—max-items — Максимальное количество элементов для отображения на панели.
—no-color — Отключить цветной вывод.
—no-column-names — Не писать имена столбцов в сроках вывода.
—no-csv-summary — Отключить сводные метрики на выходе CSV.
—no-global-config — Не загружайте глобальный конфигурационный файл.
—no-progress — Отключение прогресса.
—no-tab-scroll — Отключение прокрутки панелей на TAB.
—origin=<url> — Убедитесь, что клиенты отправляют указанный заголовок на WS рукопожатия.
—port=<port> — Укажите порт для использования.
—real-os — Отображение реальных имен ОС. Т.е, Windows XP, Snow Leopard.
—real-time-html — Включить вывода HTML в режиме реального времени.
—sort-panel=PANEL,METRIC,ORDER — Сортировать панели на начальной загрузки. См страницу помощи (manpage) для метрики.
—static-file=<extension> — Добавить статическое расширение файла. т.д .: .mp3, чувствителен к регистру.
—time-format=<timeformat> — Укажите log-формат времени.
—tune-bnum=<number> — Количество элементов массива. [32749]
—tune-lmemb=<number> — Количество членов на каждой странице листа. [128]
—tune-nmemb=<number>  — Количество членов на каждой промежуточной страницы. [256]
—ws-url=<[scheme://]url[:port]>  — URL-адрес, на который отвечает WebSocket сервер.
—xmmap=<number>  — Установить размер (байты) для дополнительного отображенной памяти. [0]

Примеры использования goaccess в Unix/Linux

Простой и быстрый способ использовать:

# goaccess -f /var/log/httpd/access_log
log анализатор GoAccess для Apache и Nginx

log анализатор GoAccess для Apache и Nginx

Так же, можно еще поступить следующим образом и проанализировать вообще все логи которые имеются в папке (на сервере):

# zcat -f/var/log/nginx/linux-notes.org-access.log* | goaccess

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

# zcat -f/var/log/nginx/linux-notes.org-access.log* | goaccess > /var/www/html/mysite/output_stats.html

Или сохранить отчет в json:

# goaccess -f/var/log/nginx/linux-notes.org-access.log -a -o json > /home/my_stats.json

Так же, есть возможно сохранять в CSV:

# goaccess -f /var/log/nginx/linux-notes.org-access.log -a -o csv > stats.csv

Чтобы отфильтровать от установленной начальной даты, вы можете использовать структуру следующей команды. Она обеспечит разбор HTTP-запросов с 27 января 1990 года до конца содержимого log-файла:

# sed '/27\/Jan\/1990/,$ p' /var/log/nginx/linux-notes.org-access.log | goaccess -a

Можно выделить конкретную дату чтобы показать трафик только за указанный день:

# grep '27/Sep/1990' /var/log/nginx/linux-notes.org-access.log | goaccess -a

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

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

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

# sed -n '/13\/Feb\/1990/,/27\/May\/1990/ p' /var/log/nginx/linux-notes.org-access.log | goaccess -a

Исключить конкретный IP-адрес с помощью этой команды, заменив 66.66.66.66  на нужный:

# goaccess --exclude-ip=66.66.66.66 -f /var/log/nginx/linux-notes.org-access.log -a

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

# ssh your_user@your_server_or_ip 'cat /var/log/nginx/linux-notes.org-access.log' | goaccess -a

Тема «Установка GoAccess в Unix/Linux для анализа/просмотра log в Apache и Nginx» подошла к окончанию.

Добавить комментарий

Ваш адрес email не будет опубликован.

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