БонусБесплатный первый месяц абонентской поддержки при заказе разработки «под ключ»

Логирование и трассировка запросов в e-commerce

Логирование и сквозная трассировка запросов в e-commerce на 1С-Битрикс: correlation id, обмен 1С, оплата

Клиент звонит: «Я оплатил, а заказ не пришёл». Вы открываете админку — заказа нет. Оплата была? Обмен с 1С прошёл? На каком шаге всё сломалось? Если в системе нет нормального логирования, ответ на эти вопросы — часы раскопок и разговоров «а вот у меня всё работает». А если есть — минута поиска по идентификатору заказа, и вы точно видите, где именно оборвалась цепочка.

Логирование и трассировка запросов — это «чёрный ящик» интернет-магазина: то, что в момент инцидента отличает быстрый точный диагноз от беспомощного гадания. В этой статье разберём, как выстроить логирование в e-commerce на 1С-Битрикс: чем логи отличаются от трассировки, зачем нужен correlation id, что критично записывать в обмене с 1С и оплате и как не превратить логи в свалку. Диагностика проблем на стыке систем — часть аудита интеграций и e-commerce.

Коротко

  • Логи записывают отдельные события, трассировка связывает их в цепочку одного запроса.
  • Correlation id — сквозная метка, по которой собираются все логи одного заказа через сайт, 1С и оплату.
  • Критично логировать заказы, оплату, обмен с 1С и изменения цен и наличия — там чаще всего ломается.
  • Структурируйте логи, не пишите в них секреты и настройте централизованный сбор с ротацией.

Почему без логов e-commerce слепнет

Интернет-магазин — это не один сайт, а связка систем: витрина на 1С-Битрикс, учётная система 1С, платёжный шлюз, службы доставки, иногда внешние сервисы. Запрос пользователя проходит через несколько из них, и сбой может случиться на любом стыке. Без логов вы видите только результат — «заказ не пришёл», — но не путь, которым он к этому результату пришёл.

Цена этой слепоты — время и деньги. Каждый неразобранный инцидент — это раздражённый клиент, потерянный заказ и часы разработчика, потраченные на воспроизведение проблемы вместо её решения. Хорошее логирование переворачивает ситуацию: вместо «давайте попробуем повторить и посмотрим» вы говорите «вот лог этого заказа, сбой произошёл на шаге обмена в такой-то момент по такой-то причине». Это разница между реактивным тушением и управляемой эксплуатацией.

Логирование и трассировка: в чём разница

Эти два понятия часто путают, хотя они отвечают на разные вопросы и работают вместе:

АспектЛогированиеТрассировка
Что записываетОтдельные событияЦепочку событий одного запроса
ВопросЧто случилось в этой точкеКак запрос прошёл через систему
Пример«Ошибка обмена в 14:03»Путь заказа: клик → сайт → 1С → оплата
СилаДетали конкретного моментаВидит стык систем и где оборвалось

Логирование даёт глубину в точке: подробности конкретного события. Трассировка даёт связность: она сшивает разрозненные логи в единую историю одного запроса и показывает, на каком именно этапе цепочка сломалась. В e-commerce, где запрос ходит между сайтом, 1С и платёжкой, нужны оба: без логов трассировка пуста, без трассировки логи разрознены.

Инфраструктура магазина: окружения и мониторинг РазработкаstagingCI/CDсборка, деплойProductionбоевой серверМониторинглоги, алертыОтдельные окружения и мониторинг делают выкатку безопасной
Схема: код проходит через staging и CI/CD на боевой сервер, а мониторинг с логами и алертами сразу показывает проблемы. Разделение окружений делает релизы безопасными.

Correlation id как сквозная нить

Инструмент, который превращает разрозненные логи в трассировку, — correlation id. Это уникальная метка, присваиваемая запросу в самом начале (например, при оформлении заказа) и передаваемая дальше через все системы: сайт, обмен с 1С, платёжный шлюз, очереди. Все события, порождённые этим запросом, помечаются одним и тем же id.

