Логирование
Что такое логирование: определение, основные принципы, примеры и практические советы. Изучайте продвинутом тестировании с подробными объяснениями для начинающих специалистов.
Логирование.
Логи — текстовый файл с информацией о действиях ПО или пользователей, который хранится на компьютере или сервере. Это хронология событий и их источников, ошибок и причин, по которым они произошли.
Логи позволяют ответить на вопросы, что происходило, когда и при каких обстоятельствах. Без логов сложно понять, из-за чего появляется ошибка, если она возникает периодически и только при определенных условиях. Чтобы облегчить локализацию ошибки, в логи записывается информация не только об ошибках, но и о причинах их возникновения.
Локализация дефекта.
Процесс, направленный на анализ проблемы, с целью максимально‑возможной детализации причины ее возникновения. Чем больше информации о проблеме — тем быстрее ее решит команда.
Сбор, хранение и анализ логов выполняется с помощью специальных инструментов, таких как: 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-адрес пользователя, количество переданной информации и многое другое. Если произошла ошибка, это будет помечено в логах отдельно.
Картинки в логах записаны как ссылки.