Мониторинг API: как отслеживать доступность endpoint'ов
4 мин чтения Обновлено:
Мониторинг API: как отслеживать доступность endpoint'ов

Мониторинг API: как отслеживать доступность endpoint'ов

Мониторинг API — это регулярная проверка того, что программный интерфейс отвечает, отвечает быстро и возвращает корректные данные. У сайта поломку замечает посетитель, у API — соседний сервис, и молча: сломанный endpoint неделями роняет заказы, пока никто не смотрит в логи.

Чем это отличается от мониторинга сайта

У сайта отказ виден глазами: страница не открылась. У API отказ выражается в структуре ответа, и код 200 здесь ничего не гарантирует. Endpoint может вернуть двести с пустым массивом вместо каталога, отдать ошибку внутри JSON-тела или начать отвечать за восемь секунд вместо двухсот миллисекунд — формально всё живо, фактически интеграция сломана.

Отсюда следует главный принцип: у API проверяют не факт ответа, а его содержание. Мониторинг должен смотреть внутрь тела ответа, а не только на код.

Что проверять у endpoint'а

Параметр Норма Что ловит
Код ответа 200 или 201 Полное падение сервиса, 500 и 502
Время ответа Порог, вдвое выше обычного значения Деградацию базы, зависшие внешние вызовы
Ключевое поле в теле Строка или поле присутствует Пустой ответ, ошибку внутри JSON, смену формата
SSL-сертификат домена API Срок не истекает в ближайшие недели Обрыв всех интеграций разом
Порт и сетевой отклик Порт открыт, хост отвечает Упавший сервис за прокси, проблемы сети

Строчка про ключевое поле — самая полезная в таблице. Проверка на наличие конкретной строки в ответе отличает работающий endpoint от формально живого: если в теле пропало поле items или появилось error, вы узнаете об этом сразу, а не от партнёра через неделю.

Какие endpoint'ы брать под наблюдение

Ставить проверку на каждый метод бессмысленно и дорого. Разумный минимум складывается из четырёх групп.

Health-check. Отдельный лёгкий адрес вроде /api/health, который проверяет доступность базы и очередей и отвечает быстро. Это первая линия: он падает раньше остальных.

Денежный путь. Методы, без которых не проходит заказ: расчёт корзины, создание платежа, проверка остатков. Их простой измеряется прямыми потерями.

Внешние зависимости. Адреса, за которыми стоят чужие сервисы — платёжный шлюз, служба доставки, поставщик данных. Ломаются они не у вас, но отвечать за это перед клиентом будете вы.

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

Про авторизацию

Закрытые методы удобно проверять отдельным техническим токеном с минимальными правами и на тестовых данных. Не используйте для мониторинга рабочий ключ администратора и следите за сроком его действия: истёкший токен превращает мониторинг в источник ложных тревог.

Пороги и борьба с ложными тревогами

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

Первая — интервал. Для денежных методов имеет смысл минимальный, для справочных достаточно проверки раз в 10–15 минут. Помните, что время обнаружения проблемы равно выбранному интервалу: проверка раз в час означает час незамеченного простоя.

Вторая — порог по времени ответа. Ставьте его не по идеальному значению, а по фактическому: посмотрите обычное время за неделю и возьмите запас. Порог впритык даст поток тревог на каждом всплеске нагрузки.

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

Как это устроено в Пруфене

В Пруфене endpoint закрывается связкой проверок: доступность по HTTP с интервалом от 2 минут следит за кодом ответа и временем, наличие контента — за нужной строкой в теле ответа, отдельные проверки — за сертификатом и портом. Точек 13: 11 в России, Минск и Испания. Уведомления приходят на Email, в Telegram, в Макс и звонком, а для интеграции с вашими системами есть REST API.

Частые вопросы

Разве логи и APM не закрывают эту задачу? Они показывают, что происходит внутри системы, но молчат, когда система недоступна снаружи целиком — например, при проблемах с DNS, сертификатом или каналом. Внешняя проверка смотрит на API глазами клиента, поэтому дополняет внутренний мониторинг, а не заменяется им.

Нужно ли мониторить чужое API, которым мы пользуемся? Да, если от него зависит ваш бизнес-процесс. Так вы узнаете о сбое поставщика раньше, чем он опубликует статус, и сможете вовремя переключиться на запасной сценарий.

Не создаст ли мониторинг лишнюю нагрузку? Запрос к лёгкому health-check раз в несколько минут незаметен на фоне рабочего трафика. Тяжёлые методы имеет смысл проверять реже или выносить для них отдельный облегчённый адрес.

Как проверять методы, изменяющие данные? Не проверять их напрямую в бою. Заведите тестовый контур или идемпотентный метод-заглушку, который проходит тот же путь по инфраструктуре, но не создаёт реальных записей.

Была ли статья полезна?

Начните мониторинг прямо сейчас

Бесплатный тариф — до 5 проверок. 150 ₽ на баланс при регистрации.

Создать аккаунт