Команда разработки GRI внедрила сквозное логирование для повышения наблюдаемости в архитектуре на базе Django-монолита и микросервисов. Система включает интеграции с Kafka, REST, SOAP и Celery, что ранее затрудняло отслеживание жизненного цикла событий при возникновении ошибок.
Для оптимизации сбора логов в ELK-стек команда перешла с модуля logging на библиотеку structlog. В процессе настройки возникли проблемы с отображением ошибок в Sentry: нарушилась группировка и форматирование JSON. Проблемы решили переопределением fingerprint для событий Sentry и точечной десериализацией данных.
Сквозное отслеживание реализовали через добавление уникального request_id в контекст потока с помощью structlog.contextvars. Для Celery-задач использовали сигнал task_prerun, который пробрасывает идентификатор между задачами, позволяя отследить всю цепочку действий пользователя в логах.
Для SOAP-интеграций через библиотеку zeep написали плагин, добавляющий ID в заголовки запросов. При работе с REST-запросами от попытки переопределения библиотеки requests отказались из-за утечек оперативной памяти и ошибок HTTPSConnectionPool, заменив её на метод ручного формирования заголовков с идентификатором.




