Интеграция 1С и Sentry для мониторинга ошибок и расчета Apdex
Данная статья посвящена разработке интеграции 1С и Sentry, что позволяет сделать удобнее анализ ошибок. Также имеется возможность выгрузки замеров времени из 1С для расчета Apdex с целью анализа удовлетворенности пользователей скоростью работы информационной системы. В статье разобраны основные важные моменты при разработке представленной интеграции.
- Описание
- Подробнее
Описание
Введение
Появившаяся необходимость выгрузки ошибок из 1С в Sentry была обусловлена потребностью удобного мониторинга ошибок и пользовательского опыта вне 1С. Такая потребность возникла у одного крупного клиента нашей компании, для которого нужно было придумать решение. Сложилась следующая ситуация: в службу технической поддержки регулярно поступали обращения с жалобами на скорость работы 1С, а в силу отсутствия мониторинга пользовательского опыта расследование инцидентов было затруднено, также нельзя было отследить динамику улучшения/ухудшения работы системы. Для решения описанных проблем был выбран Sentry.
В вопросе реализации выгрузки ошибок статья не несет глобальной новизны (все статьи по данной тематике перечислены в списке источников), но представленное решение имеет свое исполнение. Схожая и полезная статья[1] на эту тему написана Владиславом Журавским, за что автору огромная благодарность. Помимо мониторинга ошибок, Sentry предоставляет возможность расчета такого показателя, как Apdex, суть которого будет описана далее. Было решено воспользоваться, в том числе, и данным функционалом Sentry, что уже более ново в контексте интеграции 1С и Sentry (во всяком случае, по данной теме сходу материалов найти не удалось).
Рассматриваемое решение может быть неидеальным, но оно работоспособно и дает определенный функционал. В статье подробно пояснены не все тонкости разработки решения, а только наиболее важные (по мнению автора).
Что такое Sentry
Sentry — инструмент для сбора и анализа ошибок. Есть возможность указания большого количества дополнительной информации для каждой ошибки: пользователь, окружение, клиент и сервер и многое другое. Процесс создания проекта в Sentry рассматриваться не будет, как и процесс получения DSN токена, эта информация есть в статье [1].

Рисунок 1. Пример списка ошибок и иных сообщений в Sentry
На рис.1 показан пример списка ошибок (и других сообщений) в Sentry. Видно, что есть возможность настраивания фильтров для отбора нужной информации. Также уже можно заметить некоторые плюсы от использования данного инструмента. Например, указано количество возникновения каждой ошибки и количество пользователей, у которых она когда-либо возникала.

