Когда логи сервера могут помочь сайту
Если на сайте что-то пошло не так, в логах можно найти причину и узнать детали происшествия. Расскажем, где искать информацию и как она может быть представлена.
В логах текстом фиксируется информация обо всех действиях пользователей и системы:
- IP-адрес пользователя;
- дата и время посещения сайта;
- ошибки сервера;
- данные о запросах к базам данных и конкретным страницам;
- информация об устройстве и многое другое.
Логи помогут узнать, что сайт атаковали боты или же у пользователей есть проблемы с загрузкой страниц.
Анализировать логи можно:
- Вручную. Бесплатно, но нужно больше времени и ресурсов веб-мастера, чтобы проанализировать массив данных.
- В программе-анализаторе. Сервис агрегирует и визуализирует все данные на дашборде. Его можно адаптировать — исходный код есть в Open Source. Базовый набор функций бесплатный, расширенный — уже платный. Пример сервиса — Elastic Stack.
В статье разберем три примера, когда помогут логи: если сайт атакует бот, ухудшилась производительность или есть ошибка в базе данных.
Атака ботов на сайт
Целенаправленную атаку на сайт можно распознать по нескольким признакам:
- повышенная нагрузка на сервер;
- рост количества запросов от одного пользователя;
- нетипичное поведение пользователей на сайте: хаотичное перемещение по блокам, слишком быстрый скролл разделов или зацикливание на второстепенных текстах.
Количество запросов к системе может достигать сотен тысяч. В результате сайт или отдельные страницы не работают. Чтобы найти признаки атаки, нужно проанализировать логи доступа, access.log. Они записываются в стандартном формате:
Как распознать атаку с помощью логов:
- Много запросов с одного IP-адреса. Адрес указан в начале каждой строки лога. После него — данные о времени запроса, сути, статус-коде ответа и его размере.
- Много ошибок 404 и 500. Статус-код 404 указывает на ненайденную страницу, а 500 — на внутреннюю ошибку сервера. Если количество ошибок растет, возможно, боты стремятся получить доступ к уязвимостям.
- Частота запросов. Признак атакующего бота — ежесекундное обращение к страницам.
Долгая загрузка страниц
Оптимальная скорость загрузки для разных типов сайтов отличается. Часто компании сами определяют KPI по скорости для своего сайта. По данным Deloitte, ускорение загрузки на 0,1 секунды позволяет увеличить конверсию пользователей на 8,4%. Для проверки обратитесь к данным о времени ответа сервера в access.log.
Для сервера Apache
Информацию о времени ответа нужно искать в логах combined:
%D — время обработки запроса в микросекундах. Посмотрим на примере:
Время ответа сервера составило 123 микросекунды.
Для сервера Nginx
Формат логов можно настроить с помощью директивы log_format в файле конфигурации nginx.conf. Параметр $request_time показывает время обработки запроса в секундах:
Вернемся к примеру. В этом случае лог покажет 0,123 секунды:
В некоторых конфигурациях серверов параметры могут быть отключены. Нужно настроить их так, чтобы получать информацию о времени ответа сервера.
Ошибки в работе баз данных
Когда пользователи хотят найти что-то в каталоге или настроить фильтры, страница не загружается и не выдает нужную информацию.
Искать проблему нужно в логах ошибок error.log. Посмотрим, как выглядят записи.
Стандартный формат:
- Ошибка соединения с базой данных. Она появляется из-за неправильного адреса, учетных данных или порта.
Ошибка выполнения SQL-запроса. Его не выполнить, потому что нет указанной базы данных.
Ошибки можно искать по ключевым словам с помощью grep. Например, error или database:
Чтобы быстро находить причины неполадок на сайте, регулярно проверяйте логи. Они кладезь информации о пользователях и действиях в системе. Уметь читать логи — важный скил для разработчиков и веб-администраторов.
С какими проблемами на сайте вы справлялись благодаря логам? Расскажите в комментариях.