Переходите с UptimeRobot? Импортируйте мониторы одним кликом по ключу API только для чтения.Начать бесплатно →
  1. Главная
  2. Мониторинг
  3. Мониторинг API

Мониторинг API с проверкой значений в JSON и телом запроса

Вызывайте REST-эндпоинт по расписанию с нужным методом, телом и учётными данными, а затем проверяйте код ответа и значение внутри JSON.

  • 30 мониторов бесплатно
  • Без банковской карты
  • Сбои подтверждаются из других регионов
api.clienta.comGET /v1/health · JSON status.database = ok
Работает
  • Amsterdam97мс200 · ok
  • London142мс200 · ok
  • TTFB55 мс
  • JSON-путьstatus.database
  • Телокорректный JSON

Иллюстративный пример

Попробуйте

Проверьте прямо сейчас, в браузере

Без регистрации. Мониторинг API: введите адрес и посмотрите, что именно отслеживает такой монитор. Ничего из введённого не сохраняется.

Один настоящий запрос с проверяющего сервера Tenium. Он идёт по редиректам и читает сертификат. Ничего не сохраняется.

Публичный тест делает обычный GET. Проверка JSON, тела запроса и заголовков аутентификации — возможности сохранённого монитора.

Результат появится здесь.

Создать такой мониторОткрыть полный инструмент

Что проверяет

Что именно проверяет этот монитор

Методы и тело запроса

GET, HEAD, POST, PUT, PATCH или DELETE с телом запроса. Тело, которое начинается с { или [, автоматически уходит как application/json.

Аутентификация

Basic auth доступен на всех тарифах. Произвольные заголовки вроде Authorization: Bearer ... требуют тарифа Pro.

Проверка JSON

Укажите путь, например status.database или items[0].id, и значение, которому он должен быть равен. Если пути нет или тело — некорректный JSON, проверка не пройдёт.

Задержка

Время ответа записывается при каждом вызове. На Pro порог медленного ответа оповестит, если среднее трёх последних проверок его превысит.

Оповещения

Мониторинг API: как выглядит оповещение

Одно и то же событие приходит письмом, сообщением в Telegram или карточкой в Slack. Это текст, который отправляют каналы; хост, время и числа выдуманы.

Кому [email protected]

Тема [DOWN] api.clienta.com/v1/health — JSON path "status.database" is "down", expected ok

DOWN

api.clienta.com/v1/health

api.clienta.com/v1/health · JSON path "status.database" is "down", expected ok · confirmed from Amsterdam (AMS), London (LON)

ErrorJSON path "status.database" is "down", expected ok
Confirmed byAmsterdam (AMS), London (LON)
Since14:02:11 UTC
Targetapi.clienta.com/v1/health
Next stepCheck the server / hosting panel. Acknowledge so the team knows you are on it.

AcknowledgeOpen incident

{"status":{"api":"ok","database":"down"}}

Tenium · checked from Amsterdam · 14:02 UTC

Tenium alerts

🔴 DOWN · api.clienta.com/v1/health · JSON path "status.database" is "down", expected ok · confirmed from Amsterdam (AMS), London (LON)

TTenium APP 2:02 PM

DOWN · api.clienta.com/v1/health
api.clienta.com/v1/health · JSON path "status.database" is "down", expected ok · confirmed from Amsterdam (AMS), London (LON)

  • Error: JSON path "status.database" is "down", expected ok
  • Confirmed by: Amsterdam (AMS), London (LON)
  • Target: api.clienta.com/v1/health

Подтвердить получениеOpen incident

Check the server / hosting panel. Acknowledge so the team knows you are on it. · checked from Amsterdam

Мониторинг API: e-mail, Discord и Google Chat работают на всех тарифах, Slack, Telegram, Teams и Mattermost — с тарифа Starter. SMS и голосовых звонков нет.

Время ответа

Время ответа с порогом

Каждая проверка сохраняет, сколько длился ответ. Мониторинг API: подвигайте порог и посмотрите, когда сработало бы оповещение о медленном ответе.

Время ответа Порог иллюстративные данные
Время ответа с порогом. Иллюстративные данные. 0125250375500 Порог 300 мс 00:0006:0012:0018:0024:00 Время ответа (мс)
Правило. Мониторинг API: оповещение срабатывает, когда среднее за 3 последние проверки выше порога (Pro и Agency).
Скорость

Как быстро вы узнаете

Выберите тариф, чтобы увидеть его интервал проверки и сколько сбой идёт до вас, с учётом подтверждения.

Проверка каждые30 с
В среднем узнаете через15 с
В худшем случае90 с
Проверка каждыеОкно подтверждения (до 60 с)

Мониторинг API: сбой случается в случайный момент между двумя проверками, поэтому в среднем вы ждёте полинтервала, а в худшем случае — полный интервал плюс окно подтверждения. Одного региона с ошибкой мало: инцидент открывается, только когда сбой подтверждают оба региона. Остальные регионы спрашиваются сразу, на ответы отведено до 60 секунд.

Настройка

Как настроить мониторинг API за 30 секунд

1

Укажите адрес

Добавьте URL эндпоинта и выберите тип «JSON API», а Tenium подставит разумный таймаут и стандартные настройки подтверждения.

2

Выберите интервал

Самый быстрый интервал: 30 с на Pro и Agency, 1 мин на Starter, 5 мин на Free. Более редкие интервалы доступны на всех тарифах.

3

Добавьте JSON-путь

Выберите, кому отправлять оповещения. E-mail, Discord и Google Chat работают на всех тарифах, Slack, Telegram, Teams и Mattermost — с тарифа Starter, webhook — с Pro.

4

Сохраните

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

Режимы сбоев

Что означает каждая ошибка

Это текст, который инцидент показывает в строке «Error», типичная причина и что проверить первым.

JSONJSON path "status.database" not found

Ответ разобран, но поля уже нет: переименованный ключ, изменённая версия API или тело с ошибкой. Отсутствующий путь ломает проверку.

Выглядит как: JSON path "status.database" not found

JSONJSON path "status.database" is "down", expected ok

Эндпоинт отвечает 200, но сообщает, что зависимость сломалась. Именно такой сбой пропускают обычные проверки статуса.

Выглядит как: JSON path "status.database" is "down", expected ok

PARSEResponse is not valid JSON

Вместо JSON пришла HTML-страница ошибки, сообщение прокси или обрезанное тело. Смотрите отрывок ответа в инциденте.

Выглядит как: Response is not valid JSON

HTTP 401401 Unauthorized

Учётные данные неверны или просрочены, обычно токен сменили. Проверка не проходит, пока вы не обновите заголовок Authorization (Pro).

Выглядит как: 401 Unauthorized

TIMEOUTTimeout after 10 s

API не ответил вовремя. Сравните со средним временем ответа на графике: возможно, оно ухудшалось ещё до этого.

Выглядит как: Timeout after 10 s

Тарифы

Мониторинг API: что входит в тарифы

Free
$0/мес.
Starter
$7/мес.
Pro
$29/мес.
Agency
$59/мес.
Полный набор мониторов—✓✓✓
Мониторы301003001000
Самый быстрый интервал5 мин1 мин30 с30 с
Регионы1222
Собственные заголовки——✓✓
Оповещения о медленном ответе——✓✓
Эскалация на второй контакт——✓✓
Страницы статуса1310Без ограничений

Проверки JSON/API, DNS, UDP, heartbeat, SSL и срока действия домена и отслеживание изменений начинаются с тарифа Starter. Проверки HTTP(S), ключевых слов, ping и портов доступны на всех тарифах.

Все тарифы

Начните с эндпоинта, который не врёт

Самый полезный монитор API — это не вызов самого загруженного эндпоинта, а вызов служебного маршрута, который проверяет важное. Поверхностный маршрут, возвращающий {"ok":true}, доказывает только то, что процесс запущен. Маршрут, который обращается к базе данных и очереди и сообщает о каждой отдельно, даёт вам, что проверять:

{"status":"ok","database":"ok","queue":"ok","version":"4.12.1"}. В мониторе типа JSON API вы указываете одно значение этого документа, например database, и то, каким оно должно быть. Когда соединение с базой обрывается, маршрут всё равно отвечает 200, но JSON уже не совпадает, и в инциденте видно, какое именно значение не то. Пусть маршрут будет дешёвым и без аутентификации или защищённым только секретным заголовком, чтобы мониторинг не стал источником нагрузки.

Как проверяется значение

Тело ответа разбирается как JSON; если не получается, проверка завершается ошибкой «Response is not valid JSON». Затем вычисляется ваш путь: точки заходят в объекты, число или [0] выбирает элемент массива, а необязательный начальный $ принимается, так что status.database, $.status.database и items[0].id — всё допустимые записи. Отсутствующий путь даёт ошибку «JSON path not found». Если вы задали ещё и ожидаемое значение, фактическое должно ему равняться. Строки сравниваются без учёта регистра, числа и булевы значения — по текстовой записи (true, 42), а объекты и массивы — как JSON.

Это намеренно только равенство. Операторов «меньше» или «содержит» пока нет. Если нужен порог, пусть API сам вычислит вердикт и отдаст его значением: queue_ok:true проверять проще, чем queue_depth<100. Если указать путь без ожидаемого значения, проверка просто потребует, чтобы путь существовал.

Методы, тела запросов и учётные данные

Можно использовать GET, HEAD, POST, PUT, PATCH и DELETE. Тело запроса отправляется для всех методов, кроме GET и HEAD, а если оно начинается с { или [ и тип содержимого вы не задали, уйдёт как application/json. Аутентификация бывает двух уровней. Basic auth — это поле в расширенных настройках на всех тарифах. Bearer-токены и API-ключи в заголовках требуют тарифа Pro, потому что собственные заголовки — функция Pro: редактор так и говорит, а не отбрасывает их молча.

Осторожно с методами, которые меняют данные. POST каждую минуту — это 1440 записей в сутки, а монитору, который создаёт запись, нужен план очистки. Отдавайте предпочтение идемпотентным чтениям, отдельному токену только для чтения или эндпоинту, созданному для таких проверок. Никогда не направляйте монитор с DELETE на рабочие данные.

Когда «неправильный» статус ожидаем намеренно

Поле ожидаемого статуса — это проверка контракта не меньше, чем проверка доступности. Вызов защищённого эндпоинта без токена с ожиданием 401 доказывает, что слой аутентификации жив и не пускает всех подряд. Ожидание 404 на пути, который должен оставаться скрытым, — дешёвый регрессионный тест на изменение маршрутизации. Для публичного API с ограничением частоты значение 200,429 не даёт оповещению об ограниченном ответе вас разбудить, но сбои 500 и 502 всё равно ловит. Диапазоны и отдельные коды в одном списке можно сочетать.

Задержка и порог медленного ответа

Каждый вызов сохраняет время ответа. На Pro и Agency задайте порог медленного ответа в миллисекундах, и Tenium будет сравнивать его со средним трёх последних проверок, открывая при превышении инцидент об ухудшении, а не о недоступности. Усреднение трёх значений не даёт реагировать на один холодный старт, но при интервале в одну минуту регрессию видно уже через несколько минут. Поскольку среднее берётся по проверкам, которые могут идти из разных регионов, в пороге стоит учесть дополнительное расстояние до самого дальнего проверяющего сервера.

Ограничения, о которых стоит знать

Каждый монитор — это один запрос. Цепочек (сначала вход, потом вызов с токеном), проверки схемы ответа и проверки заголовков нет. Тело читается примерно до 1 МБ без сжатия, поэтому очень большой эндпоинт со списком — плохой выбор для монитора. Проверка JSON начинается с тарифа Starter за $7 в месяц; на Free тот же адрес можно отслеживать как обычный монитор сайта по статусу и скорости. Если ваш API стоит за WAF, добавьте адреса проверяющих серверов в белый список (allow-list), чтобы страница проверки не выглядела как ошибка проверки значения.

Частые вопросы: мониторинг API

Какой синтаксис JSON-путей поддерживается?

Точечная нотация с необязательными индексами в скобках: status.database, items[0].id или $.data.count. Ключи с точками или пробелами адресовать нельзя, так что при необходимости отдайте простой псевдоним.

Можно ли проверить, что число меньше лимита?

Напрямую нет, потому что сравнение — это равенство. Пусть ваш эндпоинт возвращает булево значение или слово-статус, в котором решение уже учтено, и проверяйте его.

Безопасны ли мои токены в мониторе?

Используйте токен только для чтения, созданный именно для мониторинга, и меняйте его, как любые учётные данные. Тариф Pro принимает любые заголовки запроса, так что ограничьте токен единственным маршрутом, который проверяете.

Может ли один монитор вызывать несколько эндпоинтов подряд?

Нет. Создайте отдельный монитор на каждый эндпоинт. Цепочки запросов и многошаговые сценарии пока не входят в продукт.

Начните мониторинг API бесплатно

30 мониторов на тарифе Free, без банковской карты, а сбои подтверждаются из других регионов (сейчас работают 2 региона). Переходите на тариф выше, когда клиентов станет больше.