Лог – текстовый файл, в который (автоматически) записываются данные о работе системы. Своего рода дневник, содержащий информацию обо всем важном. Однако рядовому пользователю он мало чего может сказать – для него это просто случайный набор случайных символов. Но у них, конечно, есть смысл, и специалисты должны уметь читать их, поскольку там содержится много всего важного и полезного.
Запись логов ведется посредством специального ПО, управляющего процессами на сервере.
Все популярные серверы имеют поддержку логов по-умолчанию. Читайте дальше, а мы расскажем, какими бывают логи, зачем именно их проверять, как читать и в каких случаях обращаться к ним бесполезно.
Содержание
- Классификация
- Зачем вообще нужны логи
- Когда логи бесполезны
- Где хранятся логи сервера и как их проверить
- Как читать логи
- Заключение
Классификация
В целом, логи бывают:
- Системными – наиболее важные. Собственно, связаны с системными событиями;
- Серверные – отвечают за процесс обращения к серверу;
- Почтовые – оперируют с отправлениями;
- Баз данных – отражают процессы обращения к массивам данных;
- Авторизационные – отвечают за процесс входа и выхода из системы, а также за восстановление доступа к ней.
Но в рамках статьи заостримся именно на серверных. Они делятся на:
- Error – информация об ошибках.
- Access – общая информация о запросах и ответах к серверу.
Сами по себе лог-файлы содержат подробную информацию о каждом запросе: IP-адрес устройства-инициатора, целевой URL-адрес запроса, точное время и дата обращения, HTTP-метод (GET, POST и др.), адрес предыдущей страницы и так называемый User-Agent – строку, идентифицирующую браузер и операционную систему.
Кстати, а еще у файлов логирования есть разные уровни «реагирования». Например то, что обозначено Debug, подразумевает под собой значимые события, Warning – потенциальные проблемы (некорректные запросы, как правило), Error – ошибки, Fatal – тоже ошибки, но уже критические (например, отсутствие доступа к сети). Есть еще и Trace с Info – значение у них примерно одинаковое, информируют о работе системы.
Зачем вообще нужны логи
Логи нужны для:
- Поиска и устранения неисправностей – собственно, это основная сфера применения. Если что-то идет не так, с их помощью можно понять, что произошло и почему.
- Безопасность – также могут использоваться для обнаружения подозрительной активности (с проведением последующего аудита). Например, в них можно найти многократные неудачные попытки входа или запросы с неизвестных IP-адресов, что несет потенциальные угрозы безопасности.
- Мониторинг производительности – тут логи дают представление о шаблонах трафика, пиковых временах использования и местах в системе, подверженных боттлнеку.
- Анализ поведения – особенно актуально для веб-сайтов и онлайн-платформ. Логи показывают, как пользователи взаимодействуют с платформой, что нажимают, и как долго (в среднем) остаются на сайте.
Помимо прочего, их анализ также позволяет определить наиболее часто посещаемые пользователями страницы, активность гуглботов, несуществующие страницы (если есть), редиректы (аналогично – если есть), критические коды состояния (те, что начинаются с 5 – 5xx).
Когда логи бесполезны
Логи не подойдут, например, для сбора данных о ключевых словах. Также с их помощью не получится отслеживать сессии – для этого вообще нужен JavaScript. Нельзя и отследить каких-то отдельных пользователей.
Вернее нет, сделать это можно, но потребует невероятных усилий и затрат.
Дальше – больше.
Логи не отслеживают ничего из того, что происходит после запроса. Так что пытаться их использовать в этом ключе аналогично бесполезно.
Наконец, они не подойдут для мониторинга конверсий и анализа географических данных. Теоретически это делать можно, но, опять же, того просто не стоит.
Где хранятся логи сервера и как их проверить
Логи хранятся на твердотельных накопителях – HDD или SSD – сервера. Чаще всего в корневой директории хостинга – в папке logs.
Но вообще местоположение зависит от операционной системы:
- Для Ubuntu или Debian это /var/log/syslog. Там же можно найти логи загрузки системы, Nginx, MySQL.
- Для CentOS или Fedora это /var/log/. Здесь вы найдете журналы ошибок, обращений, загрузки системы и другого программного обеспечения.
- Для Windows все проще – достаточно зайти через Панель управления в «Просмотр журналов и событий», а затем непосредственно в системные журналы. Не стоит путать с Windows Journal – это вообще отдельный компонент системы, который не имеет ничего общего с сегодняшним топиком. Приложение нужно, чтобы создавать заметки от руки.
В некоторых случаях для хранения используется отдельный файловый сервер. Но это скорее исключение из правила, чем само правило.
Кстати, также логи можно «вынуть» из панели хостинга, с FTP-сервера, или просто запросив у техподдержки хостинг-провайдера.
Как читать логи
Например, это можно сделать вручную. Но прочесать зачастую до сотен тысяч строк необработанных данных трудоемко и утомительно, – и это еще мягко сказано. В любом случае, логи хранятся в файлах с расширением .log.
Их можно открыть как обычные текстовые файлы и просмотреть содержимое.
Это самое *содержимое* будет выглядеть как массив данных, разделенных пробелами, дефисами и слэшами: каждая новая запись показывается с новой строчки.
Отметим, что в панели управления хостингом логи, напротив, представлены в удобном виде – в виде таблиц c колонками.
В любом случае, давайте разберем то, как посмотреть логи сервера и как их читать на примере. Возьмем за основу Access, о котором писали выше.
Итак, у нас есть нечто в духе:
123.123.123.123 — [01/Jan/2020:10:00:00 +0300] «GET /wp-includes/feed.php HTTP/1.0» 200 — «-» «Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36»
Разберем по порядку:
- 123.123.123.123 – IP-адрес;
- [01/Jan/2020:10:00:00 +0300] – точное время поступления запроса, включая часовой пояс (+0300);
- GET – метод запроса, используемый клиентом;
- wp-includes/feed.php – запрашиваемый ресурс на сервер;
- HTTP/1.0 – версия HTTP-протокола, используемая для взаимодействия между клиентом и сервером.
- 200 – код ответа (состояния), указывающий на результат обработки. Конкретно в этом случае он означает, что запрос был выполнен успешно, и искомая страница найдена (и отображена);
- Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 – User-agent строка с информацией о браузере и системе.
Как альтернативный вариант – воспользоваться специальными утилитами. Они работают по принципу парсинга, то есть разбирают файл на составляющие, и предоставляют его в удобоваримом для чтения виде: посредством отчетов, сопровождаемых графиками и диаграммами.
«Анализаторы» бывают разными: некоторые из них даже могут в интеграцию с сервисами для сбора статистики, что значительно упрощает последующий аудит(-ы). Если говорить о конкретных программах, то это, например, Excel.
Справедливости ради отметим, что он имеет скудный инструментарий, так что подойдет лишь для небольших объемов данных. Все, что выходит за пределы простых сортировок (например, поиска кодов), потребуют наличия макросов.
Остальные утилиты работают по примерно схожему принципу. Отличается лишь дополнительный функционал, который часто и вовсе избыточен, и просто идет как приятное дополнение.
Заключение
Анализ логов сервера открывает широкие возможности: он позволяет выявлять вредоносное ПО, диагностировать ошибки, существенно повышать безопасность инфраструктуры и проводить комплексный анализ сетевого трафика.
Поначалу может показаться сложным, но пренебрегать им точно не стоит. Со временем практика себя окупит.