REST и GraphQL
Любой метод, собственные заголовки, тело и аутентификация - и правила для возвращаемого JSON.
Мониторинг API
Инструмент мониторинга API от HostTracker проверяет аптайм, время отклика и содержимое ваших эндпоинтов из 300+ локаций по правилам, которые вы формулируете простым языком - код ответа, поле JSON, время отклика, - и оповещает вас в момент, когда запрос перестаёт им соответствовать.
Как проходит одна проверка API
Правила читают ответ и сравнивают. Вместе эти четыре охватывают важные уровни.
api.example.com/v1/orders · 4 правила · успешно
status isOk header("Content-Type") contains "json" body.json.path("$.count") gt 0 time lt 5s
Структурированные запросы к JSON, XML, HTML или YAML; цепочка перенаправлений по шагам; согласованный протокол TLS и шифр.
Сравнение этой проверки с предыдущей: счётчик, который никогда не уменьшается, хеш тела, который не должен меняться.
JSONPath, XPath или регулярное выражение выбирает значение; равенство, диапазон, принадлежность к списку или null принимают решение.
ПодробнееЗапрос сформирован так, как ожидает конечная точка, правила - о том, что приходит в ответ.
Любой метод, собственные заголовки, тело и аутентификация - и правила для возвращаемого JSON.
Разбирайте тело как XML и выбирайте значения с помощью XPath. Конверт - это просто ещё один ответ.
Отправляйте данные по расписанию и проверяйте подтверждение, чтобы молчащий приёмник был обнаружен раньше, чем это заметит партнёр.
HostTracker проверяет ваши API-эндпоинты по расписанию, контролируя код ответа, тип содержимого и значения внутри ответа - а не только то, отвечает ли сервер.
Мониторинг API - это по-настоящему важно. Он помогает следить за производительностью, доступностью и корректностью работы эндпоинтов, а также убеждаться, что они соответствуют стандартам производительности, что позволяет избежать потенциальных проблем
Мониторинг аптайма - это регулярная проверка API-эндпоинта, чтобы убедиться, что он доступен и работает исправно. Мониторинг производительности измеряет, насколько быстро и надёжно API отвечает на запросы.
От того, насколько хорошо работают API, во многом зависит впечатление пользователей от приложений, их общая работоспособность и даже финансовые показатели бизнеса.
Значение, извлечённое правилом, сохраняется при каждой проверке и отображается рядом со временем и скоростью ответа.
body.json.path("$.count") превращается в ряд данных. Падение до нуля видно ещё до того, как станет оповещением.
Время соединения, TLS, заголовков и данных при каждой проверке, из каждой выбранной локации.
Сайты, серверы, API, сертификаты. Один тип проверки на страницу, за всеми - те же локации, оповещения и отчёты.
"Я давно пользуюсь этим сервисом мониторинга, и моя повседневная рутина перестала быть проблемой. Он тихо следит за всеми моими сайтами и позволяет мне реагировать в тот момент, когда что-то идёт не так."
Нам доверяют команды из
Каждая глава открывается на месте, поэтому страница остаётся короткой.
Мониторинг REST API внешне похож на мониторинг аптайма, но по сути это другая задача. API потребляется кодом, а не людьми, и код беспощаден там, где браузер снисходителен. Реальный посетитель мирится со страницей, которая отрисовалась чуть неправильно; интеграция, получившая поле неверного типа, просто ломается. Поэтому мониторинг API должен проверять больше уровней, чем «ответил ли сервер», и HostTracker проверяет их по порядку, останавливаясь на первом же уровне, который не выдержал.
| Уровень | Что проверяется | Какой сбой это выявляет |
|---|---|---|
| 1 · Доступность | DNS разрешается, TCP-соединение открывается, TLS-рукопожатие завершается | Эндпоинт пропал, сертификат истёк, хост недостижим из части мира |
| 2 · Статус | Код состояния HTTP, сверенный со списком принимаемых или явно трактуемых как ошибка кодов | 500 после развёртывания, 401 из-за истёкшего учётного данного, неожиданный 429 |
| 3 · Тайминг | Общее время ответа и его разбивка на подключение, TLS, заголовки и тело | Эндпоинт, который по-прежнему работает, но незаметно перешёл с 200 мс на четыре секунды |
| 4 · Форма | Тип содержимого и заголовки - действительно ли это JSON, или это HTML-страница с ошибкой, притворяющаяся 200 | Страница ошибки или редирект на логин там, где должен быть payload. Классический незаметный сбой API |
| 5 · Содержимое | Значение, выбранное из payload, или произвольные проверки по всему ответу | Поле, пропавшее после изменения схемы, пустой набор результатов, откатившаяся строка версии, поле ошибки, появившееся внутри успешного ответа |
Уровни один-три - это то, что даёт обычная проверка аптайма. Четыре и пять - это то, что делает проверку именно мониторингом API, и именно на этих уровнях живёт большинство реальных инцидентов API.
Прежде чем что-либо можно будет проверить, монитору нужно выполнить именно тот запрос, который ожидает ваш API. На API-мониторе доступна полная поверхность запроса:
| Настройка | Что с ней можно сделать |
|---|---|
| HTTP-метод | GET, HEAD, POST, PUT, PATCH или DELETE |
| Пользовательские заголовки | Любые пары имя-значение, которые нужны, - bearer-токен, API-ключ, идентификатор арендатора, заголовок версии Accept. Заголовки пересылаются только на тот же хост при редиректе, поэтому учётные данные никогда не утекут третьей стороне, на которую перенаправляет ваш эндпоинт. |
| Тело запроса | Сырое тело для POST, PUT и PATCH, либо параметры в формате form-encoded |
| HTTP-аутентификация | Имя пользователя и пароль, со схемой, которую запрашивает сервер, согласованной на уровне соединения |
| Редиректы | Следовать им или нет, ограничить их число, или трактовать любой редирект как сбой - полезно для эндпоинта, который обязан отвечать напрямую |
| Тайм-аут | До 100 секунд, по умолчанию 40 - и тайм-аут считается сбоем проверки, что именно и нужно от эндпоинта с SLA |
| Ограничение размера ответа | По умолчанию 1 МБ, можно увеличить, чтобы неограниченный по размеру ответ не «съедал» проверку |
| Принимаемые и отклоняемые коды состояния | Списки кодов, которые нужно игнорировать, и кодов, которые считать ошибкой - инструмент для эндпоинта, который законно отвечает 401 или 404 как часть своего контракта |
| Управление DNS | Разрешение через определённые резолверы, обход DNS-кеша чекпоинта, проверка того, в какие IP-адреса разрешается хост |
| Строгость TLS | Опционально требовать действительную цепочку сертификатов, TLS 1.2 или выше, шифры выше 128 бит и проверку отзыва - плюс слежение за истечением сертификата на том же соединении |
Самый выразительный способ проверить ответ - написать для него правила. Каждое правило - это одна строка, правила объединяются через И, и монитор может нести до двадцати таких правил. Вот проверенный стартовый набор для JSON API:
status isOk
header("Content-Type") contains "json"
body.json.path("$.count") gt 0
time lt 5s
Четыре строки, и вместе они покрывают четыре важных уровня: эндпоинт ответил кодом 2xx, ответил именно
JSON, а не страницей ошибки, payload содержит реальный результат, а не пустой, и всё это уложилось в
бюджет времени. Другие полезные по отдельности правила из того же каталога включают
body.json.path("$.status") eq "ok" для собственного вердикта здоровья API,
body.json.path("$.error") absent для поля ошибки, появившегося в остальном успешном
ответе, body.json.path("$.version") eq "2.4.1", чтобы поймать непреднамеренный откат
версии, redirects.count eq 0 для эндпоинта, который должен отвечать напрямую, и
cert.days.left gt 14 для сертификата на том же соединении.
Правила читают субъекты из ответа и сравнивают их. Субъекты покрывают код состояния; общее время ответа
и его составляющие - подключение, TLS, DNS, заголовки и тело; сырое тело вместе с его размером и его
хешем; структурированные запросы к payload как к JSON, XML, HTML или YAML; отдельные заголовки ответа;
итоговый и исходный URL и их части; цепочку редиректов, переход за переходом; оставшиеся дни
сертификата, издателя и имена; согласованные протокол TLS и шифр; адреса, которые вернул DNS; и
Set-Cookie. Сравнения работают от очевидных - равно, меньше чем, больше чем - до
contains, startsWith, endsWith, matches для
регулярного выражения, containsAny и containsAll для набора, in
для списка допустимых значений, а также exists, isNumber и
unique.
Есть и ось обнаружения изменений: правило может сравнивать значение этого запуска с предыдущим, так что можно утверждать, что счётчик никогда не идёт назад или что хеш тела не изменился - это ровно та форма правила, что ловит незаметный откат или несанкционированное изменение содержимого, а не сбой.
Наряду с языком правил есть более простой путь для одного значения, который давно является частью мониторинга API и которого часто вполне достаточно для проверки. Вы указываете монитору, как разобрать тело, как выбрать из него одно значение и каким это значение должно быть:
Предикат, применяемый к выбранному значению, покрывает равно и не равно, меньше и больше в строгой и включительной форме, принадлежность списку допустимых значений или исключение из него, попадание в числовой диапазон или вне его, и проверку того, является ли значение null или отсутствует вовсе.
Некорректный селектор отклоняется при сохранении, а не в три часа ночи. Селектор компилируется в момент валидации, так что опечатка в JSONPath или XPath - это ошибка формы, а не монитор, который молча проваливался - или молча проходил - с момента создания.
Каждый сбой в этой таблице возвращает HTTP 200. В этом вся проблема мониторинга API только по коду состояния: транспорт отработал успешно, поэтому транспорт и сообщает об успехе.
| Что сломалось | Как выглядит ответ | Что это ловит |
|---|---|---|
| Вместо payload отдаётся страница ошибки | 200, с HTML | Проверка типа содержимого, или правило о том, что тело разбирается как JSON |
| Поисковый индекс перестал перестраиваться | 200, с пустым массивом результатов | Правило о том, что число результатов не менее одного |
| Поле переименовано при изменении схемы | 200, валидный JSON, поле отсутствует | Правило о том, что поле существует |
| Развёртывание откатили, и никто не заметил | 200, старая строка версии | Правило, закрепляющее поле версии |
| Поле ошибки появляется внутри конверта успеха | 200, с установленным полем ошибки | Правило о том, что поле ошибки отсутствует |
| Нижестоящая зависимость отказывает, и API деградирует изящно | 200, с частичными или устаревшими данными | Правило по собственному полю здоровья API, или значение свежести в payload |
| Эндпоинт теперь отвечает за четыре секунды вместо двухсот миллисекунд | 200, но в итоге | Правило по времени ответа |
| Аутентификация незаметно перестала применяться | 200, возвращает данные, которые не должен возвращать | Отдельный негативный монитор - запрос без учётных данных, который должен вернуть 401 |
Последнюю строку стоит сделать намеренно. Второй монитор, который не отправляет учётные данные и проверяет код 401, - это самый дешёвый способ узнать, что уровень авторизации случайно отключили, - сбой, который никакое количество позитивного тестирования никогда не выявит.
API-мониторы работают с публичного флота чекпоинтов HostTracker - более 300 чекпоинтов в 158 городах, - и вы сами выбираете, какие локации использует конкретный монитор. География важнее для API, чем для сайта: эндпоинт за CDN или геораспределённым балансировщиком нагрузки может быть здоров во Франкфурте и неисправен в Сан-Паулу, а проверка из одной локации никак этого не увидит. То же касается и DNS - устаревшая или неправильно настроенная запись часто распространяется неравномерно, что изнутри выглядит как периодический сбой, а снаружи - как региональный.
Проверка из множества мест несёт очевидный риск: чем больше чекпоинтов, тем больше шансов, что один нестабильный сетевой путь поднимет ложную тревогу. HostTracker решает это кворумом подтверждения. Когда чекпоинт сообщает о сбое, проверка повторяется на дополнительных независимых чекпоинтах, и изменение состояния подтверждается только после того, как они сойдутся во мнении - по умолчанию это вердикт большинства среди до семи агентов, минимум трёх. Вы можете сделать это строже, потребовав определённое число агентов, сообщивших о сбое, или полного согласия между ними - для эндпоинта, где ложная тревога хуже, чем медленная.
После подтверждения оповещение следует задержке, которую выбрал каждый контакт - немедленно, либо через 3, 5, 15, 30 или 60 минут, либо через 3, 6, 12 или 24 часа непрерывного сбоя, - по девяти каналам уведомлений: email, SMS, голосовой звонок, webhook, Slack и мессенджеры Telegram, Discord, Viber, Facebook Messenger и Google Chat. Канал webhook - это способ доставить оповещение в систему управления инцидентами или в командный чат.
Проверка - это настраиваемый HTTP-запрос плюс анализ ответа, поэтому то, что она умеет проверять, следует прямо из этого.
data - и стоит проверить, что поле errors отсутствует, поскольку GraphQL
славится тем, что отвечает 200 с ошибками внутри.Что не подходит - это последовательность: получить токен, использовать его, затем удалить ресурс. API-монитор делает один запрос за запуск. Для настоящего многошагового сценария нужен браузерный монитор транзакций; для тайминга страницы, а не эндпоинта, см. мониторинг тайминга доступа в браузере.
Это взаимодополняющие инструменты, которые часто путают. Платформа наблюдаемости или APM инструментирует ваш код и сообщает, что происходило внутри запроса. Внешний мониторинг API стоит вне вашей инфраструктуры и сообщает, что реально получает потребитель. Оба стоит иметь; ни один не заменяет другой.
| Внешний мониторинг API | APM / наблюдаемость | |
|---|---|---|
| Точка наблюдения | Вне вашей инфраструктуры, через публичный интернет | Внутри процесса вашего приложения |
| Требует изменений в коде | Нет - ничего нигде не устанавливается | Агент или SDK в каждом сервисе |
| Видит проблемы DNS, маршрутизации, TLS и CDN | Да - они на пути, который он проходит | Нет - они происходят до того, как запрос дойдёт |
| Продолжает сообщать, когда вся платформа недоступна | Да - он не размещён у вас | Часто нет - то, что должно сообщать, тоже недоступно |
| Объясняет, почему запрос был медленным внутри вашего кода | Нет - видит разбивку по времени, но не ваш стек | Да - в этом весь его смысл |
| Покрывает эндпоинт, который сегодня никто не вызывал | Да - он вызывает его по расписанию | Нет - нет трафика, нет телеметрии |
Схема, к которой в итоге приходит большинство команд, - внешний мониторинг для обнаружения и внутренняя телеметрия для диагностики: HostTracker сообщает вам, что эндпоинт сломался, откуда и по какому правилу, а ваш собственный трейсинг объясняет, почему. Вместе с этим монитор запросов к базе данных часто объясняет, почему API стал медленным, а мониторинг нагрузки сервера объясняет состояние хоста, на котором он работает.
Инструмент мониторинга API отправляет запросы к вашим эндпоинтам по расписанию и оценивает ответ по заданным вами правилам, а не просто фиксирует, что сервер вообще ответил. Мониторинг API от HostTracker сначала проверяет, что эндпоинт доступен и возвращает ожидаемый HTTP-код ответа, затем сверяет тип содержимого ответа с ожидаемым (JSON, XML, обычный текст и так далее), и, наконец, ищет в теле ответа заданные значения или шаблоны. Такой многоуровневый подход выявляет проблемы, которые простая проверка «работает / не работает» полностью пропустит - эндпоинт может возвращать обычный код 200, но при этом отдавать повреждённые, неполные или устаревшие данные из-за ошибки на бэкенде, неудачного запроса к базе данных или сбоя в интеграции. Чёткие политики проверки заранее показывают монитору, как выглядит здоровый ответ именно для вашего API.
Мониторинг аптайма сайта обычно проверяет, загружается ли страница и возвращает ли она нормальный HTTP-код ответа - это отлично работает для страниц, предназначенных для просмотра в браузере. Мониторинг API идёт дальше, потому что API используются программами, а не людьми, поэтому «рабочий» ответ должен соответствовать более строгим требованиям: правильный тип содержимого, корректная структура и верные значения внутри данных, а не просто успешный код ответа. Эндпоинт может вернуть HTTP 200, при этом фактические данные окажутся неверными, отсутствующими или повреждёнными, а обычная проверка аптайма этого не заметит, поскольку смотрит только на код ответа. Мониторинг API от HostTracker проверяет оба уровня - доступность и код ответа, как это делает мониторинг аптайма, - плюс проверку типа содержимого и поиск ожидаемых значений в теле ответа, что даёт гораздо более точную картину того, действительно ли API работает исправно.
Да, именно в этом суть отличия мониторинга API от базовой проверки аптайма. HostTracker позволяет задавать политики проверки, которые выходят за рамки простого подтверждения ответа эндпоинта: вы можете указать ожидаемый тип содержимого, чтобы проверка завершалась ошибкой, если эндпоинт неожиданно начинает возвращать HTML вместо JSON (частый признак того, что вместо реальных данных отдаётся страница ошибки), и искать в содержимом ответа конкретные значения, которые должны присутствовать, чтобы ответ считался корректным. Это значит, что проверка может провалиться, даже если HTTP-код ответа выглядит абсолютно нормальным - так выявляются случаи, когда ошибка на бэкенде или сбой в нижестоящей интеграции приводит к технически успешному, но функционально неверному ответу. Именно проверка реального содержимого, а не только доступности, делает мониторинг API значимым для эндпоинтов, от которых зависят другие системы.
После того как подтверждено, что эндпоинт отвечает и тип содержимого соответствует ожидаемому, мониторинг API от HostTracker ищет в полученном содержимом конкретные значения или текстовые шаблоны, заданные в политике проверки. Это позволяет убедиться, что ответ содержит определённое поле, значение статуса или фрагмент данных, свидетельствующий о корректной работе эндпоинта - например, проверить, что ответ health-check эндпоинта включает ожидаемое значение статуса, а не сообщение об ошибке, обёрнутое в ответ с кодом 200. Если ожидаемое содержимое не найдено, проверка помечается как неудачная, даже если само соединение прошло успешно, и вы получаете оповещение через настроенные каналы уведомлений. Такая проверка с учётом содержимого особенно полезна для выявления частичных сбоев, когда API технически доступен, но незаметно возвращает неполные или неверные данные.
Частота проверок настраивается, а платные тарифы HostTracker поддерживают интервалы до одной минуты для всех типов мониторинга, поэтому критически важные для работы приложения API-эндпоинты можно проверять практически непрерывно. Бессрочный бесплатный тариф выполняет проверки каждые 30 минут для до двух мониторов - это разумная частота для менее приоритетных или внутренних API, где небольшая задержка в обнаружении проблемы не критична. Для критически важных для бизнеса API - тех, что обеспечивают работу живого приложения, платёжного процесса или интеграции, от которой зависят ваши клиенты, - более короткие интервалы означают, что проблемы будут обнаружены и устранены до того, как перерастут в масштабный сбой, заметный пользователям. 30-дневный полнофункциональный пробный период с проверками раз в минуту и без привязки банковской карты позволяет протестировать, насколько быстрое обнаружение нужно именно вашему API.
Да. API-монитор может отправлять всё, что требует эндпоинт для приёма запроса: произвольные пользовательские заголовки - именно так передаётся bearer-токен, заголовок с API-ключом или идентификатор арендатора, - плюс имя пользователя и пароль для HTTP-аутентификации, тело запроса для POST, PUT или PATCH, и любой HTTP-метод от GET и HEAD до POST, PUT, PATCH и DELETE. Практический совет тот же, что и для любого автоматизированного клиента: выпустите монитору собственные учётные данные, а не переиспользуйте чужие, дайте ему максимально узкий набор прав, которого всё же достаточно для осмысленной проверки эндпоинта, и предпочитайте эндпоинт только для чтения или выделенный health-маршрут чему-либо, что изменяет данные. Если ваши токены живут недолго, направьте монитор на эндпоинт, чья аутентификация не истекает, - health- или status-маршрут, защищённый долгоживущим ключом, - а не пытайтесь заставить монитор выполнять обмен токена, который он не умеет делать.
Проверки API выполняются с интервалом от одной минуты до 24 часов - 1, 2, 3, 5, 10, 15, 30 и 45 минут, затем 1, 2, 4, 6, 12 и 24 часа, - а новый монитор по умолчанию получает интервал в три минуты. Они выполняются с публичного флота чекпоинтов HostTracker, охватывающего более 300 точек в 158 городах, и вы сами выбираете, какие локации использует конкретный монитор. Проверка из нескольких регионов важнее для API, чем для сайта: эндпоинт за CDN или геораспределённым балансировщиком нагрузки может быть полностью здоров в одном регионе и неисправен в другом, а проверка из одной локации просто не может этого увидеть. Это же определяет контроль ложных тревог - когда один чекпоинт сообщает о сбое, проверка повторяется с других независимых чекпоинтов, и изменение состояния подтверждается только после того, как кворум согласится, так что один нестабильный сетевой путь между дата-центром и вашим хостом никого не оповестит.
И то, и другое. Для разовой проверки бесплатная HTTP-проверка запускает ваш эндпоинт из 300+ локаций прямо сейчас - вход не требуется. API-монитор - это тот же запрос, повторяемый по расписанию, вплоть до раза в минуту, с применением ваших правил валидации к каждому ответу и оповещением в момент, когда один из них не проходит проверку. Большинство команд начинают с разовой проверки, чтобы увидеть, что сообщает локация, а затем добавляют монитор для эндпоинтов, от которых зависят их клиенты или интеграции.
Когда проверка мониторинга API завершается сбоем - потому что эндпоинт не ответил, вернул неожиданный тип содержимого или не содержал значений, требуемых политикой проверки, - HostTracker отправляет оповещение через любой из 9 настроенных вами каналов уведомлений, включая email, SMS, голосовой звонок, webhook, Slack и мессенджеры вроде Telegram, Discord и Viber. Это позволяет вашей команде узнать о неработающем или деградировавшем API в момент обнаружения проблемы, а не из тикета поддержки после того, как интеграция уже несколько часов тихо давала сбой. Поскольку проверка оценивает и доступность, и содержимое, оповещение отражает реальную функциональную проблему API, а не просто кратковременный сбой соединения, что помогает избежать как пропущенных инцидентов, так и лишнего шума.
Начните бесплатный период и получайте уведомления в момент, когда эндпоинт возвращает неверный статус, нарушает контракт данных или начинает работать медленнее.
Часть инструментов мониторинга сайтов HostTracker.