Логирование

Что такое логирование: определение, основные принципы, примеры и практические советы. Изучайте продвинутом тестировании с подробными объяснениями для начинающих специалистов.

Логирование.

Логи — текстовый файл с информацией о действиях ПО или пользователей, который хранится на компьютере или сервере. Это хронология событий и их источников, ошибок и причин, по которым они произошли.

Логи позволяют ответить на вопросы, что происходило, когда и при каких обстоятельствах. Без логов сложно понять, из-за чего появляется ошибка, если она возникает периодически и только при определенных условиях. Чтобы облегчить локализацию ошибки, в логи записывается информация не только об ошибках, но и о причинах их возникновения.

Локализация дефекта.

Процесс, направленный на анализ проблемы, с целью максимально‑возможной детализации причины ее возникновения. Чем больше информации о проблеме — тем быстрее ее решит команда.

Сбор, хранение и анализ логов выполняется с помощью специальных инструментов, таких как: Kibana и Elasticsearch.

  • Администраторы ищут в файлах логирования причины сбоя сервиса.
  • Разработчики опираются на логи, чтобы локализовать и устранить ошибки приложения или веб-сайта.
  • Служба безопасности по логам, как по физическим уликам, определяет вид взлома, оценивает нанесенный ущерб и даже может идентифицировать взломщика.

Elasticsearch, Kibana и Logstash.

Являются частями стека Elastic, который представляет собой платформу для обработки, хранения и визуализации больших объемов данных в режиме реального времени. Вместе они образуют мощный инструментарий для обработки и анализа данных, особенно в контексте логов и поиска.

  • Elasticsearch — это распределенный поисковый и аналитический движок, основанный на Apache Lucene. Он предоставляет возможность хранения, поиска и анализа больших объемов данных в режиме реального времени. Elasticsearch используется для поиска и индексации структурированных и неструктурированных данных. Он может обрабатывать и анализировать данные из различных источников и предоставлять мощные возможности поиска и агрегации данных.
  • Kibana — это инструмент визуализации и анализа данных, который позволяет создавать интерактивные дашборды, графики и отчеты на основе данных, хранящихся в Elasticsearch. Kibana обеспечивает простой и интуитивно понятный интерфейс для исследования и визуализации данных. Он предлагает широкий спектр возможностей для создания красочных диаграмм, карт, метрик и фильтров, что позволяет получать ценные инсайты из данных.
  • Logstash — это инструмент обработки и агрегации данных, предназначенный для сбора, обработки и доставки данных в Elasticsearch или другие системы анализа данных. Он может принимать данные из различных источников, включая лог-файлы, базы данных, метрики приложений и другие, и выполнять различные операции по их обработке, преобразованию и фильтрации. Logstash позволяет структурировать данные и подготавливать их для индексации в Elasticsearch.

Уровни логирования.

В идеале логи пишутся во время работы всех IT-систем, однако если писать все подряд и «складывать в кучу», полезная информация превратится в хаос. Чтобы упростить поиск и чтение логов, их делят на уровни.

Основных четыре:

  • Debug — запись масштабных переходов состояний, например, обращение к базе данных, старт / пауза сервиса, успешная обработка записи и пр.
  • Warning — нештатная ситуация, потенциальная проблема, может быть странный формат запроса или некорректный параметр вызова.
  • Error — типичная ошибка.
  • Fatal — тотальный сбой работоспособности, когда нет доступа к базе данных или сети, сервису не хватает места на жестком диске.

Дополнительно файл логирования может расширяться записями еще двух уровней:

  • Trace — пошаговые записи процесса. Полезен, когда сложно локализовать ошибку.
  • Info — общая информация о работе службы или сервиса.

Работа с уровнями логирования регламентируется методическими документами и внутренними правилами организации. В них может определяться соответствие источника сообщения уровню логирования, значимость, порядок обработки каждого уровня и другие параметры.

Типы логов.

Для удобства обработки логов их делят на типы:

  • Системные, связанные с системными событиями.
  • Серверные, отвечающие за процесс обращения к серверу.
  • Почтовые, работающие с отправлениями.
  • Логи баз данных, которые отражают процессы обращения к базам данных.
  • Авторизационные и аутентификационные, которые отвечают за процесс входа, выхода из системы, восстановление доступа и пр.

У каждого типа логов свой журнал записи. Для проверки логов авторизации нужно идти в журнал доступов, чтобы проверить загрузку системы — в журнал dmesg, за данными о запросах пользователей — в access_log. Когда одни логи пишутся отдельно от других, проще диагностировать ситуацию и найти источник проблемы.

Для чего нужны логи.

Устранение неполадок.

По логам можно понять, когда и из-за чего в работе системы возник сбой. А когда станет понятна причина, устранить его будет легче.

Контроль работы.

Логи позволяют лучше отслеживать процессы, делать прогнозы на будущее и в целом контролировать работу сервера. По ним понятно, нормально ли работает система, что нужно доработать, какая у сайта посещаемость и так далее.

Проверка стабильности.

Даже если с системой все хорошо, рекомендуется периодически проверять ее логи. Так можно на ранних этапах найти уязвимость или недочет — еще до того, как он станет проблемой.

Выявление злоумышленников.

Вирус или взлом можно обнаружить по логам. Они фиксируют любые действия пользователей или программ в системе, поэтому по ним специалист может отследить подозрительную активность.

Маркетинг.

Логи — источник ценной информации для развития сайта. Они позволяют собрать статистику по посещаемости с «сырыми» техническими данными. Например, понять, откуда приходят пользователи, где они находятся и какими устройствами пользуются для визита.

Что может содержаться в логах.

В лог-файлах находится полный журнал событий, связанных с конкретным узлом. Там описываются время события, тип запроса, реакция сервера, код ответа, IP-адрес пользователя, количество переданной информации и многое другое. Если произошла ошибка, это будет помечено в логах отдельно.
Картинки в логах записаны как ссылки.