Инструмент будет полезен внедренцам, разработчикам, ИТ-инженерам, аналитикам и администраторам информационных баз 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.
Следите за публикацией новых инструментов.
об инструменте «1С-Рарус»