Аптайм
Раздел «Аптайм» следит за доступностью внешних адресов и сервисов через периодические проверки — мониторы. Открывается по значку с активностью в левой рельсе или через /projects/{id}/monitors.
Создание монитора
Список мониторов — /projects/{id}/monitors. Кнопка «New monitor» (видна только владельцу/админу организации) открывает форму /projects/{id}/monitors/new.
В форме сначала выбирается тип проверки вкладками — HTTP, TCP, DNS или Heartbeat. У каждого типа свой набор полей:
| Тип | Что проверяет | Поля |
|---|---|---|
| HTTP | HTTP(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 монитора.
Что дальше
- Пробы — как поднять проверку из другого региона.
- Публичные статус-страницы — витрина состояния для пользователей.
- Окна обслуживания — подавление шума на время плановых работ.
- Оповещения — куда и как приходят уведомления об инцидентах.