Введение
Логирование является ключевым элементом микросервисной архитектуры. Оно позволяет отслеживать поведение сервисов, диагностировать ошибки и анализировать производительность. При работе с распределёнными системами централизованное логирование становится критически важным. В этой статье мы разберемся, как правильно организовать логирование в микросервисах и какие инструменты использовать.
Основные подходы к логированию
Локальное и централизованное логирование
В микросервисной архитектуре можно выделить два уровня логирования:
- Локальное — запись логов внутри контейнера или приложения. Пример на 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
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Бесплатные лекции
Все гайды по Microservices
Лучшие курсы по теме

Микросервисы
Антон Ларичев
Nest.js с нуля
Антон Ларичев