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

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

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

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

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

Сервисы без веб-интерфейса

База данных на 5432, Redis на 6379, брокер сообщений на 5672, SSH на 22, игровой сервер, внутренний бинарный протокол. Запрашивать нечего и статус-страницы нет — но слушатель либо принимает соединение, либо нет, и обычно именно об этом вы и хотите узнавать первым.

:22:5432:6379

Сервисы, которые говорят только по UDP

NTP на 123, SNMP на 161, порты VPN и игровых запросов вообще не отвечают на TCP-соединение, поэтому UDP-монитор с правильной нагрузкой — единственный способ их увидеть. DNS на 53 слушает и TCP тоже, но голое соединение туда говорит только то, что порт открыт.

TCPUDP:123

Правило файрвола, проброс порта или туннель, которые вы только что поменяли

Проверка из региона PingZen видит порт так же, как его видит внешний пользователь, и ловит случай, когда сервис работает прекрасно, а что-то перед ним никого не пускает. Чтобы посмотреть на тот же порт изнутри, запустите монитор с приватной пробы.

:5432

Подтвердить, что слушатель поднялся после деплоя или перезагрузки

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

:22:22SSH-2.0-OpenSSH_9.6

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

Проверка порта говорит, что дверь открывается. Что за ней — она не говорит:

Что нужно узнатьЧто использовать
Работает ли веб-сервис на этом порту? TCP-проверка на 8080 проходит, пока приложение отвечает 500 на каждый запросМонитор HTTP / HTTPS
Скоро ли истечёт сертификат? TCP-проверка вообще не начинает TLS и остаётся зелёной до того дня, когда сертификат умрётМонитор TLS/SSL-сертификата
Доступна ли машина вообще, когда никакого осмысленного порта нет?Монитор Ping (ICMP)
Возвращает ли DNS-сервер правильные записи? UDP-проверка на 53 доказывает только то, что кто-то ответил, но не то, что он сказалМонитор DNS
Ходит ли почта? Открытый порт 25, 587, 993 или 995 ничего не говорит про вход, STARTTLS и почтовый ящикМонитор SMTP, IMAP или POP3
Проксирует ли прокси на самом деле? TCP-проверка на 1080 доказывает, что порт открыт, а не то, что работают рукопожатие, логин-пароль и исходящий каналМонитор SOCKS5 или монитор MTProxy
Поднимается ли WebSocket и ходят ли по нему сообщения? TCP-соединение с 443 ничего не говорит про рукопожатиеМонитор WebSocket
Жива ли задача или устройство, до которых из интернета не достучаться?Монитор Heartbeat — задача сама зовёт его

Почему TCP и UDP — это не одна и та же проверка

TCPUDP?

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

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

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

Что делает TCP-проверка

  1. Открывает соединение с хостом и портом.
  2. Записывает время установки соединения как время отклика.
  3. По желанию читает баннер — приветствие, которое многие сервисы шлют сразу после подключения, например строку с версией SSH или SMTP.
  4. Закрывает соединение. Монитор ничего не отправляет сервису: даже при чтении баннера он только слушает.

Если чтение баннера включено, монитор читает до 1024 байт, декодирует их как текст и сохраняет вместе с проверкой. Баннера он ждёт не дольше 5 секунд и меньше, если от таймаута монитора осталось мало, — но не меньше одной секунды.

Баннер остаётся справочной информацией, пока вы не зададите ожидаемое ключевое слово. С ключевым словом проверка проходит только тогда, когда оно встречается в тексте баннера, с точным совпадением, включая регистр. Отсутствующий баннер, пустой баннер, неудачное чтение или другое содержимое одинаково красят проверку в красный. Без ключевого слова непрочитанный баннер ничего не ломает: проверка проходит по одному факту соединения, а баннер просто отсутствует.

Что делает UDP-проверка

  1. Резолвит имя хоста. У этого шага свой предел — 5 секунд или таймаут монитора, если он меньше.
  2. Отправляет одну датаграмму с полезной нагрузкой.
  3. Ждёт ответ до истечения таймаута, если ожидание не выключено.
  4. По желанию сверяет ответ с ожидаемой строкой и записывает, сколько байт пришло.

Если нагрузка не задана, монитор выбирает её по порту:

ПортЧто отправляется по умолчанию
53 (DNS)Настоящий DNS-запрос — запись A для example.com
123 (NTP)Стандартный клиентский пакет NTP
161 (SNMP)Те же четыре байта PING — SNMP нужна ваша community string, поэтому здесь задайте свою нагрузку
Любой другой портЧетыре байта PING — это заглушка, а не протокол

Для всего, кроме DNS и NTP, рассчитывайте писать нагрузку самостоятельно. Сервис сам решает, что достойно ответа, и заглушка по умолчанию обычно им не является.

