Пробы (удалённые регионы)

Проба — это отдельный процесс gotcha, запущенный в режиме --mode=probe, который выполняет проверки мониторов из своей точки сети (другой город, дата-центр, облако) и присылает результаты в центральный сервер. Пробы нужны, чтобы отличить локальную сетевую проблему рядом с сервером Gotcha от реальной недоступности сервиса, и чтобы использовать региональный консенсус (см. Аптайм) для мониторов.

У инсталляции всегда есть встроенный локальный регион (проверки выполняются самим сервером); пробы добавляют к нему дополнительные регионы.

Управление пробами — страница /orgs/{id}/probes, доступна только владельцу/админу организации.

Регистрация пробы

  1. Откройте «Настройки» → «Организация» → «Пробы».
  2. В форме внизу страницы укажите:
    • Имя — понятное имя пробы (например, «Московская проба»), до 40 символов;
    • Регион — идентификатор региона, который увидят мониторы при выборе регионов (например, ru-msk), до 40 символов. Один и тот же регион можно использовать для нескольких проб — это позволяет масштабировать один регион на несколько инстансов пробы.
  3. Нажмите «Создать пробу».

Токен пробы показывается один раз, сразу после создания, прямо на странице — сохраните его сейчас, второй раз он не будет показан (в базе хранится только его хеш). Там же приводится готовая команда запуска, подставленная под адрес вашего сервера и этот токен.

Запуск пробы

Пробе не нужен доступ ни к PostgreSQL, ни к ClickHouse — только исходящий HTTP(S) к центральному серверу. Обязательны две переменные окружения:

  • GOTCHA_PROBE_SERVER_URL — базовый адрес центрального сервера Gotcha (тот же, что GOTCHA_BASE_URL на сервере), например https://gotcha.example.com;
  • GOTCHA_PROBE_KEY — токен, полученный на шаге регистрации.

Пример запуска через Docker (именно такая команда, с подставленными вашими значениями, показана на странице «Пробы» после создания):

docker run -e GOTCHA_PROBE_SERVER_URL=https://gotcha.example.com \
  -e GOTCHA_PROBE_KEY=6e1f2a...af92 \
  <gotcha-image> --mode=probe

Подставьте вместо <gotcha-image> образ, которым запущен ваш инстанс. Публикуемого образа gotcha не существует: docker compose собирает его локально и называет по имени папки, поэтому имя обычно выглядит как gotcha-gotcha. Точное имя покажет:

docker compose images gotcha

На машине пробы этого образа ещё нет — перенесите его (docker save / docker load), либо соберите там из исходников, либо запускайте бинарником, как показано ниже.

Тот же процесс можно запустить и без Docker — собранным бинарником gotcha:

GOTCHA_PROBE_SERVER_URL=https://gotcha.example.com \
GOTCHA_PROBE_KEY=6e1f2a...af92 \
./gotcha --mode=probe

Проба сама пришлёт свой первый отчёт в центр при старте — на странице «Пробы» появится статус В сети и время последнего отклика. Если проба перестала отчитываться, статус сменится на Не в сети; отозванная проба (кнопка «Отозвать») помечается как Отозван и её токен сразу перестаёт приниматься.

Как регионы попадают в мониторы

После того как проба хотя бы раз вышла на связь, её Регион появляется в списке доступных регионов формы монитора (/projects/{id}/monitors/new и «Редактирование монитора») рядом со встроенным локальным регионом. Отметьте нужные регионы чекбоксами и задайте правило консенсуса (см. Аптайм) — монитор начнёт проверяться параллельно из всех выбранных точек.

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

Что нужно пробе для работы?

Только исходящий HTTP(S) к центральному серверу Gotcha и две переменные окружения — GOTCHA_PROBE_SERVER_URL и GOTCHA_PROBE_KEY. Доступ к PostgreSQL и ClickHouse не нужен, входящие порты открывать не нужно: проба сама ходит к серверу, а не наоборот. Поэтому её можно поставить на самый дешёвый VPS в нужном регионе.

Я потерял токен пробы. Как его восстановить?

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

Можно ли запустить несколько проб в одном регионе?

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

Как понять, что проба жива?

На странице «Настройки» → «Организация» → «Пробы» у каждой пробы виден статус: В сети с временем последнего отклика, Не в сети, если проба перестала отчитываться, или Отозван для отозванных. Первый отчёт проба присылает сразу при старте — ждать долго не придётся.

Проба запущена, но её регион не появляется в форме монитора. Почему?

Регион попадает в список только после того, как проба хотя бы раз вышла на связь. Проверьте статус пробы на странице «Пробы»: если она «Не в сети» — сверьте GOTCHA_PROBE_SERVER_URL (он должен совпадать с GOTCHA_BASE_URL сервера и быть доступным с машины пробы) и токен.

Что дальше