Блог

Название категории: Обзоры

Мониторинг REST API с помощью сервиса Кивил

Все о мониторинге REST API с помощью сервиса QiWeal

Заставка блога

Доброго времени суток, дорогие друзья!

Представляем Вашему вниманию продолжение цикла статей о мониторинге с помощью сервиса QiWeal (Кивил). Напомню, что данный цикл состоит из 3-х частей, а именно:

В текущей статье рассмотрим как с помощью сервиса Кивил можно производить мониторинг Вашего REST API. QiWeal не только следит за работоспособностью API, но и собирает детальную информацию о HTTP-сессии, что позволяет Вам проанализировать в комплексе работу Вашего веб-сервиса. В случае необходимости один из микросервисов QiWeal отправляет уведомление Вам на электронную почту и в Телеграмм чат (для этого нужно установить соединение с нашим Телеграмм ботом). Такая необходимость может возникнуть в случае: изменения HTTP-статуса, срабатывания ассерта, недоступности сервера и других факторов, о которых Вам будет полезно знать.

Если Вы перейдете по ссылке на страницу мониторинга API и нажмете кнопку "Добавить API", перед Вами откроется окошко, в котором необходимо выбрать HTTP-метод запроса, ввести URL, по необходимости добавить HTTP-заголовки запроса и выбрать вариант уведомлений.

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

На изображении ниже Вы можете увидеть информацию, которая отображается после добавления API.

Мониторинг и тестирование REST API с помощью Кивил

Давайте рассмотрим, что мы видим на изображении выше.

  • HTTP-статус — HTTP-статус ответа веб-сервера
  • Последняя ошибка — дата последней зафиксированной ошибки
  • Время работы — время работы данного сервиса за все время мониторинга (в процентах)
  • Размер ответа — общий размер полученных данных от веб-сервера
  • Время ответа — время затраченное на получение ответа от веб-сервера
  • Получение IP — время затраченное на преобразование доменного имени в IP-адрес
  • Соединение с сервером — время затраченное на установку соединения с веб-сервером
  • Задержка — задержка сети (Latency)
  • Логарифмический график HTTP-статуса — отображает информацию за последние два дня

По каждому API доступны для просмотра: тело ответа и заголовки HTTP-сессии. Если Вы уже читали наши статьи из этого цикла, то скорее всего ничего необычного Вы не встретите, кроме раздела ассертов, о чем далее и пойдет речь.

Зачастую API ответ может содержать в себе JSON/XML данные, а точнее объект(ы) или массив объектов. Система ассертов позволяет Вам проверять (валидировать) ответ Вашего API-сервиса, если он является JSON или XML сущностью. Давайте на примере посмотрим как это работает и рассмотрим систему ассертов детальнее. На изображении ниже Вы увидите как можно добавить ассерты.

Ассерты в мониторинге REST API от QiWeal

Как показано выше, нужно заполнить несколько полей. Первое поле — название аттрибута JSON/XML объекта, поиск которого будет произведен. Весь ответ от API-сервиса если он имеет тип содержимого JSON или XML выстраивается в структурный граф, что дает нам возможность быстрого поиска по ключу (на самом деле, все немного сложнее и система работает не только с объектами и уникальными аттрибутами, но и с массивами одинаковых объектов). В случае, если ключ найден, т.е. в ответе есть данный аттрибут, система отправит данную информацию на проверку соответствия с дальнейшими условиями, которые указываются в следующих 2-х полях при добавлении ассерта. Второе поле — условие, которое должно быть соблюдено найденным аттрибутом. Данное условие может быть: аттрибут должен быть пустым/непустым или идентичным введенной строке в 3-ем поле. Если возникает ошибка или несоответствие на любом из этапов — Вы получите уведомление на электронную почту и Телеграмм чат (если он настроен). В третьем поле может быть не только строка с которой нужно сравнивать тело аттрибута, там также можно указать регулярное выражение, об этом в следующем абзаце. После сохранения ассерта, ответ API-сервиса будет проверятся на указанные условия.

Регулярные выражения позволят Вам более профессионально использовать сервис для тестирования и мониторинга работы REST API или сервиса. Регулярные выражения — своего рода шаблон, шаблон строки, согласно которому Вы сможете проверять строки на совпадения или вхождения.

Например, если у Вас в ответе есть аттрибут <currency>USD</currency> и в зависимости от региона может быть разная валюта и совпадение просто со строкой "USD" может активировать триггер ошибки, например, если в ответе будет "EUR", хотя фактически этот ответ для Вас также корректен. Именно в таких случаях Вы можете использовать регулярные выражения и избежать лишних уведомлений по неправильным причинам. Чтобы правильно валидировать данный аттрибут "currency", в 3-ем поле нужно указать [A-Z]{3}. Из примера видно, что мы даем диапазон от A до Z и таких символов должно быть обязательно 3. После этого все, что не будет подходить под шаблон — будет считаться ошибкой и Вы будете получать уведомления, но USD или EUR уже не будут считаться ошибочным вариантом.

Если Вам нужно ограничить варианты для проверки, например, строка должна содержать только алфавит и цифры, Вы можете сделать это так: [A-Za-z0-9]. Квадратные скобки обозначают разрешение диапазона, а внутри скобок следуют разрешаемые диапазоны ввода. В случае, если необходимо указать все варианты кроме определенного, можно использовать отрицание ^, например, [^0-9]. В таком случае, все символы кроме указанных будут подходить под данное выражение.

Регулярные выражения — очень гибкий инструмент и не так прост как может показаться вначале. Давайте рассмотрим еще конструкции, которые мы можем задействовать:

. — точка обозначает абсолютно любой символ

\d — любая цифра [0-9]

\D — любой нецифровой символ [^0-9]

\s — любой символ разделителя [ \n\t\r\f]

\S — любой символ отличный от разделителя [^ \n\t\r\f]

\w — любая буква или цифра или нижнее подчеркивание [A-Za-z0-9_]

\W — любой знак отличный от \w

Спецсимволы определяющие количество совпадений:

+ — совпадение один и больше, например, .+ — должен быть обязательно один или больше любых символов

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

? — совпадение ноль или один раз, например, .? — может быть один любой символ или не быть вовсе

.{n} — должно быть n любых символов

.{n,} — должно быть n или более любых символов

.{n,m} — должно быть от n до m любых символов

Примеры:

Выражение -?\d+ будет искать число, у которого может быть знак минуса, а может и нет.

Выражение \w{3} будет искать 3 символа в диапазоне A-Za-z0-9_.

Выражение [A-Z]{1,3} будет искать от 1 до 3-х символов в диапазоне A-Z.

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

Вся информация, которая отображается в веб-интерфейсе доступна также посредством QiWeal API.

Вам может быть интересно

Подняться вверх