Логирование API. Опыт разработки корпоративной информационной системы

03.08.26

Интеграция - WEB-интеграция

Хочу представить собственную разработку – расширение для логирования данных при использовании http-сервисов. Данный функционал был написан в процессе создания и внедрения корпоративной информационной системы компании, в которой я работаю. Но в том виде, в котором это расширение выложено здесь, его можно использовать с любой конфигурацией 1С.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Логирование API
.cfe 35,57Kb
0 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

История создания функционала

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

В структуру компании входят следующие подразделения:
    • Контакт-центр
    • Служба сервиса
    • Центр удаленного управления
    • Центр управления биллингом
    • Аналитический центр
    • Бухгалтерия
    • Отдел кадров

В каждом структурном подразделения необходимо было внедрить своё прикладное решение:
    • В контакт-центр – прикладное решение для приёма обращений клиентов, сервис "Личный кабинет клиента", единый сервис аутентификации пользователей НИКС.
    • В службе сервиса – прикладное решение для координации работы мастеров службы с мобильным приложением для них.
    • В центре управления биллингом – прикладное решение для ведения учета взаиморасчетов с клиентами.
    • В центре удаленного управления – прикладное решение для управления оборудованием, поддерживающим соответствующие функции.
    • В аналитическом центре – прикладное решение для построения аналитики на сводных данных по активам компании.
    • В бухгалтерии и отделе кадров – прикладное решения для ведения соответственно бухгалтерского и кадрового учета.

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

Реализацию решили делать посредством API.

Примеры передачи данных

1. Контакт-центр принимает заявку клиента и передает её в службу сервиса.

Служба сервиса возвращает контакт-центру ФИО исполнителя заявки.

Для передачи заявки исполнителю часть данных запрашивается в основной информационной базе (ИБ) компании – материнской базе.

Итого – 3 последовательных вызова api-методов (3 http-запроса).

2. Исполнитель запрашивает назначенные ему заявки.

При первичном запросе, или в случае, если время жизни переданного токена авторизации истекло, он – токен – проверяется запросом в единый сервис аутентификации пользователей НИКС.

Итого – 2 последовательных вызова api-методов (2 http-запроса). 

3. Исполнитель передает данные о выполнении заявки в службу сервиса.

При первичном запросе, или в случае, если время жизни переданного токена авторизации истекло, он – токен – проверяется запросом в единый сервис аутентификации пользователей НИКС.

Служба сервиса передает данные о выполнении заявки в контакт-центр

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

Итого – до 4-х последовательных вызовов api-методов (до 4 http-запроса).

Объем обрабатываемых данных

Компания работает в 21 регионе России.

Обслуживает ~ 3 млн. абонентов.

Служба сервиса ежедневно принимает ~ 2000-3000 клиентских заявок.

Плюс – до 5000-6000 тысяч служебных заявок (задач) ежедневно создаются в системе.

 

 

В результате – трафик данных, проходящих через информационную систему (ИС) службы сервиса составляет ~100-400 запросов в минуту.

 

 

Производительность

Среднее время обработки запросов из мобильного приложения ~ 1 секунда.

 

 

 

Трудности, которые возникали в процессе разработки и внедрения НИКС в целом можно разделить 2 категории:

1. Некорректная передача/прием данных

2. Ошибки, полностью останавливающие обмен

Первая была обусловлена тем, что разработка API всех информационных систем (модулей) НИКС велась одновременно, параллельно и в условиях дистанционного взаимодействия.

Пример.

Прикладное решение КЦ передает заявку в информационную базу службы сервиса вызовом соответствующего api-метода. В виде документа заявка не создается в ИБ службы сервиса. Для отлаживания api-метода необходимы данные http-запроса (заголовки, тело). Получить эти данные можно лишь обратившись к разработчику прикладного решения КЦ.

Основная же сложность исправления ошибок, полностью останавливавших обмен (ошибок, вызывавших аварии), состояла в поиске самой ошибки в цепочке вызовов api-методов.

Пример.

Мобильное приложение мастера передает данные о выполнении заявки в основную ИБ службы сервиса. Запрос на подтверждение валидности нового токена авторизации в сервис аутентификации не проходит. Мобильное приложение, не получив ответ об успешной обработке запроса, вновь его отправляет. В результате нарастания в прогрессии количества входящих запросов из мобильного приложения увеличивается количество сеансов ИБ службы сервиса – нагрузка увеличивается – скорость обработки запросов, параллельно поступающих из других модулей НИКС, снижается – система виснет.

Основная причина аварии – на стороне сервиса аутентификации (недоступность сервиса в целом, или ошибки в коде). Второстепенная причина – та, что аварию вызвала – на стороне мобильного приложения (отправка запросов в чрезмерно большом количестве). Второстепенную причину частично можно определить по консоли администрирования серверов 1С – частично! Определить же первопричину на стороне потерявшей работоспособность информационной системы службы сервиса невозможно вовсе. Платформа 1с не логирует результаты обмена данными по API.

Имея же логи API, появляется возможность:

- Проверять, какая информация была передана.

- Видеть ошибки: ошибки в конкретных запросах и сбои и цепочках запросов.

- Анализировать нагрузку на систему и её производительность.

- Проверяя по регламентному заданию имеющиеся логи, отслеживать возрастание нагрузки на систему и предотвращать аварии.

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

Расширение 1С:ЛогированиеAPI

Предусмотрена запись следующих данных:
    • Направление запроса – «Входящий» или «Исходящий».
    • Адрес – URL http-метода (без параметров URL).
    • Параметры URL – если они есть.
    • Процедура – обработчик запроса или процедура/функция, из которой исходящий запрос отправляется.
    • Заголовки запроса.
    • Тело запроса  – если оно есть.
    • Код ответа.
    • Тело ответа.
    • Время начала обработки входящего или время отправки исходящего запроса.
    • Время окончания обработки входящего запроса или время получения ответа на исходящий.
    • Время выполнения – разность времени начала и окончания.
    • Номер сеанса, в котором запрос был принят или выполнен.
    • Имя пользователя, под УЗ которого запрос был принят или выполнен.
    • Ошибка не обработанного или не выполненного запроса.
    • Комментарий – произвольный.

Данные можно записывать в регистр сведений и/или в журнал регистрации.

 

 

На основании данных, записанных в регистр сведений можно формировать отчеты в виде графиков о количестве запросов и о времени их выполнения.

 

 

 

Для выполнения исходящих http-запросов предусмотрена функция ОтправитьЗапрос, находящаяся в программном интерфейсе модуля ЛогAPI_ОбщегоНазначения. Запись лога запроса осуществляется внутри данной функции.

 

 

Логировать входящие http-запросов предполагается вызовом остальных функций программного интерфейса модуля ЛогAPI_ОбщегоНазначения.

В расширение добавлен http-сервис ЛогAPI_Logs, в обработчике единственного метода которого представлен пример последовательности вызовов этих функций.

 

 

Нежелательные последствия при записи логов API

1. Увеличение времени выполнения и обработки запросов. Сама запись лога тоже требует времени. Но в процессе эксплуатации данной системы логирования в рамках проекта разработки описанной выше корпоративной ИС критических значений данная издержка не достигала.

2. Если записывать логи в регистр сведений, размер базы данных будет ощутимо расти. Проблема решается в рамках плана обслуживания базы на SQL-сервере. Логи API достаточно быстро теряют свою актуальность. Соответственно, прямым SQL запросом можно удалять старые записи, оставляя таким образом регистр логов в приемлемом для системы размере.

Проверено на следующих конфигурациях и релизах:

  • 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.12.281

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

API HTTP-сервисы

См. также

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Расширение для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

24000 руб.

02.02.2021    23618    73    52    

44

WEB-интеграция Анализ продаж Системный администратор Программист Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    43783    76    45    

32

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

42700 руб.

03.08.2020    24945    38    26    

29

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17568 руб.

20.12.2024    6915    28    4    

30
Для отправки сообщения требуется регистрация/авторизация