Рисунок 2. Пример списка событий для расчета Apdex в Sentry
На данном рисунке проиллюстрирован список событий для расчета Apdex. APDEX (Application Performance Index) — это индекс производительности, который отражает, насколько пользователи удовлетворены скоростью работы информационной системы[2]. Есть возможность внутри каждого события увидеть список событий данного типа (с возможностью раскрыть информацию о конкретном событии), а также ознакомиться с графиками Apdex и длительности события в различные временные промежутки. Это продемонстрировано на рис. 3.
Рисунок 3. Пример списка событий конкретного вида для расчета Apdex в Sentry
На данном рисунке можно увидеть некоторую техническую информацию в разрезе процентного соотношения от общего количества таких событий. Например, окружение (прод, стейдж или тест), операционную систему и имя компьютера.
Рисунок 4. Пример данных конкретного события для расчета Apdex в Sentry
На рисунке выше продемонстрированы данные, полученные для конкретного события. Указаны даты начала и окончания события в Unix формате в стандарте UTC в миллисекундах, длительность в миллисекундах, пользователь, база, версии платформы и конфигурации и т.д. Т.к. в примере использованы данные для события открытия формы списка справочника сотрудников, то у пользователя (пользователя Sentry) есть подробная информация о том, когда и у кого была открыта упомянутая форма, как быстро открылось окно и другая полезная информация.
Реализация интеграции на стороне 1С
Как и для большинства доработок в 1С, было принято решение воспользоваться дополнительным расширением. Главным преимуществом применения доп. расширений при доработках в 1С является отсутствие необходимости снимать основную конфигурацию с поддержки. Кроме того расширение крайне просто установить в нужную базу или несколько баз. В расширение были добавлены некоторые объекты и есть несколько заимствованных из основной конфигурации.
Были добавлены 3 общих модуля: sentry_Синхронизация, sentry_RestApi, sentry_ОбщегоНазначенияСервер. Подсистема sentry_Интеграция. Роль sentry_ОсновнаяРоль для настройки прав доступа к расширению. Общая картинка для упомянутой подсистемы. Справочник НастройкиСинхронизацииСsentry для настройки интеграции. И 3 системных перечисления: sentry_РежимыРаботы, sentry_УровниЖурналаРегистрации, sentry_Окружение. Заимствованные объекты: справочник КлючевыеОперации и РС (регистр сведений) ЗамерыВремени.
Для справочника НастройкиСинхронизацииСsentry были добавлены следующие реквизиты:
- Сервер (Строка) — хранит адрес Sentry для обмена данными;
- Токен (Строка) — хранит токен Sentry для обмена данными;
- НомерПроекта (Строка) — хранит идентификатор проекта Sentry для обмена данными;
- ЗащищенноеСоединение (Булево) — признак защищенного соединения;
- Порт (Строка) — номер порта при обмене данными;
- ОбменЗапущен (Булево) — признак того, что обмен с Sentry запущен;
- ИдентификаторФоновогоЗадания (УникальныйИдентификатор) — идентификатор текущего выполняемого фонового задания для данной настройки интеграции;
- РежимРаботы (ПеречислениеСсылка.sentry_РежимыРаботы) — хранит режим работы для данной настройки. Доступны значения: ПолнаяВыгрузка, ВыгрузкаЗаПериод, ВыгружатьТолькоНовыеПослеЗапускаОбмена;
- НачалоПериодаЖурналРегистрации (Дата) — дата начала выгрузки данных об ошибках при режиме работы ВыгрузкаЗаПериод;
- ОкончаниеПериодаЖурналРегистрации (Дата) — дата окончания выгрузки данных об ошибках при режиме работы ВыгрузкаЗаПериод;
- ВыгружатьЖурналРегистрации (Булево) — признак того, необходимо выгружать ошибки;
- ВыгружатьЗамерыВремени (Булево) — признак того, необходимо выгружать замеры времени;
- НачалоПериодаЗамерыВремени (Дата) — дата начала выгрузки данных о замерах времени при режиме работы ВыгрузкаЗаПериод;
- ОкончаниеПериодаЗамерыВремени (Дата) — дата окончания выгрузки данных о замерах времени при режиме работы ВыгрузкаЗаПериод;
- Окружение (ПеречислениеСсылка.sentry_Окружение) — информация об окружении, доступные значения: Прод, Стейдж, Тест.
Дополнительно была добавлена табличная часть с единственным реквизитом УровеньЖурналаРегистрации (ПеречислениеСсылка.sentry_УровниЖурналаРегистрации) с возможными значениями: Ошибка, Предупреждение, Информация, Примечание. Табличная часть необходима для возможности указания пользователем типа информации выгружаемой из журнала регистрации.
Важный момент про Сервер, Токен и НомерПроекта будет раскрыт далее. Для данного справочника были созданы 3 формы: ФормаЭлемента, ФормаСписка, ФормаВыполнениеСинхронизации. На рис. 5 продемонстрирована форма элемента справочника.
Рисунок 5. Форма настройки в 1С интеграции с Sentry
Назначение полей формы можно понять из описания реквизитов выше. На форме присутствуют кнопки запуска и выключения обмена, а также кнопка проверки соединения с Sentry. Элементы формы отображаются в зависимости от необходимости их отображения. Эта логика отражена в модуле формы.

