Как настроить мониторинг API в HostTracker
Проверка API запрашивает эндпоинт так же, как это делает HTTP-проверка, а затем идет на шаг дальше: разбирает тело ответа как JSON, XML или обычный текст и проверяет конкретное значение внутри него, а не только код состояния. Используйте ее для эндпоинта REST или SOAP, чьи данные вы хотите проверять, - например, поле статуса, количество на складе или цену. Если нужно лишь подтвердить, что URL загружается и возвращает приемлемый статус, проще выбрать HTTP-проверку.
Основные настройки
Отдельного скриншота этого раздела для типа API нет, но он использует те же общие элементы управления, что и любой другой тип проверки. Мониторинг включен - главный переключатель вкл/выкл. Расписание по интервалу (от 1 минуты до 24 часов, ползунок или выпадающий список) либо конструктор Расписания по cron (каждые N минут/часов, ежедневно, еженедельно, ежемесячно, либо произвольное выражение, только на платном тарифе) управляет тем, как часто выполняется проверка. Таймаут - от 1 до 100 секунд; время разрешения DNS не учитывается. Теги - метки через запятую для группировки и фильтрации. Полный лог сохраняет каждый результат вместо группировки подряд идущих одинаковых, а Открытая статистика публикует статистику и лог задачи по публичной ссылке. В отличие от HTTP, у формы API нет переключателя DNSBL (DNSBL остается только у Http/Ping/Port); зато у нее есть те же карточки Истечение домена, Истечение сертификата и Web Risk, каждая работает раз в 12 часов - напоминания об истечении следуют вашим подпискам на Up ниже, плохой результат - подпискам Down/Repeat.
Настройка запроса
- HTTP Method - GET, HEAD, POST, PUT, DELETE или PATCH. GET (по умолчанию) нужен, чтобы прочитать и проанализировать тело ответа; HEAD получает только заголовки.
- Request body (только для POST/PUT/PATCH) - Raw body отправляет ровно то, что вы ввели (добавьте собственный заголовок Content-Type, чтобы описать json/xml/plaintext); POST parameters принимает по одной паре
KEY=VALUEна строку и отправляется как тело в формате form-urlencoded. - Redirect behavior - Immediate response оценивает первый ответ как есть; Follow redirects (по умолчанию) проходит всю цепочку, с ползунком Max redirects to follow (1-20); Redirect is error проваливает проверку при любом редиректе (недоступно в режиме ассертов).
- HTTP Headers - произвольные пары имя/значение, с подсказками для частых имен и значений заголовков API (Content-Type, Authorization, X-API-Key, префиксы Bearer/Basic и другие). Если оставить пустым, проба отправляет заголовки по умолчанию (User-Agent, Accept, Accept-Language, Referer).
- Request authentication - открывает поля имени пользователя/пароля для собственной аутентификации-вызова сервера по HTTP (Basic, Digest, NTLM, Kerberos, Negotiate). Для bearer-токена или API-ключа вместо этого добавьте заголовок Authorization выше.
- DNS Server Selection - DNS-серверы по умолчанию в локациях; Публичные DNS-серверы страны локации; либо DNS-серверы, заданные вручную (ваши собственные IP резолверов). Два последних варианта требуют платный тариф.
- Disable DNS cache - принудительно выполняет свежий DNS-запрос при каждой проверке вместо переиспользования кэша агента.
Проверка ответа
По умолчанию проверка проходит успешно, когда DNS разрешается, соединение и TLS-рукопожатие (для https) завершаются, сервер возвращает статус HTTP Ok, и ответ разбирается в выбранный ниже формат.
- Assertion mode - на скриншоте он выключен, с баннером, приглашающим включить его для правил по коду состояния, времени отклика, заголовкам или содержимому тела. API и HTTP - единственные два типа проверок с работающим редактором ассертов; полный язык правил смотрите в подробном разборе режима ассертов. Пока он выключен, вердикт определяют классические поля ниже.
- Ignore HTTP Errors - коды состояния, которые НЕ должны проваливать проверку, например
401, 403, 500; пусто означает, что ошибкой считается любой код 400+. - Error on these HTTP statuses - обратное: коды, которые должны проваливать проверку, даже если обычно этого не делают.
- Response format - как тело разбирается перед тем, как сработает селектор: JSON analysis (селектор JSONPath или свойства, показан выбранным на скриншоте), XML analysis (запрос XPath), либо String analysis (regex с захватом). GET необходим, чтобы прочитать тело.
- Selector - выбирает значение из разобранного ответа; оставьте пустым, чтобы значением служил весь ответ целиком.
- What to check - по умолчанию условие ниже оценивает само выбранное значение (Check the obtained value itself); переключите на Check the value change between checks либо на скорость изменения за секунду/минуту, чтобы вместо этого оценивать, насколько сдвинулось значение.
- Condition - сравнивает значение:
any (no validation)(по умолчанию, показано на скриншоте),equal to,not equal to,in set of,out of set,less than,less or equal,greater than,greater or equal,in range,out of range,absent in contentлибоjson null. Для каждого условия, кроме двух последних, нужно ввести сравниваемое значение под ним. - HTTP Policies - те же опциональные проверки заголовков/cookie/содержимого, что и у типа HTTP: Enforce HTTPS, заголовок HSTS, запрет понижения https до http, CSP, защита от кликджекинга, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, отсутствие раскрытия версии, проверки Cache-Control, заголовки ответа CORS, безопасность cookie и смешанное содержимое. Пресеты Baseline, Strict и API заменяют весь выбор целиком; нарушение завершает проверку как Down, как и любой другой сбой.
- TLS Handshake - четыре переключателя строгости (платный тариф): требовать валидную цепочку SSL-сертификата, требовать TLS 1.2 или выше, блокировать слабые шифры (128 бит и ниже), и проверять отзыв сертификата.
- Expected IPs validation - при каждой проверке подтверждает, что DNS разрешает ваш хост в один из указанных вами IP, ловя перехват или устаревшую запись, даже если какой-то сервер по-прежнему отвечает.
- Max response size - прекращает чтение тела после этого размера, так что парсер и селектор видят только скачанную часть. По умолчанию 1 МБ, максимум 10 МБ; 0 означает, что тело не читается вовсе.
Примечание к скриншотам выше: они сделаны на аккаунте, чей тариф не включает тип проверки API, поэтому поле выбора типа там показывало "not in your package". Это особенность тестового аккаунта, а не то, что увидите вы, - каждое поле и значение по умолчанию, описанные здесь, в остальном ровно то же, что показывает форма.
Подписки на оповещения
Общая для любого типа проверки. Down = эндпоинт провалил проверку, Up = он восстановился, Repeat = напоминания, пока он остается недоступен. Подписать все контакты на события Up/Down - ярлык; таблица дает управление по каждому контакту отдельно либо через переиспользуемые пресеты групп контактов. Задача без подписок на оповещения все равно выполняется и записывает результаты - просто никого никогда не уведомляет.
Подписки на отчеты
Периодические отчеты об аптайме, только по email. Выберите Daily, Weekly или Monthly для каждого контакта; Monthly также включает сводки Quarterly и Yearly. Переключатель подписки всех работает так же, как в разделе подписок на оповещения.
Локации мониторинга
- Выбор локации - ищите или просматривайте дерево регионов/стран и отмечайте локации, из которых проверять; в каждой строке показано число доступных агентов против выбранных. «Copy locations from another task» переиспользует набор существующей задачи.
- Стратегия перепроверки - при смене состояния (например, с Up на Down) несколько локаций перепроверяют его, прежде чем новое состояние будет принято, страхуя от ложного срабатывания из одного региона. Варианты: по умолчанию голосование большинством; заданное число локаций, подтверждающих Down (добавляет ползунок 1-7); без перепроверки; полное согласие всех локаций перепроверки; либо полное согласие для Down, большинство для Up.
- Если выбранные локации недоступны - Только выбранные локации (по умолчанию) ждет, вместо того чтобы рисковать ложным оповещением; Ближайшие локации использует ближайшую доступную локацию; Любая локация переключается на любую доступную по всему миру.
Разобранный пример
Мониторинг эндпоинта статуса JSON: проверка API, интервал 5 минут, таймаут 40 с, GET, Follow redirects (максимум 20). Response format - JSON analysis, Selector - $.status, What to check - "the obtained value itself", Condition - "equal to" со сравниваемым значением ok. Ignore HTTP Errors оставлено пустым. Локации мониторинга оставлены на All world со стратегией перепроверки по умолчанию. Email дежурной команды подписан на Down, Up и Repeat, а также на еженедельные отчеты.
Диагностика
- Проверка всегда проходит, хотя эндпоинт явно сломан - Condition по умолчанию установлен в
any (no validation), что оценивает только разбор и транспорт, а не само значение. Выберите настоящее условие и сравниваемое значение, как только узнаете, как выглядит здоровый ответ. - Selector ничего не возвращает - убедитесь, что Response format совпадает с тем, что реально возвращает эндпоинт (JSON, XML или обычный текст); селектор JSONPath против тела XML никогда не совпадет. Сначала оставьте Selector пустым, чтобы убедиться, что весь ответ доходит, затем сужайте.
- Числовое Condition (greater than, in range и т.д.) выдает ошибку - ему нужно, чтобы выбранное значение приводилось к числу. Селектор, указывающий на строку, либо расчет режима изменения без еще существующей предыдущей проверки, дают ему нечего сравнивать.
- Ушло в Down сразу после включения HTTP Policies (особенно Strict) - Strict ожидает заголовки, которые многие API не настраивают. Исправьте заголовки, понизьте до Baseline, либо сначала прогоните политики отдельной задачей.
- Селектор перестает находить значение на большом ответе - Max response size обрезает тело, так что ничего после точки обрезки не доходит ни до парсера, ни до селектора. Поднимите значение.
Связанные материалы
- Мониторинг и проверка API - страница продукта для этого типа проверки.
- Бесплатная мгновенная проверка HTTP/API - выполните разовую проверку без аккаунта.
- Правила проверки ответа в режиме ассертов - полный язык правил, лежащий в основе Response Validation.
- API HostTracker - автоматизируйте управление мониторами из собственного кода.
- Документация API v2 - полный справочник по API, используемому для построения интеграций.
- 429 Too Many Requests - статус, который API возвращает, когда вызывающий уперся в лимит частоты запросов, и что с этим делать.
- Все руководства по мониторингу - руководство по настройке для каждого другого типа проверки.