Коротко: Gotcha — self-hosted observability (ошибки, аптайм, трейсы, метрики, профили) в одном Go-бинарнике на PostgreSQL и ClickHouse; совместим с Sentry SDK.
Gotcha — это self-hosted observability-платформа: трекинг ошибок, мониторинг аптайма, распределённый трейсинг, метрики и профилирование. Всё это — один Go-бинарник поверх PostgreSQL и ClickHouse, без Kafka и Redis. Ставится на свой сервер за минуту, данные никуда не уходят. Лицензия Apache-2.0.
Ниже — что это такое, как поднять за минуту и почему стоит потыкать уже сегодня.
Поставить за минуту
Нужен только Docker и Docker Compose. Три команды:
git clone https://gitflic.ru/project/otezvikentiy/gotcha.git
cd gotcha
docker compose up -dПоднимутся три контейнера: само приложение (в режиме --mode=all), PostgreSQL и ClickHouse. Приложение слушает http://localhost:59080. Проверить готовность:
curl -sf http://localhost:59080/healthz
# {"clickhouse":"ok","postgres":"ok"}Дальше открываете /register, создаёте первого пользователя (он становится администратором инстанса), и на онбординге одной формой заводите организацию и первый проект. Минимальные требования — Linux и 2 ГБ оперативной памяти.
Подключить приложение — это просто смена DSN
Gotcha принимает данные по протоколу приёма штатных Sentry SDK. Если у вас уже настроен Sentry SDK — переезд сводится к смене DSN. На странице Setup проекта берёте DSN и вставляете в инициализацию SDK. Пример на Python:
import sentry_sdk
sentry_sdk.init(
dsn="<DSN вашего проекта в Gotcha>",
environment="production",
traces_sample_rate=0.2,
)Кидаете тестовую ошибку — и она появляется в разделе «Проблемы» через секунды:
try:
raise RuntimeError("Gotcha test error")
except Exception:
sentry_sdk.capture_exception()Готовые сниппеты есть для PHP (в том числе Laravel), Node, браузера, Python и Go. Метрики принимаются по OTLP (POST /v1/metrics), профили — по pprof (POST /profiles/pprof).
«Проблемы»: ошибки автоматически группируются — с уровнями, трендом, статусами и назначением ответственного.
Что получаете из коробки
Ошибки
События по Sentry-протоколу автоматически группируются в issues по fingerprint: одинаковые по сути ошибки (user 42 not found и user 43 not found) схлопываются в одну проблему. Стектрейсы с разделением на свой и библиотечный код, breadcrumbs, tags, contexts. Фильтры по статусу, уровню, окружению и периоду; resolve / ignore / назначение на человека; ссылка на связанный трейс.
Производительность и трейсинг
Транзакции и спаны — через тот же SDK. По каждому эндпоинту: пропускная способность, задержки p50/p75/p95/p99, доля ошибок и Apdex. Есть автоматический детект проблем: N+1-запросы, медленные запросы к БД, HTTP-флуды. Водопад трейса показывает дерево спанов с подсветкой ошибочных. Из браузера собираются Web Vitals (LCP, INP, CLS, FCP, TTFB). Отдельно работает детектор регрессий производительности — сравнивает свежее окно с baseline за 7 дней.
Эндпоинты с перцентилями задержек, долей ошибок и Apdex по каждому маршруту.
Метрики
Приём по OTLP: counters (sum), gauges и гистограммы (p50/p95/p99). Лейблы берутся из ресурсных атрибутов OpenTelemetry, графики строятся по периодам, на пороговые правила вешаются алерты.
Метрики по типам: gauge, histogram, sum.
Аптайм
Четыре типа проверок: HTTP (метод, ожидаемый статус, проверка тела, срок SSL-сертификата), TCP, DNS и Heartbeat (когда пингует уже само приложение — удобно для крон-задач). Проверки можно гонять из встроенного региона и из удалённых probe-ов с консенсусом any / majority / all. Инциденты с историей, публичные статус-страницы без логина, окна планового обслуживания (в них уведомления глушатся).
«Мониторы»: аптайм, средняя задержка и доступность за 24 часа по каждому сервису.
Профилирование
CPU и flame graph — из Sentry profiling payloads и напрямую из pprof. Flame graph в виде icicle с детерминированными цветами по функциям. Отдельный детектор регрессий профилей ловит момент, когда функция начала «съедать» заметно больше.
Алерты
Три канала доставки: email (по SMTP), webhook (с подписью HMAC-SHA256) и Telegram. Правила по ошибкам: новая проблема, регрессия (переоткрытие решённой), спайк по порогу за окно; плюс отдельные правила по метрикам (avg / p95 / … больше порога за окно) с гистерезисом восстановления.
Приватность по умолчанию
Для телеметрии это редкий акцент — а зря: в трейсах и ошибках оседают самые чувствительные данные. В Gotcha защита включена сразу:
- PII-скрабинг на приёме: IP и email обнуляются до записи в ClickHouse; значения по ключам вроде
password,token,authorization,secret,credit_cardредактируются в tags, contexts, стектрейсах и данных спанов. - SSRF-защита: исходящие вебхуки и аптайм-проверки по умолчанию не ходят на приватные адреса (127.0.0.1, 192.168.x.x и подобные).
- No phone-home: Gotcha не отправляет разработчикам никакой аналитики и телеметрии.
- Анонимные внешние уведомления: в Telegram и webhook по умолчанию уходит только ссылка, без текста ошибки (важно с учётом 152-ФЗ и того, что серверы мессенджеров вне РФ).
- Права субъекта: владелец организации может выгрузить или удалить данные субъекта по user_id или email.
Как масштабируется
Пока нагрузка небольшая — хватает одного процесса --mode=all. Когда вырастет, тот же бинарник запускается в узких ролях: ingest (приём данных), web (интерфейс), uptime (проверки и вотчдоги), probe (удалённая проба — только исходящий HTTP, без доступа к базе). Retention настраивается по каждому типу сигнала отдельно; дефолты: события 90 дней, спаны и метрики — 30, профили — 7 (они самые тяжёлые).
Зрелость и стек
Стек: Go, PostgreSQL, ClickHouse — без Kafka и Redis. Интерфейс серверный (templ + htmx), почти без тяжёлого фронтенда. Это первый публичный self-hosted-релиз; проект прошёл несколько раундов security- и privacy-аудита и покрыт сотнями тестов, в том числе интеграционными на реальных контейнерах Postgres и ClickHouse. Лицензия Apache-2.0.
Попробовать
Всё, что нужно для теста, — сервер с Docker и три команды из начала статьи. Разверните, направьте один SDK на новый DSN и посмотрите, как первая ошибка прилетает в «Проблемы».
- Сайт продукта: getgotcha.ru
- Исходники: GitFlic · зеркало GitHub
- Чат: t.me/getgotcha · новости: t.me/gotcha_news
- Облачная версия в работе — записаться в лист ожидания можно на сайте.


Комментарии