Что это даёт на практике:

Без correlation id поиск причины сбоя в связке «сайт + 1С + оплата» превращается в сопоставление логов по времени и догадкам. С ним — в один запрос по id. Это, пожалуй, самое дешёвое и самое полезное вложение в наблюдаемость магазина.

Уровни логирования

Не все события одинаково важны, и писать всё подряд одним потоком — путь к нечитаемым логам. Стандартная шкала уровней помогает отделить сигнал от шума:

На боевом магазине обычно пишут от INFO и выше, а DEBUG включают точечно при разборе конкретной проблемы, чтобы не захламлять логи и не тормозить систему. Уровни позволяют быстро отфильтровать «покажи только ошибки» и не тонуть в информационном шуме, когда ищешь причину сбоя.

Что критично логировать в магазине

Логировать всё подряд не нужно и вредно — важно покрыть ключевые бизнес-точки, где чаще всего ломается и откуда идут претензии. Приоритетный список для e-commerce:

  1. Жизненный цикл заказа. Создание, изменение статуса, отмена — с составом и суммой.
  2. Оплата. Каждый шаг: запрос в платёжку, её ответ, смена статуса, ошибки и таймауты.
  3. Обмен с 1С. Выгрузка заказов, загрузка цен и остатков, ошибки сопоставления, результат.
  4. Изменения цен и наличия. Когда и откуда поменялись — чтобы разбирать «почему клиент увидел не ту цену».
  5. Авторизация и кабинет. Вход, действия с заказами, чувствительные операции.

Эти точки объединяет одно: их сбой напрямую бьёт по деньгам и по доверию клиента. Именно поэтому здесь нужна детальная и надёжная запись с correlation id, а не «авось разберёмся». Остальное можно логировать скромнее.

Обмен с 1С: самая частая точка сбоя

Обмен между сайтом и 1С (через CommerceML и штатные механизмы) — самое частое место, где что-то идёт не так, и одновременно самое непрозрачное без логов. Заказы не выгружаются, цены приходят не те, остатки расходятся, товары не сопоставляются — и всё это молча, если обмен не логируется.

Что важно фиксировать в обмене:

Хорошее логирование обмена превращает загадочные «у клиента не та цена» в конкретный лог с id товара и моментом изменения. Это основа надёжной интеграции, которую мы закладываем при переезде e-commerce на новую CMS и разбираем в связке с архитектурой обмена. Технические детали работы с данными на уровне ORM — в статье про D7 ORM в 1С-Битрикс.

Оплата и платёжные системы

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

Логировать нужно весь цикл оплаты:

При этом действует жёсткое правило безопасности: в логи нельзя писать полные номера карт, CVV и другие платёжные секреты — только маскированные данные и идентификаторы транзакций. Корректная и безопасная работа с платёжными коллбэками тесно связана с защитой интеграций, о чём мы писали в статье про REST, вебхуки и безопасность в Битрикс.

Структурированные логи и поиск

Лог, в котором события написаны свободным текстом, годится для маленького сайта, но не для e-commerce под нагрузкой. Когда логов гигабайты и они разбросаны по серверам, грепать текст бесполезно. Нужны структурированные логи — записи с чёткими полями, по которым можно искать.

Структурированная запись содержит поля, а не просто строку:

По таким полям можно мгновенно отфильтровать «все ошибки обмена за последний час» или «всё по заказу №12345». Это превращает разбор инцидента из археологических раскопок в точечный запрос. Структурированность — необходимое условие для централизованного сбора и анализа логов.

Логи и производительность

Логирование полезно не только для ошибок, но и для скорости. Если фиксировать время выполнения ключевых операций, логи становятся источником данных о том, где магазин «тормозит»:

Такие данные превращают оптимизацию из гадания в целенаправленную работу: вы видите не «сайт тормозит вообще», а «на шаге загрузки цен из обмена уходит столько-то, и это узкое место». Это фундамент системного ускорения каталога и e-commerce: сначала измерить логами, где медленно, потом целенаправленно чинить.

Безопасность и персональные данные

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

Правила безопасного логирования:

Хороший приём — писать в логи ссылки на данные, а не сами данные: id заказа вместо полного состава с адресом. Тогда для диагностики достаточно найти запись по id и, при необходимости, посмотреть детали в защищённой базе, а не хранить персональные данные россыпью в текстовых логах.

Хранение, ротация и сбор логов

Логи, которые бесконтрольно растут, однажды заполнят диск и положат сайт — это классический инцидент. Поэтому эксплуатация логов не менее важна, чем сама запись:

  1. Ротация. Логи разбиваются по времени/размеру, старые архивируются, чтобы файлы не росли бесконечно.
  2. Сроки хранения по типу. Оперативные логи диагностики — недели; важные бизнес-события (оплаты, заказы) — дольше, с учётом требований учёта.
  3. Централизованный сбор. Логи со всех серверов стекаются в отдельную систему — переживают перезапуск и доступны для поиска.
  4. Мониторинг и алерты. На критичные ошибки (упал обмен, посыпались платежи) настраиваются оповещения, чтобы узнавать раньше клиента.

Централизованный сбор особенно важен для магазинов на нескольких серверах: без него логи разбросаны и теряются при перезапуске. Инфраструктурная сторона этого вопроса — где и как хранить логи, как настроить сбор — тесно связана с организацией сервера, о чём мы писали в статье про хостинг и инфраструктуру BitrixVM.

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

Чек-лист логирования

  1. Correlation id внедрён. Сквозная метка проходит через сайт, обмен 1С и оплату.
  2. Уровни используются. INFO и выше на бою, DEBUG точечно; фильтрация по уровню работает.
  3. Ключевые точки покрыты. Заказы, оплата, обмен с 1С, цены и наличие логируются детально.
  4. Логи структурированы. Поля вместо свободного текста, поиск по id и компоненту возможен.
  5. Тайминги пишутся. Длительность ключевых операций фиксируется для анализа скорости.
  6. Секреты защищены. Пароли и платёжные данные не логируются, персональные — по минимуму.
  7. Ротация и хранение настроены. Логи не переполняют диск, сроки хранения заданы по типу.
  8. Централизованный сбор. Логи стекаются в отдельную систему и доступны для поиска.
  9. Алерты на критичное. Сбои обмена и оплаты порождают оповещения раньше жалоб клиентов.

Вывод

Логирование и трассировка запросов — это наблюдаемость магазина, то, что в момент инцидента отличает быстрый точный диагноз от беспомощного гадания. В e-commerce, где запрос ходит между сайтом, 1С и платёжной системой, без сквозной нити correlation id и структурированных логов любой сбой на стыке систем превращается в часы раскопок.

Выстройте логирование осознанно: пометьте запросы correlation id, разделите события по уровням, детально покройте самые ломкие точки — заказы, оплату и обмен с 1С, — структурируйте записи, защитите секреты и настройте централизованный сбор с ротацией и алертами. Тогда «я оплатил, а заказа нет» будет разбираться за минуту по идентификатору, а не за день по догадкам, а сами логи станут ещё и источником данных для ускорения магазина на 1С-Битрикс.

Частые вопросы

Чем логирование отличается от трассировки?

Логирование — это запись отдельных событий: «пришёл заказ», «ошибка обмена», «оплата отклонена». Трассировка (tracing) связывает эти события в цепочку одного запроса: от клика пользователя через сайт, обмен с 1С и платёжную систему до финального результата. Лог отвечает «что случилось в этой точке», трассировка — «как запрос прошёл через всю систему и где именно сломался». В e-commerce нужны оба.

Что такое correlation id и зачем он нужен?

Correlation id (идентификатор корреляции) — это уникальная метка, которая присваивается запросу в самом начале и передаётся через все системы: сайт, очереди, обмен с 1С, платёжный шлюз. По этому id можно собрать все логи, относящиеся к одному заказу или действию пользователя, даже если они разбросаны по разным сервисам и серверам. Без него поиск причины сбоя в распределённой системе превращается в гадание.

Какие уровни логирования использовать в магазине?

Стандартная шкала: DEBUG (подробности для отладки), INFO (нормальные события — заказ создан, обмен прошёл), WARNING (подозрительное, но не критичное — повторная попытка, медленный ответ), ERROR (ошибка, операция не выполнена) и CRITICAL (сбой, ломающий бизнес — не работает оплата или обмен). На бою обычно пишут от INFO и выше, а DEBUG включают точечно при разборе проблемы, чтобы не захламлять логи.

Нельзя ли просто писать всё в один лог-файл и грепать по нему?

Для маленького сайта — можно, но для e-commerce с обменом 1С, оплатами и нагрузкой это быстро перестаёт работать. Логи растут гигабайтами, разбросаны по серверам, а связать события одного заказа по времени невозможно. Нужна структура: единый формат записи, correlation id, централизованный сбор логов и возможность искать по полям, а не грепом по тексту. Иначе в момент инцидента вы будете искать иголку в стоге сена.

Что критично логировать в интернет-магазине на 1С-Битрикс?

Ключевые бизнес-точки: создание и изменение заказа, все шаги оплаты (запрос, ответ платёжной системы, статус), обмен с 1С (выгрузка заказов, загрузка цен и остатков, ошибки), изменения цен и наличия, авторизацию и действия в личном кабинете. Именно эти места чаще всего ломаются и именно по ним приходят претензии клиентов, поэтому там нужна детальная и надёжная запись.

Как логировать, не нарушая закон о персональных данных?

Не пишите в логи то, что не нужно для диагностики: полные номера карт, пароли, CVV, лишние персональные данные. Номер карты — только маскированный, пароли — никогда. Персональные данные (ФИО, телефон, адрес) логируйте по минимуму и с учётом требований по их защите и срокам хранения. Хороший приём — логировать идентификаторы (id заказа, id клиента), а сами данные держать в защищённой базе, а не в текстовых логах.

Как логи помогают с производительностью, а не только с ошибками?

Если логировать время выполнения ключевых операций (генерация страницы, запрос к базе, ответ обмена, вызов платёжной системы), логи становятся источником данных о «тормозах». По ним видно, какие запросы медленные, где узкое место, деградирует ли скорость под нагрузкой. Трассировка с таймингами по шагам показывает, на каком именно этапе теряются миллисекунды, — это основа для целенаправленной оптимизации, а не гадания.

Сколько хранить логи и нужно ли их куда-то отправлять?

Срок хранения зависит от типа: оперативные логи для диагностики — недели, важные бизнес-события (оплаты, заказы) — дольше, с учётом требований учёта. Для e-commerce полезен централизованный сбор логов в отдельную систему: тогда они переживают перезапуск серверов, доступны для поиска и не занимают место на боевых машинах. Ротация и архивирование обязательны — иначе логи однажды заполнят диск и положат сайт.

Поделиться:

Сбои на стыке сайта, 1С и оплаты?

Проведём аудит интеграций, выстроим логирование и сквозную трассировку запросов на 1С-Битрикс, чтобы инциденты диагностировались за минуты. Рассчитаем работу.

Аудит интеграций и e-commerce

Редакция B2Bsite

Команда B2Bsite. С 2014 года разрабатываем и сопровождаем e-commerce на 1С-Битрикс: интеграции, обмен с 1С, логирование, трассировка и диагностика сбоев для среднего и крупного бизнеса.

← Все статьи блога