Не так давно мы натолкнулись на утилиту GoAccess, которая позволяет анализировать логи веб серверов и строить отчеты. Утилита написана на C и имеется почти во всех репозиториях дистрибутивов Linux. Адрес проекта.
В данной заметке не будет ничего революционного, лишь краткое HOWTO, большую часть из которого вы сможете найти в документации.
И так по порядку:
1. Установка
yum install goaccess
2. Настройка
В файле /etc/goaccess.conf раскомментируем строки для анализа логов nginx:
time-format %H:%M:%S
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
3. Анализ логов
Результат анализа может быть получен в двух режимах, в консольном(интерактивном), и в виде отчета. Программа поддерживает несколько видов отчетов, таких как html, json и csv
Самый простой случай запуска программы, для анализа текущего лога:
goaccess -a -f <log_file>
В этом случае мы получим анализ текущего лога в таком виде:
По параметрам можно перемещаться с помощью TAB.
А веб-отчет будет выглядеть так:
А теперь рассмотрим случай когда нам надо анализировать не весь лог, а только его определенную часть:
1. Анализ логов за последние 2 часа:
sed -n '/'$(date '+%H:%M:%S' -d '2 hours ago')'/, $ p' <log_file> | goaccess -a
2. Анализ за последние 2 дня:
sed -n '/'$(date '+%d/%b/%Y' -d '2 day ago')'/, $ p' <log_file> | goaccess -a
3. Анализ за определенную дату:
sed -n '/18\/Jan\/2016/,/19\/Jan\/2016/ p' <log_file> | goaccess -a
4. Получение html отчета:
goaccess -a -f <log_file> > report.html
Автор: системный администратор компании Magvai69
Комментарии (7)
omickron
23.01.2016 07:21+1Интересно, что он умеет генерировать html.
Следующий шаг — сделать к нему веб морду.
DigitalSmile
Спасибо за заметку! От себя добавлю, что программа умеет работать и со списком файлов, в том числе и сжатом. Т.е. генерировать репорты можно, например, по датам на которые разбивает логи logrotate.