GoAccess. Разбор логов web сервера

Автор: | 30 июня 2022

Писал парсер логов ошибок и наткнулся на замечательный проект — GoAccess. Попробовал обработать им несколько разных логов — и мне очень понравилось. Незаменимая штука, если Вы постоянно ведете работу над своим сайтом. Не буду расписывать всё что может этот разборщик — у них на сайте все описано и даже с картинками. Я лишь расскажу свой опыт обработки логов.

Итак, разбор будет проводиться на отдельной виртуальной машине (негоже этим утруждать рабочий веб сервер), разбирать буду лог за прошедшие сутки и за весь период наличия лог файлов (настраивается в logrotate сколько файлов у вас сохраняется).

Для копирования файлов с веб сервера на сервер мониторинга я использовал команду scp, примерная запись в кроне будет выглядеть так:

Так я скопирую лог прошедшего дня (у меня rotate логов настроен на 00:01) на сервер мониторинга, где буду его обрабатывать.

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

Таким образом в первый день недели скопируются все файлы по маске, и даже заархивированные в gz

Переходим к разбору логов.

Для начала нужно определиться со форматом лог файла и выбрать его при запуске GoAccess. Затем проверяем формат даты и времени. У меня логи nginx и для моего формата нужно добавить следующие три строки в файл конфиг GoAccess (/etc/goaccess/goaccess.conf):

Теперь напишем два скрипта для обработки логов и создания репортов в html файл. Вот такой скрипт для ежедневного лога:

Сначала создаем имя файла равное вчерашней дате в формате YYYYMMDD и затем разбираем лог в этот файл. Ну и затем удаляем этот лог файл.

Для еженедельного разбора скрипт получился таким:

Но нужно проверить наличие пакета zcat — который может прочитать логи в формате gz. В скрипте перебираем все имеющиеся в папке логи и обрабатываем их. После обработки — удаляем все файлы.

Добавляем эти два скрипта в крон на нужное время, один ежедневно, второй в первый день недели. На выходе получим красивый и информативный отчет.

Вот такой примерно отчет.

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

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

*