логотип PurpleSchool
логотип PurpleSchool

Автор

Введение

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

Основные подходы к логированию

Локальное и централизованное логирование

В микросервисной архитектуре можно выделить два уровня логирования:

  • Локальное — запись логов внутри контейнера или приложения. Пример на Python с использованием стандартного модуля logging:
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("payment_service")

logger.info("Сервис оплаты запущен")
logger.warning("Время ответа сервиса превышает порог")
logger.error("Ошибка при обработке транзакции")
  • Централизованное — сбор логов со всех микросервисов в единую систему для анализа и мониторинга. Для этого используют инструменты типа ELK Stack (Elasticsearch, Logstash, Kibana) или Prometheus + Grafana для метрик.

Форматирование и структурирование логов

Структурированные логи (JSON) упрощают фильтрацию и анализ данных. Пример на Python:

import logging
import json

class JsonFormatter(logging.Formatter):
    def format(self, record):
        log_record = {
            "level": record.levelname,
            "message": record.getMessage(),
            "service": "order_service"
        }
        return json.dumps(log_record)

handler = logging.StreamHandler()
handler.setFormatter(JsonFormatter())
logger = logging.getLogger("order_service")
logger.addHandler(handler)
logger.setLevel(logging.INFO)

logger.info("Заказ создан")

Структурированные логи позволяют централизованной системе легко индексировать и искать сообщения.

Для более глубокого понимания принципов микросервисной архитектуры и организации логирования, включая мониторинг и обработку событий в распределённых системах, полезно изучить курс Microservices. На курсе 94 урока и 5 упражнений, AI-тренажеры для практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.

Инструменты для логирования

  • Fluentd — сбор, агрегация и трансформация логов;
  • ELK Stack — визуализация, хранение и анализ логов;
  • Graylog — централизованная система логирования с фильтрацией и оповещениями;
  • Prometheus + Grafana — для метрик и мониторинга производительности микросервисов.

Примеры использования в Docker

При использовании контейнеров для микросервисов удобно направлять логи в стандартный вывод (stdout) и собирать их централизованно:

FROM python:3.11

WORKDIR /app
COPY . .

RUN pip install -r requirements.txt

CMD ["python", "payment_service.py"]

Все логи из контейнера можно собирать с помощью Docker logging driver, Fluentd или ELK.

Частые ошибки

  • Логи хранятся только локально и недоступны централизованно;
  • Неиспользование структурированных логов;
  • Избыточное логирование на уровне DEBUG в продакшене;
  • Отсутствие мониторинга и алертов по критическим ошибкам.

Частозадаваемые вопросы

Зачем нужны структурированные логи? Они упрощают поиск, фильтрацию и анализ в централизованных системах.

Как часто стоит очищать логи? Зависит от объёма и требований к хранению. В продакшене рекомендуется использовать ротацию и хранение за определённый период.

Заключение

Логирование в микросервисной архитектуре обеспечивает контроль за поведением системы и помогает быстро реагировать на ошибки. Использование централизованных и структурированных логов повышает эффективность мониторинга и диагностики.

Использование грамотного логирования ускоряет анализ проблем и улучшает управляемость микросервисов. Для закрепления навыков и изучения дополнительных возможностей микросервисной архитектуры рекомендуем курс Microservices. В первых 3 модулях курса доступно бесплатное содержание, что позволяет на практике настроить логирование, мониторинг и обработку событий в распределённых системах.

Стрелочка влевоМониторинг микросервисов и метрикиБезопасность микросервисов в продакшенеСтрелочка вправо

Постройте личный план изучения Microservices до уровня Middle — бесплатно!

Microservices — часть карты развития Backend

  • step100+ шагов развития
  • lessons30 бесплатных лекций
  • lessons300 бонусных рублей на счет

Бесплатные лекции

Все гайды по Microservices

Взаимодействие микросервисов в распределённых приложенияхСобытийно управляемые микросервисыRabbitMQ и микросервисыОркестрация микросервисов в продакшенеМикросервисы и API взаимодействиеХореография микросервисов — подход без оркестратораВзаимодействие микросервисов в распределённых системахKafka в микросервисной архитектуреИнтеграция микросервисов в сложных системахHTTP запросы внутри микросервисовgRPC микросервисы и высокопроизводительное взаимодействиеGateway микросервисы — маршрутизация запросов
Открыть базу знаний

Лучшие курсы по теме

изображение курса

Микросервисы

Антон Ларичев
Гарантия
Бонусы
иконка звёздочки рейтинга4.8
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

Nest.js с нуля

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.6
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

Docker и Ansible

Антон Ларичев
AI-тренажеры
Гарантия
Бонусы
иконка звёздочки рейтинга4.8
3 999 ₽ 6 990 ₽
Подробнее

Отправить комментарий