Использование 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
 
 модуль внешней обработки

 

Вывод

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

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

 

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

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

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

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

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

31720 руб.

27.03.2025    82908    56    42    

68

Мониторинг Системный администратор Программист 1С:Предприятие 8 Россия Платные (руб)

Обработка позволяет использовать подобные КОРП-функциональности механизмы контроля расхода памяти (сеансом на 1 вызов и рабочими процессами), реагируя завершением "тяжелых" вызовов, перезапуском рабочих процессов при чрезмерном потреблении этого важного ресурса.

3660 руб.

03.05.2023    7019    6    0    

7

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

Практический гайд по применению DevOps-практик в 1С-инфраструктуре: контейнеризация СУБД, инфраструктура как код, мониторинг с алертами, автоматические бэкапы. Разбираю подводные камни и делюсь готовыми конфигами. Для 1С-разработчиков, которые хотят автоматизировать рутину и приблизиться к продакшен-среде.

06.04.2026    9443    vladimir-89    10    

29

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

Интеграция SIEM с 1С помогает выстроить централизованный контроль безопасности и выявлять инциденты на уровне бизнес-системы – от несанкционированных действий до аномалий в работе пользователей. Разбираемся, как работают сбор, нормализация и корреляция событий, и какие сценарии стоит отслеживать в 1С в первую очередь. Объясняем, какие подходы к интеграции доступны и какие результаты можно получить на практике, а также как использование SIEM снижает риски утечек и повышает общий уровень защиты информационных ресурсов компании.

31.03.2026    736    user1244835    0    

1

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

Рассмотрим разнообразные подходы к мониторингу 1С. Организация мониторинга публикаций на IIS при помощи ELK. Мониторинг состояния базы при помощи zabbix и rac. Прямые запросы при помощи самописных скриптов из zabbix.

03.03.2026    1369    user1287977    0    

5

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

Объясняем, как связка Prometheus и Grafana помогает выстроить прозрачный и масштабируемый мониторинг: от первых шагов до продвинутых сценариев работы. Учимся собирать метрики, подключать экспортеры, настраивать Push-gateway, визуализировать данные и строить собственные дашборды. Разбираемся, как контролировать сотни и тысячи показателей, включая бизнес-метрики, и как настроить интеграцию Prometheus с 1С. Материал расширяет технический кругозор и демонстрирует, как поднять рабочий мониторинг за 15 минут.

02.03.2026    1973    ptica    1    

8

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

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

1 стартмани

29.01.2026    798    3    Triplexx    0    

2

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

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

23.01.2026    1122    ImHunter    5    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 762 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 26 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 1119 18.06.22 13:28 Сейчас в теме
Спасибо за статью.

Тоже используем у себя Sentry через пост-обработку ЖР.
В эскплуатации выявили особенность, что нужно формировать свой отпечаток(fingerprint), чтобы Sentry дополнительно не пытался группировать похожие ошибки (но по сути разные)
16. BlizD 1119 18.06.22 13:30 Сейчас в теме
(15)еще видимо, из за особенностей настройки нашего сервера, у нас ошибка в Sentry автоматически удаляется через 14 дней если по ней больше не приходило новых событий
17. BlizD 1119 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 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация