Аптайм

Раздел «Аптайм» следит за доступностью внешних адресов и сервисов через периодические проверки — мониторы. Открывается по значку с активностью в левой рельсе или через /projects/{id}/monitors.

Создание монитора

Список мониторов — /projects/{id}/monitors. Кнопка «New monitor» (видна только владельцу/админу организации) открывает форму /projects/{id}/monitors/new.

В форме сначала выбирается тип проверки вкладками — HTTP, TCP, DNS или Heartbeat. У каждого типа свой набор полей:

ТипЧто проверяетПоля
HTTPHTTP(S)-запрос к URL; успех — код ответа и, опционально, содержимое телаMethod (GET/POST/HEAD), URL, Headers, Body, Expected status (список кодов через запятую; пусто = любой 200–299), Body contains / Body not contains, Follow redirects, SSL alert days
TCPУстанавливается ли TCP-соединение с хостом и портомHost, Port (1–65535)
DNSРезолвится ли имя и совпадает ли значение с ожидаемымHostname, Record type (A/AAAA/CNAME/MX/TXT), Expected value (опционально)
HeartbeatОбратная проверка: не сам Gotcha ходит наружу, а ваше приложение периодически «стучится» по специальному URL. Если стука не было дольше grace-периода — монитор считается упавшимGrace seconds (не меньше 60)

При редактировании существующего монитора тип уже зафиксирован — сменить тип нельзя, только его настройки.

Для Heartbeat-монитора после создания на странице монитора появляется персональный URL вида {base_url}/uptime/hb/{token} и готовый пример cron-строки, дёргающей его через curl с нужным интервалом:

*/5 * * * * curl -fsS https://gotcha.example.com/uptime/hb/6e1f...af92 >/dev/null

Добавьте такую команду в cron/systemd-таймер своего приложения — каждый успешный вызов сбрасывает таймер ожидания.

Общие настройки: интервал, таймаут, пороги

  • Interval — как часто выполняется проверка, секунды (минимум 30).
  • Timeout — сколько ждать ответа, секунды (1–120, обязательно меньше interval).
  • Fail threshold — сколько проверок подряд должны провалиться, чтобы монитор перешёл в down и открылся инцидент.
  • Recovery threshold — сколько успешных проверок подряд нужно, чтобы монитор вернулся в up и инцидент закрылся.
  • Remind every (minutes) — как часто повторять уведомление по всё ещё открытому инциденту (0 — не напоминать).

Пороги считаются независимо по каждому региону — итоговый статус монитора определяется консенсусом (ниже).

Регионы и консенсус

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

Когда регионов больше одного, итоговый статус монитора вычисляется правилом консенсуса:

ConsensusПравилоКогда использовать
anyМонитор down, если упал хотя бы один регионСтрогий режим: любая точка недоступности — уже проблема
majorityМонитор down, если down больше половины определившихся регионовКомпромисс: терпит одиночный региональный сбой
allМонитор down, только если упали все регионыТерпимый режим: тревога только при полном отказе

Важно про majority при чётном числе регионов: если ровно половина регионов down (например, 2 из 4), это тоже засчитывается как down, а не up — намеренный fail-safe, чтобы не оставлять монитор «зелёным», когда половина флота репортит недоступность.

Регион считается «определившимся», только когда он набрал свой fail- или recovery-threshold; до этого он не участвует в подсчёте консенсуса.

Инциденты

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

Инцидент, открывшийся во время активного окна обслуживания, помечается как «в обслуживании» и не порождает уведомление — так плановые работы не создают ложный шум. Обычные инциденты уведомляют через каналы, привязанные к монитору (см. Оповещения).

Список инцидентов монитора — раздел «Incidents» на странице /projects/{id}/incidents, а также таймлайн внизу страницы конкретного монитора.

Страница монитора

Клик по имени монитора в списке открывает /monitors/{id}: текущий статус, uptime% за 24 часа/7 дней/30 дней, график задержек, таблица последних проверок по регионам, таймлайн инцидентов и — для HTTPS-мониторов — срок действия SSL-сертификата. Владельцу/админу здесь же доступны Pause/Resume, Edit и Delete монитора.

Что дальше