image
Не так давно мы натолкнулись на утилиту 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>


В этом случае мы получим анализ текущего лога в таком виде:
image
По параметрам можно перемещаться с помощью TAB.

А веб-отчет будет выглядеть так:
image

А теперь рассмотрим случай когда нам надо анализировать не весь лог, а только его определенную часть:

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)


  1. DigitalSmile
    22.01.2016 11:38
    +3

    Спасибо за заметку! От себя добавлю, что программа умеет работать и со списком файлов, в том числе и сжатом. Т.е. генерировать репорты можно, например, по датам на которые разбивает логи logrotate.


  1. mvs
    22.01.2016 12:01

    Чем лучше-хуже logwatch?


    1. akhaustov
      22.01.2016 12:14

      Ничем не хуже. Не пробовали его просто.


  1. gto
    22.01.2016 23:08

    Век живи, век учись. Спасибо.


  1. omickron
    23.01.2016 07:21
    +1

    Интересно, что он умеет генерировать html.
    Следующий шаг — сделать к нему веб морду.


  1. bigov
    28.01.2016 04:09

    Спасибо за пост. Только в заголовке надо было указать "… ВЕБ-серверов...", потому что кроме веба как-бы существует еще масса других задач и логов.


    1. akhaustov
      28.01.2016 18:21

      Исправил.