Goaccess — функциональный анализатор логов, который может работать с ними в реальном времени, визуализировать информацию и отдавать её в разных форматах. Доступен для установки на большинстве популярных дистрибутивов прямо из репозиториев.
Смотреть будем на CentOS 7, так что для установки подключим EPEL репозиторий и поставим goaccess оттуда.
# yum install epel-release # yum install goaccess
И после установки просто запускаем утилиту:
# goaccess ./data/logs/sysadmin.pm.access.log
Если конфиг goaccess ранее настроен не был, нам предложат указать формат логов, который нужно использовать при анализе и открытии. Если кастомный формат логов не настраивался на сервере, то скорее всего для просмотра достаточно будет выбрать NCSA Combined Log Format, либо Common Log Format (CLF). При необходимости, нажав здесь с, d или t, можно скорректировать формат лога для работы. Жмём Enter и если с форматом лога ошибок не возникло, утилита проанализирует лог и отобразит результаты.
В случае если была получена ошибка вида:
Format Errors - Verify your log/date/time format
Нужно скорректировать формат логов, либо выбрать другой, из предложенных.
Для продолжения работы имеет смысл заглянуть в конфигурационный файл /etc/goaccess.conf и заранее задать там формат времени, даты и лога:
... # The following time format works with any of the # Apache/NGINX's log formats below. # time-format %H:%M:%S ... # The following date format works with any of the # Apache/NGINX's log formats below. date-format %d/%b/%Y ... # NCSA Combined Log Format log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
Примеры работы Goaccess с логами.
Работаем с логом в реальном времени:
# tail -f ./data/logs/sysadmin.pm.access.log | goaccess -
Обрабатываем несколько логов одновременно:
# goaccess ./data/logs/sysadmin.pm.access.log ./data/logs/sysadmin.pm.access.log-20180115
Исключаем IP из анализа:
# goaccess ./data/logs/sysadmin.pm.access.log-20180116 -c -e 12.34.5.43 -e 2001:40d0:203:1200::2f10
Считаем статистику относительно определённых расширений файлов:
# awk '$7~/\.html|\.php/' ./data/logs/sysadmin.pm.access.log | goaccess -
Работаем со всеми заархивированными логами:
# zcat ./data/logs/access.log.*.gz | goaccess access.log -
Выводим данные в .html или .json форматах:
# goaccess ./data/logs/sysadmin.pm.access.log -a -o report.html # goaccess ./data/logs/sysadmin.pm.access.log -a -d -o report.json
Больше примеров можно найти в документации проекта.