Контроль HTTP-сервисов
Контроль HTTP-сервисов

Контроль HTTP-сервисов

21.03.2025
Характеристики
Категория:
Инструменты разработчика
Пользователи:
Разработчики, ИТ-инженеры, аналитики, администраторы
Конфигурация:
Не имеет значения
Версия платформы 1С:
8.3.18 и выше
Тип поставки:
Файл поставки конфигурации
Дата обновления:
21.03.2025
Лицензия:
Attribution‑ShareAlike 4.0 International (CC BY‑SA 4.0)
Репозиторий проекта:
github.com/rarus/safe-rest-api-1c
Название файла
sra.zip
Тип
ZIP
Размер
1.15 МБ

Инструмент будет полезен внедренцам, разработчикам, ИТ-инженерам, аналитикам и администраторам информационных баз 1С.

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

Предназначение инструмента

Инструмент «Контроль HTTP-запросов» обеспечивает:

  • логирование всех входящих HTTP-запросов;
  • выявление ошибок в работе сервисов;
  • оперативный мониторинг параметров работы сервисов;
  • статистический анализ HTTP-запросов;
  • обнаружение и предотвращение «гонки запросов»;
  • идемпотентность небезопасных HTTP-методов;
  • автоматическое разблокирование конфликтных запросов по различным параметрам, настраиваемым в пользовательском режиме.

При логировании механизм разбирает входящие HTTP-запросы на составляющие и записывает в журнал. Например, к таким составляющим относятся: URL, HTTP-метод, заголовки запроса, параметры из шаблона, из URL, из тела запроса. Ответ на HTTP-запрос логируется аналогичным образом. Кроме того, фиксируются различные метрики запроса: дата-время поступления запроса, размер тела и ответа, длительность обработки запроса алгоритмом бизнес-логики, код ответа, факт успешного окончания обработки запроса и прочие.

Таким образом, лог предоставляет информацию о параметрах запроса, времени поступления, длительности обработки и содержании ответа вызывающей стороне.

Инструмент обеспечивает построение отчетов, помогающих пользователю в удобной форме анализировать работу веб-сервисов.

Реализован функционал для обеспечения идемпотентности HTTP-методов веб-сервиса. Позволяет автоматически обнаруживать возникновение гонки запросов, блокировать конфликтные запросы и предотвращать негативные последствия их обработки. Предусмотрено автоматическое разблокирование конфликтных HTTP-запросов по различным параметрам, настраиваемым в пользовательском режиме.

Идемпотентность — способность выдавать тот же результат при повторном выполнении операции с ресурсом.

Гонка запросов (race condition) — общее название группы серьезных проблем, с которыми сталкиваются ИТ-специалисты при росте нагрузки на веб-сервис. Например, когда клиент вызывает сложный, нагружающий систему HTTP-метод и, не дождавшись за отведенное время ответа от сервера, повторяет его.

Инструмент распространяется в виде cf-файла поставки конфигурации для платформы «1С:Предприятие 8.3». Рабочая конфигурация может быть поставлена на поддержку от данной библиотеки. Рекомендуется использовать с версией платформы 8.3.18 и выше. Поддерживает работу в режиме тонкого, толстого и веб-клиента.

Комплект поставки:

  • основная конфигурация инструмента;
  • демоконфигурация с примером интеграции в простой HTTP-сервис;
  • инструкция с описанием порядка внедрения библиотеки.

Основные возможности

Инструмент предоставляет пользователям следующие возможности:

  • Управление работой HTTP-сервисов из пользовательского режима: можно включать и отключать любой сервис, настраивать параметры логирования, параметры обеспечения идемпотентности и параметры разблокирования конфликтных запросов.
  • Ведение журнала входящих HTTP-запросов в разрезе сервисов и ресурсов с замером длительности обработки каждого запроса.
  • Просмотр подробной информации о каждом входящем запросе и предоставленном ответе.
  • Автоматическое обнаружение и блокирование конфликтов при поступлении повторных HTTP-запросов.
  • Ведение журнала заблокированных запросов.
  • Автоматическое разблокирование конфликтных запросов по правилам, заданным в настройках сервиса.
  • Переход из заблокированного запроса к виновнику блокировки и наоборот. Возможность выполнить разблокирование конфликта вручную.
  • Автоматическое сокращение журналов входящих и заблокированных запросов в соответствии с настройкой, заданной отдельно для каждого сервиса.
  • Формирование аналитических отчетов.

Подробное описание настроек и возможностей инструмента приведено в справке к объектам подсистемы конфигурации.

Мониторинг веб-сервисов

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

Отчет «Оперативная сводка»

Отчет «Статистика за период» показывает в группировке по дням количество, длительность и размеры обработанных HTTP-методов.

Отчет «Статистика за период»

Журнал входящих HTTP-запросов

Подробные сведения о всех зарегистрированных HTTP-запросах и их аналитики доступны пользователю в регистре сведений «Журнал входящих HTTP-запросов». Журнал предоставляет ИТ-специалисту все необходимые функции для контроля и управления работой веб-сервисов.

Журнал входящих запросов

В форме записи журнала входящих запросов размещены команды, предоставляющие возможность перехода к основным сервисным функциям механизма и их настройкам:

  • Сервисы — открывает форму списка справочника «Сервисы».
  • Статистика — открывает форму отчета «Статистика входящих HTTP-запросов».
  • Обслуживание — открывает форму настройки регламентных заданий.
  • Журнал конфликтов — открывает регистр сведений «Журнал конфликтов HTTP-запросов».

Форма записи журнала выводит пользователю основные параметры HTTP-запроса, информацию о содержимом заголовков, тело запроса, а также некоторые метрики, которые вычисляются в режиме реального времени.

Форма записи журнала входящих запросов

Настройка сервисов

Настройка подсистемы начинается с регистрации в справочнике «Сервисы» всех интересующих HTTP-сервисов конфигурации. Для этого нужно добавить новый элемент справочника и выбрать в поле «Имя сервиса» один из сервисов, присутствующих в конфигурации. После этого установить параметры мониторинга и контроля.

Настройки, задаваемые в форме элемента справочника «Сервисы», применяются сразу ко всем методам указанного HTTP-сервиса. Индивидуальная настройка поведения конкретного метода сервиса производится уже в коде конфигурации (в функции обработчика конкретного метода).

Пример настройки обработчика метода входящего HTTP-запроса в коде конфигурации приведен в подсистеме «_Демо», в модуле HTTP-сервиса «test-api».

Пример кода с подключением метода запроса к механизму контроля

Обеспечение идемпотентности и контроль конфликтов запросов

Методика обеспечения идемпотентности и обнаружения блокировки конфликтных запросов основана на паттерне «The Idempotency-Key HTTP Header Field». В соответствии с данным паттерном, в заголовки первичного и повторных запросов по операции, клиенту необходимо добавить пару «ключ-значение», где ключ — имя заголовка «Idempotency-Key», а значение — уникальный идентификатор операции в формате UUIDv4. Например: Idempotency-Key: «8e03978e-40d5-43e8-bc93-6894a57f9324».

Рекомендуем ознакомиться с более подробным описанием специфики решаемых проблем и применяемой методикой в статье «От экспертов „1С‑Рарус“: Отказоустойчивость HTTP‑сервисов в 1С — безопасные HTTP‑методы и поддержка идемпотентности».

Информация о всех зафиксированных конфликтах накапливается в регистре сведений «Журнал конфликтов HTTP-запросов».

Форма списка регистра Журнал конфликтов запросов

Форма записи конфликтного запроса содержит информацию о заблокированном запросе, позволяет разблокировать его вручную или перейти к записи заблокированного запроса в журнале входящего запроса.

Форма записи журнала конфликтов запросов

Ограничения

В текущей версии инструмента идемпотентность и механизм кэширования поддерживается только для HTTP-запросов с типом контента «Content-Type» = application/json, text/html, text/plain.

Условия использования инструментов «1С‑Рарус»

Команда разработки «1С‑Рарус» приглашает к обсуждению инструментов и пожеланий к их развитию на форум «1С‑Рарус». Все желающие могут принять участие в развитии и сопровождении инструментов: github.com/rarus/dataeditor/blob/main/CONTRIBUTING.md.

Следите за публикацией новых инструментов.

Название файла
sra.zip
Тип
ZIP
Размер
1.15 МБ

Автор статьи

Вы читаете материал
об инструменте «1С-Рарус»