Парсер логов GoAccess#
Сайт проекта: https://goaccess.io/
GoAccess это утилита командной строки, которая умеет парсить логи и рисовать на их основе графики и таблицы прямо в терминале с помощью ncurses, либо в HTML, причём даже в реалтайме.
Утилита может помочь в беглой оценке запросов к сайту, но не более. Если по
логам надо расследовать что-либо, то здесь лучше справятся grep
, awk
и прямые руки.
Установка банальная через пакетный менеджер, а на сайте проекта есть инструкции по другим способам инсталяции. Если коротко, то хватит:
apt-get install goaccess
Пример запуска веб-интерфейса:
goaccess --real-time-html -o /srv/http/nixhacks.net/public/ga.html /var/log/nginx/access.log
Здесь ga.html и содержит генерируемый отчёт. Для просмотра таблиц в терминале
убираем ключ -o
.
Для того, чтобы проанализировать все логи /var/log/nginx/access* можно выполнить команду:
for log in access*; do if [[ "${log##*\.}" == 'gz' ]]; then zcat $log; else cat $log; fi; done | goaccess -o /srv/http/nixhacks.net/public/ga.html
Поддерживаемые форматы логов перечислены в мануале: https://goaccess.io/man#options
Если формат лога кастомный, то потребуется написать для GoAccess конфигурационный файл с указанием правильного формата. Умельцы уже написали генератор конфига для логов Nginx. В моём случае потребовалось выполнить:
wget https://raw.githubusercontent.com/stockrt/nginx2goaccess/master/nginx2goaccess.sh
bash nginx2goaccess.sh '$remote_addr - $remote_user [$time_local] "$host" "$request" $status $body_bytes_sent $request_time "$http_referer" "$http_user_agent"'
Строку с форматом лога я скопировал прямо из /etc/nginx.conf. В ответ скрипт выплюнул в терминал строки для конфига GoAccess. Я записал их в ~/.goaccessrc.
~# cat .goaccessrc
time-format %T
date-format %d/%b/%Y
log_format %h - %^ [%d:%t %^] "%v" "%r" %s %b %T "%R" "%u"
После этого можно спокойно парсить.