UDP-монитору нужен явный порт в адресе. Никакого порта по умолчанию не подставляется: адрес без порта сразу проваливает проверку с соответствующим сообщением, потому что угаданный порт молча мониторил бы не то.

Если выключить ожидание ответа

У UDP есть режим «отправил и забыл»: датаграмма ушла из сокета — проверка считается успешной. Стоит понимать, что это даёт. Это доказывает, что имя хоста разрезолвилось и пакет отдан в сеть. Про сервис на той стороне это не доказывает вообще ничего — его могли выключить месяц назад. Такой монитор практически никогда не покажет аварию, так что считайте его тестом отправки, а не мониторингом доступности.

Что означает молчание

Таймаут — единственный результат, который на двух протоколах читается по-разному, и полезно понимать, с каким молчанием вы имеете дело.

В TCP молчание нетипично. Живой хост, на котором порт никем не занят, обычно сразу отказывает в соединении, и монитор записывает этот отказ. Молчание вместо отказа обычно значит, что файрвол не отклоняет пакеты, а выбрасывает их, — или что самого хоста больше нет.

В UDP молчание — обычный способ вас проигнорировать. Ответа нет — значит, сервис лежит, или файрвол выбросил запрос, или ответ потерялся на обратном пути, или сервис просто не счёл вашу нагрузку достойной ответа. Различить это монитор не может, поэтому UDP-монитор с таймаутом говорит «ответа нет», а не «сервис лежит». Иногда операционная система всё же получает ICMP-сообщение о недоступности порта — тогда проверка падает с этой ошибкой, а не по таймауту, но дойдёт ли такое сообщение, решает сеть по пути.

Практический вывод такой: UDP-монитор достоверен ровно настолько, насколько правильна отправляемая нагрузка. Угадали с нагрузкой — получили настоящую проверку. Не угадали — получили вечную аварию на здоровом сервисе.

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

Состояния деградации у этих мониторов нет. Порогов по времени отклика у TCP и UDP тоже нет — результат либо «работает», либо «не работает», либо «таймаут».

РезультатСтатус
TCP: соединение принято (и ключевое слово в баннере совпало, если оно задано)UP
TCP: в соединении отказаноDOWN
TCP: хост не резолвится, маршрута нет или другая ошибка соединенияDOWN
TCP: ключевое слово задано, а баннер отсутствует, пуст, не читается или другойDOWN
UDP: ответ пришёл (и содержит ожидаемый текст, если он задан)UP
UDP: ответ пришёл, но ожидаемого текста в нём нетDOWN
UDP: порт не указан или вне диапазона, имя хоста не резолвится, порт сообщён как недоступныйDOWN
Любой протокол: до истечения таймаута ничего не произошлоTIMEOUT

DOWN и TIMEOUT считаются простоем и открывают инцидент — после порога подтверждения, по умолчанию это три неудачные проверки подряд, чтобы один потерянный пакет никого не будил.

Настройки

Адрес

Хост и порт в виде example.com:5432. Схема принимается и отбрасывается (tcp://, udp://), IPv6 пишется в квадратных скобках: [2001:db8::1]:5432. Порт живёт только в адресе — у TCP-монитора отдельное поле «Порт» просто удобный способ править часть :port этого адреса.

Порт

Для TCP пропущенный порт означает 80 — вряд ли вы имели в виду это, так что указывайте его. Для UDP порт обязателен и должен быть от 1 до 65535; UDP-монитор без порта намеренно проваливает каждую проверку.

Таймаут

Сколько может длиться одна проверка, прежде чем её запишут как таймаут. По умолчанию пять секунд. Он покрывает установку соединения в TCP, а в UDP — разрешение имени и ожидание ответа.

Чтение баннера и ожидаемый баннер (TCP)

По умолчанию выключено. Первая настройка включает чтение баннера и сохраняет то, что сказал сервер; вторая задаёт ключевое слово, которое в баннере должно быть. Берите слово, которое здоровый сервис печатает всегда, а сломанный — никогда.

Полезная нагрузка (UDP)

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

Ожидание ответа и ожидаемый ответ (UDP)

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

В форме TCP есть поле «Ожидаемый ответ»: если его заполнить, проверка читает баннер и требует в нём этот текст; если оставить пустым — проверяется только то, что порт принимает подключения. Нагрузки UDP и её ожидаемого ответа в форме по-прежнему нет — их задают через REST API или инструменты MCP на том же мониторе, который вы создали в интерфейсе.

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

  • Один тип монитора на любой порт TCP или UDP, на цель ничего ставить не надо
  • TCP записывает время установки соединения и, по запросу, баннер сервера
  • Необязательное ключевое слово в баннере для TCP и ожидаемый текст ответа для UDP — несовпадение проваливает проверку
  • Готовые UDP-нагрузки для DNS и NTP, для всего остального — своя нагрузка
  • Отказ, таймаут и недоступный порт записываются как разные ошибки, поэтому на странице монитора видно, что именно произошло

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

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

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 секунд.