Skip to main content

GoAccess — простой анализ логов веб-сервера

Очень часто администраторы и владельцы сайтов сталкиваются с вопросом анализа логов доступа к сайту. Некоторые хотят получить статистику просмотров страниц, сколько пользователей зашло с определенных стран и много подобной аналитики. Этот проблему может решить подключение аналитики от Google. Но что нам делать, если мы хотим статистику обращений к нашему REST API? Можно логировать все запросы в базу, настраивать системы мониторинга, а можно просто проанализировать логи веб-сервера. Что я в свою очередь и сделал.

Поскольку я в последнее время переключился больше на разработку веб приложений используя React, Redux, Laravel, Go, RoR, потребовалось в нескольких нагруженных проектах оптимизировать  как фронтовую часть приложения так и бэкенд. Для выявления узких мест мы использовали и профилирование, и мониторинг памяти, и журналирование. Со временем нам потребовалась легковесная система анализа логов веб-сервера, которая поможет обнаружить к каким эндпоинтам нашего API чаще всего обращается клиент и продумать дальнейшие оптимизации.

В процессе поиска я наткнулся на очень интересную утилиту — goaccess. Как оказалось, эта утилита есть почти во всех дистрибутивах linux (в Ubuntu точно есть). А использовать её проще просто, мы просто выполняем команду goaccess -a -f /var/log/nginx/access.log и всё, просматриваем прямо в консоли всю нужную информацию.

goaccess вывод в терминал

 

На этом можно было бы и закончить статью, но goaccess может нам формировать статическую страницу с отчетом, которую мы потом можем открыть в браузере и посмотреть.

 

Подготовка

  • Ubuntu (17.10)
  • goaccess
  • Nginx
  • access лог одного из виртуальных хостов

Установка GoAccess

Как я писал выше, эта утилита уже идет во многих дистрибутивах Linux, однако если у вас её нет, выполните команды:

Debian/Ubuntu

echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install goaccess

Fedora

yum install goaccess

Gentoo

emerge net-analyzer/goaccess

FreeBSD

pkg install sysutils/goaccess

 

Анализируем логи

Для вывода результата в терминал у нас уже есть команда:

goaccess -a -f /var/log/nginx/access.log

Чтобы сформировать страницу с результатом, вводим команду:

goaccess /var/log/nginx/access.log -o /var/www/html/index.html --log-format=COMBINED

Естественно пути к фалу лога и файлу для вывода указываем свои)
Таким образом мы можем получить приятный визуальный отчет прямо в браузере. Демонстрацию страницы с результатом можете посмотреть по ссылке.

Вы также можете поставить задание в кроне, чтобы логи автоматически анализировались, однако при таком подходе есть один нюанс. В зависимости от настроек ротации логов вы можете получать результат за определенный промежуток времени. У нас сейчас файл лога веб-сервера настроен на ротацию раз в 7 дней, таким образом мы можем видеть результат работы утилиты за этот промежуток времени. Обращайте на это внимание)

Как использовать планировщик задач я писал в одной из своих статтей.

 

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *