Использование Sentry в контексте розничной сети

17.06.22

Администрирование - Мониторинг

В статье опишу свой опыт использования sentry.

Вводные

Розничная сеть 10+ магазинов, конфигурация Розница 2.3, доработки за счет расширений и дополнительных обработок.

Обычно обратную связь по ошибкам по рознице получают из заявок кассиров, что зачастую эмоционально и не структурированно. Часть ошибок "замалчивается", часть ошибок "терпится".

Код будет в конце статьи, сначала размышления о граблях, через которые прошел.

 

Вариант решения

Решил собрать информацию о происходящем по данным журнала регистрации (ЖР), отобрал по уровню "ошибка" и "предупреждение". В качестве инструмента агрегации и анализа выбрал Sentry https://sentry.io/welcome/, это не сборщик логов, а агрегатор ошибок, с упором на работу в клиентских приложениях к которому у разработчиков нет доступа. В обычном режиме при появлении ошибки сразу идет отправка сообщения в сервис. В контексте 1С централизовано обработать исключения проблематично, поэтому с определенной периодичностью выгружаю данные из журнала регистрации.

Базовая информация о Sentry описана в статьях:

Варианты работы с сервисом:

  • облачная версия, не бесплатном тарифе есть ограничение на количество событий в минуту, и общее ограничение на количество в месяц.
  • локальная версия, разворачивается с использованием Docker https://develop.sentry.dev/self-hosted/, пытаться собирать "руками" для первого захода не рекомендую, архитектура: https://develop.sentry.dev/architecture/.

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

После загрузки "в лоб":

  • Увидел что присутствуют "лишние" записи, например ошибки обмена РИБ (номер сообщения) - правка типового функционала, перевод в уровень "информация", состояние обмена проще мониторить через опрос состояния и сбора количества конфликтов.
  • Формат сообщений "кто в лес кто по дрова", дополнение на уровне выгрузки, изменение кода. Посмотрев поиском по "ЗаписьЖурналаРегистрации", добрым словом вспомнил //infostart.ru/public/671835/ и с пониманием что типовые до подобного уровня дорастут не скоро по необходимости делаю правки.

Агрегатор начинает быть полезен при соблюдении формата описания ошибки, пример когда программист свалил все в кучу (блок обмена с внешней системой):

 

 

Работать с таким вариантом неудобно, но чуть легче, чем руками перебирать ЖР на магазинах.

Из полезного получил распределение ошибок по магазинам, но для нормальной работы сервера нужно нормально подписать, выделил красным "обычное состояние" из которого непонятно где произошла ошибка. На проекте сделали за счет централизованной настройки DNS перенаправлением по поддоменам https://habr.com/ru/post/505064/.

 
 распределение по ПК

 

С типовыми ошибками чуть легче, видно при какой операции сломалось, но без группировки по причине, результат отсутствия разделения на функциональные слои, в одной процедуре и данные компонуем и проверяем и отправляем.

 
 скриншот

 

Правило писать в названии {ИмяМодуля}.{ИмяФункции} позволяет более точно группировать ошибки, но уровень "подфункций" так же нужен. На скриншоте ниже обе ошибки из за проблемы с DNS при подключении по FTP, но пока откроешь каждую не поймешь.

 
 ошибки обмена

 

Полезная информация о подходе к форматам логирования https://www.youtube.com/watch?v=DlLBH5QW9Ng.

 

Контекст ошибки

При разборе ошибок нужен контекст, формат сообщений https://develop.sentry.dev/sdk/event-payloads/

  • Параметры системы взял из "Новый СистемнаяИнформация".
  • При ошибках выполнения имеем стектрейс, коллеги его записывали в "Breadcrumbs Interface", что неверно, записал в "Stack Trace Interface".
  • Из "РасширенияКонфигурации.Получить()" получил список расширений, записал их в "modules".
  • Из стектрейса можно получить название расширения, его зафиксировал в extension и release, более корректно будет маршрутизировать ошибки каждого расширения в отдельный проект.
  • Если это не ошибка выполнения а просто запись в журнал, то дополняю комментарий названием расширения.
  • Если ошибка связана с HTTP запросом то дополняю комментарий описанием запроса, конвертируя его из формата КоннекторHTTP //infostart.ru/1c/articles/709325/

Дополнительно, к работе:

  • В Breadcrumbs по идее можно добавить порядок выполнения транзакции, как хранить его во время выполнения пока не придумал.
  • Возможно из "Детального описания ошибки" можно получить большее количество информации чем просто из "Описание ошибки"
  • В описание ошибки можно добавить значения ключевых переменных
  • формировать запись ЖР сразу с описанием контекста, тогда можно забирать данные и напраямую из файлов без потери качества.

 

Отправка данных

Точность ЖР до секунды, и в момент получения данных может добавляться запись. Поэтому делаю забор данных на секунду раньше и через пореквизитное сравнение получаю последнее отправленное сообщение.

Из админки адрес получаю в формате "https://{host}/api/{project}/security/?sentry_key={key}", преобразую его к формату отправки сообщений.

 

Код

 
 общий модуль хк_Sentry
 
 модуль внешней обработки

 

Вывод

Данным инструментом можно собрать ошибки и распределить их по тикетам, которые передать ответственному.

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

 

Благодарю за внимание.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Библиотека стандартных подсистем 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

29280 руб.

27.03.2025    71035    42    29    

56

Перенос данных 1C Мониторинг Программист 1С 8.3 1С:Документооборот 1С:ERP Управление предприятием 2 Россия Абонемент ($m)

Простое расширение конфигурации с регламентным заданием для мониторинга ошибок типового обмена с уведомлением на почту.

1 стартмани

29.01.2026    306    1    Triplexx    0    

2

Мониторинг Системный администратор Программист Бесплатно (free)

Описания проблем и решений при настройке мониторинга. Мои подготовительные мероприятия.

23.01.2026    497    ImHunter    5    

2

Технологический журнал Мониторинг Системный администратор Программист Бесплатно (free)

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

29.12.2025    6287    leongl    0    

18

HighLoad оптимизация Мониторинг Системный администратор Программист Бесплатно (free)

Делимся опытом поддержки баз 1С с более чем 6 000 одновременно работающих пользователей и рассказываем о ключевых подходах к контролю высоконагруженных систем. Рассмотрим реальные кейсы и дадим ответ на вопрос о том,: что точно надо контролировать. Сравним ElasticSearch и ClickHouse, дадим ссылки на статьи и репозитарии для быстрого старта, а также посмотрим на примеры рабочих столов для анализа логов технологического журнала в ElasticSearch.

19.12.2025    1813    Sergey.Noskov    2    

11

Администрирование СУБД Технологический журнал Мониторинг Системный администратор Программист Бесплатно (free)

Рассказываем, почему высоконагруженным бэкендам на 1С нужен регулярный мониторинг и что происходит, когда его нет: производительность и стабильность деградируют, а обращения пользователей копятся. Показываем, как построили легкую систему наблюдаемости для бэкендов корпоративных порталов. Она включает сбор метрик из технологического журнала, Apdex, журнала регистрации и динамики размеров таблиц с последующим анализом в связке ClickHouse и служебной информационной базы на 1С. Объясняем, какие отчеты и метрики быстрее всего помогают находить критичные проблемы производительности, и демонстрируем интерфейс расследования. Разбираем несколько кейсов оптимизации, найденных по итогам мониторинга, включая доработки функционала БСП «управление доступом» и «присоединенные файлы».

15.12.2025    3934    tystik    1    

8

Мониторинг Системный администратор 1С 8.3 Россия Бесплатно (free)

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

03.12.2025    9849    user798823    2    

4

Мониторинг Журнал регистрации Технологический журнал Системный администратор Программист Бесплатно (free)

Мониторинг в ландшафте 1С помогает не только вовремя выявлять проблемы и повышать SLA, но и укреплять информационную безопасность. Разбираем источники данных, ограничения штатных инструментов и современные практики мониторинга на базе Prometheus, ClickHouse и Grafana. А также рассказываем о коробочном решении «Оркестратор 1С-систем» и планах его развития.

29.10.2025    2119    Sibars    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1587 17.06.22 12:27 Сейчас в теме
(0) Спасибо, интересная статья.
мы также юзаем Sentry, очень удобно выполнять анализ.
2. artbear 1587 17.06.22 12:47 Сейчас в теме
(0) только мы не используем анализ ЖР, используем механизм авто-отправки событий в сервис регистрации ошибок, штатный от 1С.

правда, 1С-ники в релизах 8.3.21 сломали авто-отправку клиентских ошибок, ждем правки в 22, ошибка зарегистрирована.
- но и полезное в 21 релизе сделали - авто-отправка ошибок сразу с сервера, например, из регл.заданий

так что подход с пост-анализом ЖР уже не имеет особого смысла )
22. genayo 05.08.22 08:57 Сейчас в теме
(2) А что за типовой механизм, что-то не гуглится...
3. ardn 747 17.06.22 13:12 Сейчас в теме
Спасибо за идею, попробую у себя!
5. artbear 1587 17.06.22 13:18 Сейчас в теме
(3) по Sentry на сайте уже несколько полезных статей
4. malikov_pro 1355 17.06.22 13:18 Сейчас в теме
(2) "механизм авто-отправки событий" - посмотрю как состыковать, дополню статью, у меня больше рег задания по обмену с сервисами, подключение торгового оборудования, пользователь по сути ошибок не видит. Почта России как то отключала свой сервис, а у меня не было корректной обработки ошибок, было "весело" наблюдать за 10к ошибок и желание исправить ошибку в выходной резко появилось.
6. artbear 1587 17.06.22 13:19 Сейчас в теме
(4) у нас есть ошибка с 60К срабатываний, которая живет уже 2 года )
7. malikov_pro 1355 17.06.22 13:36 Сейчас в теме
(6) Добавляйте ли в поток ошибок бизнесовые ошибки (пользователь ввел данные которые от него не ожидались или не в нужном формате)? Пробовали связать с Git? на сколько понимаю нужна правка путей в трассировке для сопоставления с форматом выгрузки.
9. artbear 1587 17.06.22 13:40 Сейчас в теме
(7) -
1 Добавляйте ли в поток ошибок бизнесовые ошибки (пользователь ввел данные которые от него не ожидались или не в нужном формате)?


Расшифруй. у нас отправка через сервис, в этот момент все, что есть, это ошибка от 1С.
какие еще бизнес-данные можно добавить и откуда их взять в авто-режиме?

2 Пробовали связать с Git? на сколько понимаю нужна правка путей в трассировке для сопоставления с форматом выгрузки.

не пробовали. я даже не знал, что есть такая интеграция )
ее цель какая? какие плюсы можно получить от интеграцией с Гит?
8. malikov_pro 1355 17.06.22 13:37 Сейчас в теме
(3) Критично наличие сборки в виде расширения или хватит примера кода в статье?
10. malikov_pro 1355 17.06.22 13:56 Сейчас в теме
(9) "Расшифруй."
Например, у меня кассир 2 раза считывает одну и туже маркировку, что есть ошибка, фиксирую в ЖР, после собираю и передаю логисту и директору магазина на рассмотрение.
В дисконтной карте вводят телефон в неверном формате, аналогичные действия, цель собрать как часто возникает ошибка, при превышении порога думать о системном изменении.

"ее цель какая?" - https://docs.sentry.io/product/integrations/source-code-mgmt/github/
В случае проблем, когда файлы в трассировке стека совпадают с файлами, включенными в коммиты, отправленные в Sentry, вы увидите подозрительную коммит со ссылкой на сам коммит.
Сильно зависит от версионирования (при любом изменении в хранилище изменять версию продукта/расширения).
11. artbear 1587 17.06.22 14:11 Сейчас в теме
(10)
Например, у меня кассир 2 раза считывает одну и туже маркировку, что есть ошибка, фиксирую в ЖР, после собираю и передаю логисту и директору магазина на рассмотрение.
В дисконтной карте вводят телефон в неверном формате, аналогичные действия, цель собрать как часто возникает ошибка, при превышении порога думать о системном изменении.


т.е. это обычная ошибка в ЖР, только какое-то спец.событие, да?
а далее обычный пост-анализ ошибок человеком и передача ошибок бизнес-пользователям или команде разработки, если количество ошибок перестает выходить за рамки случайных или неважных ошибок?

или что-то более автоматизированное?
12. akR00b 25 17.06.22 14:31 Сейчас в теме
Спасибо! Интересно, однозначно +
13. malikov_pro 1355 17.06.22 18:04 Сейчас в теме
(11) Верно описали. Без доп. автоматизации.
Пока административно борюсь с ответственными, просто игнорируют наличие ошибок, которые могут решить.
14. papami 55 18.06.22 13:26 Сейчас в теме
Во времена "затишья" можно и нужно такими штуками позаниматься. Узнаешь много интересного.
Я пару лет назад начал тоже встраивать сбор метрик в то, что дописывал. Только у меня нет задачи частотности.
Например, для всяких обменов, которые работают по регламенту, интересует последний удачный проход, и последняя ошибка (дата время). Для каких-то вещей - последнее использование.
Все это в регистр сведений локально, и что-то важное можно себе отправить. Пилю "дашборд" на smart watch.
Согласен с тем, что пользователи не всё озвучивают)
15. BlizD 1116 18.06.22 13:28 Сейчас в теме
Спасибо за статью.

Тоже используем у себя Sentry через пост-обработку ЖР.
В эскплуатации выявили особенность, что нужно формировать свой отпечаток(fingerprint), чтобы Sentry дополнительно не пытался группировать похожие ошибки (но по сути разные)
16. BlizD 1116 18.06.22 13:30 Сейчас в теме
(15)еще видимо, из за особенностей настройки нашего сервера, у нас ошибка в Sentry автоматически удаляется через 14 дней если по ней больше не приходило новых событий
17. BlizD 1116 18.06.22 14:04 Сейчас в теме
18. malikov_pro 1355 18.06.22 23:31 Сейчас в теме
(16) из https://forum.sentry.io/t/automatic-deletion-of-issues/6664/2, при отсутствии событий удаляется тикет, при повторном событии после срока очистки получается новый тикет а не регресс текущего.

(15) "пытался группировать похожие ошибки (но по сути разные)" - здесь бы теории/контекста поболее что является одной или разными ошибками. В документации по этому поводу прилично информации, думаю переведу.
19. malikov_pro 1355 18.06.22 23:53 Сейчас в теме
(14) "Только у меня нет задачи частотности." - думаю сильно зависит от требований по отказоустойчивости и процессов разбора ошибок
"интересует последний удачный проход" - тогда вариант с привязкой по допустимому времени отказа https://infostart.ru/1c/articles/1258466/, из неудобств сервиса то что нельзя указать график работы (на ночь в магазинах ПК выключают), настройку через cron еще не пробовал. Если прилетел алерт, то идем смотреть в логи. А данный вариант вписывается доступность РМК, на клиентской части раз в 15 мин отправлять запрос, чтобы быть уверенным что клиент активен и у него есть доступ в инет.
Но для ошибок обмена этот вариант не подходит, выше писал про 10к+ ошибок, на выходные ПочтаРоссии ушла в обслуживание и моя подсистема начала "спамить" запросами, в пн "все норм", но в бан со стороны сервиса могли попасть легко.

Есть еще один блок, накопительные ошибки, пример конфликты данных при обмене РИБ, логировать каждый безсмысленно, но посмотреть динамику количества очень даже, пример: добавили внешнюю систему дисконтных карт архитектура которой генерит конфликты, оператор следит за "чистотой" и решает вопросы п документам, а ДК начинают захламлять. Буду поднимать prometeus и делать опросы узлов.
21. papami 55 19.06.22 11:59 Сейчас в теме
(19) универсального инструмента, думаю, нет. Порой функциональность избыточна под конкретные задачи. Я привык "шить под себя" костюм, а не покупать)
Но вот идея мониторить то, что уже работает, а не "написал - бросил" мне нравится.
20. malikov_pro 1355 19.06.22 06:35 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация