Перейти к основному содержимому

Документация

Полное руководство по настройке мониторинга сайтов с PingZen. Документация API, примеры кода и лучшие практики.

Монитор транзакции управляет настоящим headless-браузером Chromium и проходит список шагов, который вы описали: открыть страницу, ввести текст в поле, нажать кнопку, дождаться чего-то, проверить, что на экране появилось нужное. Проверка успешна, только если прошли все шаги. Это единственный монитор в PingZen, который видит сайт так же, как его видит браузер, — и самый дорогой из всех, поэтому вторая половина страницы посвящена цене.

Для чего подходит

Вход в систему и всё, что за ним

Страница входа, отдающая 200, и возможность реально войти — это разные вещи. Монитор транзакции вводит логин и пароль, нажимает кнопку и проверяет, что адрес или содержимое страницы подтверждают: сессия началась. Сломанное хранилище сессий, просроченный секрет OAuth или цикл редиректов видны только здесь.

GET200fillclick

Сценарий из нескольких шагов, где сломан только четвёртый

Оформление заказа, бронирование, регистрация, форма поддержки. Каждая страница по отдельности отвечает 200, а сценарий всё равно мёртв, потому что одна кнопка перестала отправлять данные. Монитор запоминает, сколько шагов прошло до остановки, поэтому алерт называет шаг, а не сайт.

12345

Страницы, которые существуют только после выполнения JavaScript

SPA отдаёт пустую оболочку и наполняет её на клиенте. Проверка ключевого слова в исходном HTML не найдёт ничего, а браузер увидит отрисованную страницу. Используйте шаг validate на элементе, который появляется только после того, как приложение действительно загрузило данные.

div#app

Ручной прогон, который вы делаете после каждого релиза

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

Для чего не подходит

Браузер медленный, дорогой и за один раз проходит только один сценарий. У большинства вопросов есть ответ дешевле:

Что нужно узнатьЧто использовать
Работает ли страница прямо сейчас? Транзакция выполняется в лучшем случае раз в 5 минут, и на ответ ей нужен запуск браузераМонитор HTTP / HTTPS — раз в 60 секунд, и он умеет проверять ключевое слово в ответе
Насколько страница быстрая, какие у неё Core Web Vitals?Монитор PageSpeed. Транзакция измеряет собственное время выполнения вместе с запуском браузера и о скорости страницы не говорит ничего
Работает ли цепочка API-запросов — получить токен, создать, прочитать обратно?Монитор API-проверки. Та же идея без браузера: проверки статуса, тела и заголовков и переменные, которые переносятся между шагами
Скоро ли истекает сертификат? Транзакция по HTTPS ничего не говорит о сроке действияМонитор TLS/SSL-сертификата
Доступен ли сервер или порт вообще?Монитор Ping или монитор TCP
Перестала ли отчитываться фоновая задача или устройство?Монитор Heartbeat, который задача вызывает сама
Всё, для чего браузер избыточен: один URL, один код ответа, одна строкаМонитор HTTP. Транзакцию оставьте для сценария, который может пройти только браузер

Что делает одна проверка

navigatefillclickwaitselect
  1. Ждёт свободный слот браузера. В одном серверном процессе одновременно работают только два экземпляра Chromium, поэтому в загруженный момент здесь можно потерять заметные секунды.
  2. Запускает headless-браузер Chromium, открывает новый контекст и пустую страницу. Ничего не наследуется от прошлой проверки: ни cookie, ни localStorage, ни открытая сессия.
  3. Выполняет ваши шаги по порядку. Любая ошибка немедленно останавливает прогон — шаги после сломанного не выполняются.
  4. Делает скриншот, если шаг упал и включён скриншот при ошибке.
  5. Закрывает контекст и браузер и записывает общее время прогона как время отклика.

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

Каждый шаг получает свою долю таймаута монитора: таймаут делится на количество шагов, но доля никогда не бывает меньше 5 секунд. При таймауте по умолчанию в 60 секунд и трёх шагах у каждого шага 20 секунд; при двадцати шагах у каждого остаётся нижняя граница в 5 секунд — именно поэтому длинные транзакции могут прожить дольше собственного таймаута (см. таблицу статусов ниже).

Действия шагов

ДействиеЧто делает
navigateОткрывает URL и ждёт готовности DOM, а не загрузки всех картинок и фоновых запросов. Адрес должен быть http или https и не должен указывать на приватный или внутренний адрес; заблокированный URL роняет шаг
click, dblclickНажимает на элемент по вашему селектору, дожидаясь в пределах бюджета шага, когда по нему можно кликнуть
typeЗадаёт значение поля ввода. Не дописывает, а заменяет содержимое, так что очищать поле заранее не нужно
clearОчищает поле ввода
selectВыбирает вариант в элементе <select> по значению
hoverНаводит курсор на элемент — для меню, которые раскрываются только при наведении
pressОтправляет странице нажатие клавиши, например Enter или Escape
waitЛибо ждёт появления селектора, либо просто спит заданное число миллисекунд (в форме от 100 до 30 000). Лучше ждать элемент: фиксированная пауза либо окажется короткой в плохой день, либо потратит время впустую в хороший
scrollПрокручивает страницу к элементу, либо к заданной позиции по вертикали, либо — если ничего не указано — до низа страницы, чем и запускается ленивая подгрузка
screenshotСнимает страницу. Прежде чем на это полагаться, прочитайте примечание о скриншотах ниже
validateШаг, который и придаёт проверке смысл, — см. следующую таблицу

