5 апреля 2021

Блог

Как библиотеки логирования помогают нашим командам поддерживать продукты

Эффективная техподдержка – важная часть платформы True Engineering, на которой мы строим наши продукты. Мы уже рассказывали про наши критерии Production Ready, требования к обеспечению логирования в этом списке тоже есть. То есть перед поставкой на прод наши разработчики должны убедиться в возможности мониторить продукт и быстро определять источники проблем.

Чтобы у всех команд было одинаковое представление о требованиях к логированию, мы проанализировали наши продукты и разработали единый стандарт для каждого нашего продукта. Он устанавливает единые требования к логам:

  • Централизованное хранение в ELK или подобном стэке
  • Разделение ошибок на бизнесовые и исключительные ситуации
  • Содержание:
  1. Время события
  2. Привязка к пользователю
  3. Имя приложение
  4. Трейс
  5. Сервер, на котором события зафиксировано
  6. Тело сообщения
  7. Уровень логирования и имя логера
  • Фиксация времени выполнения запросов
  • и т.д. — всего 13 пунктов.

Часть этих требований – состав логов, требования к фиксированию и трассировке данных – не меняется от продукта к продукту. Этот «типичный конструктив» мы и вынесли в библиотеки, чтобы переиспользовать на других проектах.

Функциональные возможности наших библиотек логирования

В результате наши команды получили готовые инструменты, чтобы фиксировать следующие данные:

  1. Все действия пользователя внутри системы.
  2. Все процессы обмена данными между микросервисами и между микросервисами и сторонними системами.
  3. Все входящие запросы и всё, что уходит в ответ наружу.
  4. Время выполнения запросов пользователя на всех этапах

Пару недель назад мы внедрили ещё одно новшество – теперь наши библиотеки умеют скрывать в логах приватную информацию. Персональные данные, номера счетов, уникальные токены, платёжные суммы – всё это не нужно знать для мониторинга системы. Вся такая информация отображается журналах со значением «Value is hidden by log policy». В скором времени мы добавим расширенные условия маскинга – дадим командам возможность задавать формат, будь то некие cлова, звёздочки или что-то иное, что им будет более удобно использовать.

Мы уже проработали библиотеки логирования для .Net- и Java-проектов. В ближайших планах развивать версию для Python. А затем – встроить библиотеки в наш шаблон микросервиса.

Результат применения библиотек

  • Разработчики экономят время на запуск в продуктах стандартных инструментов в соответствии со стандартом Production Ready.
  • Техническая поддержка гарантированно имеет средства для разбора инцидентов, локализации части системы, где произошла ошибка – причём это происходит в автоматическом режиме.
  • На уровне компании мы получаем уверенность, что во всех решениях всё работает по нашему стандарту.
  • В дальнейшем логирование можно развивать методом надстройки над уже работающими функциями, что всегда проще, чем создавать с нуля.