5 апреля 2021
Блог
Как библиотеки логирования помогают нашим командам поддерживать продукты
Эффективная техподдержка – важная часть платформы True Engineering, на которой мы строим наши продукты. Мы уже рассказывали про наши критерии Production Ready, требования к обеспечению логирования в этом списке тоже есть. То есть перед поставкой на прод наши разработчики должны убедиться в возможности мониторить продукт и быстро определять источники проблем.
Чтобы у всех команд было одинаковое представление о требованиях к логированию, мы проанализировали наши продукты и разработали единый стандарт для каждого нашего продукта. Он устанавливает единые требования к логам:
- Централизованное хранение в ELK или подобном стэке
- Разделение ошибок на бизнесовые и исключительные ситуации
- Содержание:
- Время события
- Привязка к пользователю
- Имя приложение
- Трейс
- Сервер, на котором события зафиксировано
- Тело сообщения
- Уровень логирования и имя логера
- Фиксация времени выполнения запросов
- и т.д. — всего 13 пунктов.
Часть этих требований – состав логов, требования к фиксированию и трассировке данных – не меняется от продукта к продукту. Этот «типичный конструктив» мы и вынесли в библиотеки, чтобы переиспользовать на других проектах.
Функциональные возможности наших библиотек логирования
В результате наши команды получили готовые инструменты, чтобы фиксировать следующие данные:
- Все действия пользователя внутри системы.
- Все процессы обмена данными между микросервисами и между микросервисами и сторонними системами.
- Все входящие запросы и всё, что уходит в ответ наружу.
- Время выполнения запросов пользователя на всех этапах
Пару недель назад мы внедрили ещё одно новшество – теперь наши библиотеки умеют скрывать в логах приватную информацию. Персональные данные, номера счетов, уникальные токены, платёжные суммы – всё это не нужно знать для мониторинга системы. Вся такая информация отображается журналах со значением «Value is hidden by log policy». В скором времени мы добавим расширенные условия маскинга – дадим командам возможность задавать формат, будь то некие cлова, звёздочки или что-то иное, что им будет более удобно использовать.
Мы уже проработали библиотеки логирования для .Net- и Java-проектов. В ближайших планах развивать версию для Python. А затем – встроить библиотеки в наш шаблон микросервиса.
Результат применения библиотек
- Разработчики экономят время на запуск в продуктах стандартных инструментов в соответствии со стандартом Production Ready.
- Техническая поддержка гарантированно имеет средства для разбора инцидентов, локализации части системы, где произошла ошибка – причём это происходит в автоматическом режиме.
- На уровне компании мы получаем уверенность, что во всех решениях всё работает по нашему стандарту.
- В дальнейшем логирование можно развивать методом надстройки над уже работающими функциями, что всегда проще, чем создавать с нуля.