У шага может быть имя. Если оставить его пустым, ошибка будет выглядеть как «Step 3: click» — читаемо, но хуже, чем «Отправить заказ».

Селекторы — это CSS-селекторы. Выбирайте что-то устойчивое: data-testid, id, атрибут name у поля формы. Селектор, собранный из сгенерированных имён классов, сломается на следующей сборке фронтенда и разбудит вас ночью из-за смены дизайна.

Проверки

Переходы и клики доказывают, что страница не упала. Смысл проверке придают шаги validate. Транзакция без единого шага validate будет успешной, пока ничего не выбрасывает ошибку, — включая случай, когда вход не удался и приложение тихо вернуло вас на страницу входа.

ПроверкаПроходит, когда
url_contains, url_equalsТекущий адрес содержит ваш текст или точно ему равен. Обычное доказательство того, что вход привёл на /dashboard
title_contains, title_equalsЗаголовок страницы содержит ваш текст или точно ему равен
element_existsЭлемент по селектору есть в DOM — видимый или нет
element_visibleЭлемент есть и действительно виден на экране
element_text_contains, element_text_equalsТекст элемента содержит ваш текст или точно совпадает с ним после обрезки пробелов. Регистр учитывается
no_console_errorsВсегда. Эта проверка пока не реализована: она принимается и ничего не делает. Ошибки консоли во время прогона собираются, но проверку никогда не роняют

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

Логика статусов

У монитора транзакции нет состояния «деградация». Либо прошли все шаги, либо проверка неуспешна.

РезультатСтатус
Все шаги выполнены и все проверки сошлисьUP
Шаг упал: нет элемента, проверка не сошлась, переход заблокирован. Записывается как «Step failed: имяпричина»DOWN
Шаг израсходовал свою долю таймаута. Записывается как «Step timeout: имя»DOWN
Браузер не запустился или умер во время прогона. Записывается как «Browser error: …»DOWN
У монитора вообще нет шагов — «No transaction steps configured»DOWN
Весь прогон — ожидание слота, запуск браузера, все шаги — занял больше таймаута плюс 5 секунд или больше жёсткого потолка в 120 секундTIMEOUT

И DOWN, и TIMEOUT считаются простоем и открывают инцидент после порога подтверждения — по умолчанию это три неуспешные проверки подряд. При минимальном интервале в 5 минут от первого сломанного прогона до алерта проходит около 10 минут — и до 15 с момента, когда сценарий действительно сломался. Если для этого сценария так слишком долго, снизьте порог до 1 или 2 и примите, что нестабильный селектор будет будить вас зря.

Шаг, упавший по таймауту, попадает в разбивке отказов в категорию «таймаут», хотя статус при этом DOWN, — так монитор, который постоянно упирается в бюджет шага, легко заметить на графике отказов.

Что сообщает об ошибке

Когда шаг ломается, проверка запоминает номер и имя упавшего шага, сколько шагов прошло до него и до десяти ошибок консоли браузера. Сообщение, которое сохраняется вместе с проверкой и попадает в историю и в алерт, — это строка «Step failed» или «Step timeout», и она называет шаг. Счётчики шагов и ошибки консоли собираются на каждом прогоне, но в истории проверок не хранятся: сегодня они существуют только внутри самой упавшей проверки.

О скриншотах. Если включён скриншот при ошибке (так по умолчанию), при падении шага сохраняется PNG всей страницы. Он попадает во временный каталог на сервере, который выполнял проверку, и наружу этот каталог нигде не отдаётся: открыть картинку из интерфейса PingZen или через API сейчас нельзя. То же самое относится к шагу screenshot. Считайте обе возможности незавершёнными, а не доказательством, на которое можно посмотреть, и делайте алерт понятным по одному имени шага.

Цена настоящего браузера

Любой другой монитор отправляет запрос. Этот запускает браузер — примерно четверть гигабайта памяти и несколько секунд старта до того, как выполнится первый шаг. PingZen закладывает эту цену в продукт:

ОграничениеЗначение
Минимальный интервал проверки300 секунд (5 минут). Меньшее значение при сохранении из формы или через REST API поднимается до 300. Так же устроены другие продукты синтетического мониторинга
Минимальный таймаут60 секунд, поднимается так же. Максимум — 120 секунд
Шагов в одном мониторе50
Браузеров одновременноДва на один серверный процесс. Остальные проверки ждут очереди, и это ожидание тратит их собственный таймаут

О чём стоит подумать заранее:

  • Монитор транзакции занимает такое же место в лимите тарифа, как любой другой, но обходится намного дороже в работе. Один хорошо выбранный сценарий лучше пяти пересекающихся.
  • Не заводите отдельный монитор на каждую страницу воронки. Одна транзакция, проходящая воронку целиком, даёт то же покрытие за один запуск браузера.
  • Держите число шагов честным. Бюджет шага — это таймаут, делённый на количество шагов, с нижней границей в 5 секунд, поэтому двадцать шагов по пять секунд могут выполняться сто секунд — дольше, чем прогон вообще разрешено вести, и он будет прерван как таймаут. Комфортно жить примерно до десяти шагов.
  • Где выполняется проверка. Обычно — на центральном сервере PingZen. Проба может её выполнить, только если собрана с браузером, поэтому большинство локаций транзакции не предлагают: в выборе локаций видны лишь те, что их поддерживают.

Настройка

Шаги

Список, который вы собираете в редакторе шагов: перетаскивание меняет порядок, выбор действия открывает нужные поля. До 50 шагов. Начните шагом navigate и закончите шагом validate.

Размер окна

По умолчанию 1920 × 1080. Ширина — от 320 до 3840, высота — от 240 до 2160. Задайте размер телефона, если вам важен мобильный сценарий: адаптивная вёрстка может прятать кнопку, которую ждёт ваш селектор.

User agent

По умолчанию пусто — браузер отправляет собственный. Задайте свою строку (до 500 символов), если сайт принимает значение по умолчанию за бота или если вы хотите узнавать свой мониторинговый трафик в логах.

Скриншот при ошибке

Включён по умолчанию. При падении шага сохраняет PNG всей страницы — см. выше, куда попадает этот файл и почему пока на него не стоит рассчитывать.

Интервал и таймаут

300 и 60 секунд — нижние границы, ниже форма опуститься не даст. Поднимайте таймаут, если сценарий действительно длинный: вместе с ним растёт бюджет каждого шага.

Размер окна, user agent и скриншот при ошибке спрятаны под переключателем «дополнительные параметры» под редактором шагов.

О чём стоит знать

Честные замечания о том, что ещё не доделано, — чтобы вы не потратили на это вечер:

  • Поле «Scroll X» в редакторе шагов игнорируется. Шаг прокрутки использует только координату Y; если задать один X, страница прокрутится вниз до конца.
  • Проверка no_console_errors ничего не делает. Ошибки консоли собираются, но проверку не роняют.
  • Прокрутка к несуществующему селектору проходит молча. Это не способ убедиться, что элемент есть, — для этого используйте element_exists.
  • Ожидание смены адреса поддерживается проверяющим кодом, но поля в редакторе шагов для него нет: добраться до него можно только через REST API. В форме вместо этого дождитесь селектора.
  • Таймаут отдельного шага задаётся через API полем timeout_ms (в миллисекундах). Поле timeout, которое API тоже принимает, проверяющий код не читает — значение в нём молча игнорируется.
  • Скриншоты нельзя посмотреть из интерфейса, как описано выше.

Ключевые возможности

  • Ваш сценарий проходит настоящий headless-браузер Chromium, поэтому JavaScript, редиректы и клиентская отрисовка ведут себя так же, как у пользователя
  • Двенадцать действий шага и девять типов проверок, собираемых в редакторе перетаскиванием, а не скриптом
  • Каждый прогон начинается с чистого браузера — никаких оставшихся cookie и сессий между проверками
  • Ошибка называет сломавшийся шаг и считает, сколько шагов прошло до него
  • Переходы разрешены только на публичные адреса HTTP и HTTPS, поэтому монитор нельзя направить на внутреннюю инфраструктуру
  • Границы интервала и таймаута выставляются за вас, так что браузерную проверку нельзя поставить в расписание как обычный HTTP-пинг

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

Какие протоколы можно мониторить?

PingZen поддерживает 23 протокола: HTTP/HTTPS, WebSocket (WS/WSS), TCP, UDP, ICMP Ping, gRPC, DNS, WHOIS, TLS/SSL сертификаты, Email (SMTP/IMAP/POP3), FTP/FTPS, DNSBL, PageSpeed, SOCKS5, MTProxy, API Check и Transaction. Вы можете мониторить сайты, API, серверы, базы данных и любые сетевые сервисы.

Как быстро приходят оповещения?

Telegram оповещения доставляются в течение 1-2 секунд после обнаружения. Slack и Discord уведомления приходят практически мгновенно. Вы можете настроить несколько каналов оповещений для резервирования.

Можно ли организовать мониторы по проектам?

Да! PingZen поддерживает рабочие пространства, которые позволяют организовать мониторы по проектам, окружениям или командам. Каждое рабочее пространство может иметь свои настройки оповещений и участников.

Есть ли API для автоматизации?

Абсолютно. PingZen предоставляет полный REST API с OpenAPI документацией. Вы можете создавать, обновлять и удалять мониторы программно.

Как работают статус-страницы?

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

Что происходит, если я достигну лимита мониторов?

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

Готовы перестать пропускать даунтаймы?

Присоединяйтесь к тысячам команд, которые доверяют PingZen. Настройка за 30 секунд.