Ошибки, аптайм, трейсы, метрики и профили — на вашем сервере
Self-hosted observability в одном лёгком Go-бинарнике. Совместим со штатными Sentry SDK и OTLP. Открытый код, Apache-2.0.
$ git clone git@gitflic.ru:otezvikentiy/gotcha.git
$ cd gotcha
$ docker compose up -dПоменяйте DSN в вашем Sentry SDK — и первая ошибка прилетит через секунды.
Gotcha — self-hosted платформа наблюдаемости в одном Go-бинарнике: трекинг ошибок, распределённый трейсинг, метрики, профилирование и мониторинг аптайма — всё на вашем сервере. Совместим со штатными Sentry SDK и принимает OTLP, поэтому переезд с облака занимает столько же времени, сколько смена DSN. Интерфейс, уведомления и документация — полностью на русском и английском. Открытый код, лицензия Apache-2.0.
Error tracking
Приём событий по протоколу Sentry SDK, автоматическая группировка в issues.
- Стектрейсы, breadcrumbs, tags и contexts
- Полные детали запроса — метод, URL, параметры, заголовки (очищенные от PII)
- Автоматическая группировка, фильтры и назначение issue

Uptime-мониторинг
HTTP-чеки из встроенного локального региона и удалённых зондов (probes).
- Разбивка задержек по фазам: DNS → TCP → TLS → TTFB
- Ретраи на чек и окна обслуживания — без ложных инцидентов
- Публичные статус-страницы с историей 90 дней
- Удалённые probes (--mode=probe)

Performance / tracing
Распределённые трейсы и транзакции, Web Vitals, детект перф-проблем по имени: N+1, медленный запрос, HTTP-флуд.
- Детекторы называют проблему и объясняют, как чинить — с полным SQL и локацией в коде
- Web Vitals: LCP, INP, CLS, FCP, TTFB
- Детект регрессий производительности

Metrics
Приём метрик через OTLP, запросы к метрикам.
- Ingestion через OTLP
- Пороговые алерт-правила и инциденты
- Защита от взрыва кардинальности

Profiling
CPU/flamegraph-профили из Sentry profiling payloads и pprof.
- Flamegraph из Sentry-профилей и pprof
- Детект регрессий профилей

Alerting
Доставка алертов в email, webhook и Telegram — на русском или английском, по выбору оператора.
- Правила на новые issue, спайки, пороги метрик, перф- и uptime-регрессии
- Тест канала в один клик — с причиной ошибки, если доставка не прошла
- Свой Bot API-сервер для Telegram в закрытых сетях

SSO и RBAC
Мультитенантные организации, команды и роли; вход через SSO.
- OIDC (generic), Yandex ID, VK ID
- Организации, команды, роли
- Каждый провайдер настраивается независимо

Privacy by default
Server-side скрабинг PII и SSRF-защита исходящих запросов — включены по умолчанию.
- Обнуление IP/email
- Redaction по ключам
- SSRF-защита webhook/uptime

Эксплуатация без сюрпризов
Gotcha построен для того, кто его обслуживает: следит сам за собой, обновляется в обе стороны и живёт в заданных лимитах.
- Self-monitoring: метрики gotcha_*, раздельные /healthz и /readyz
- Откат релиза без восстановления из бэкапа
- Квоты, rate limit и retention по каждому типу сигнала
- Документированные бэкап, восстановление и обновление

Как устроено
Один Go-бинарник, PostgreSQL + ClickHouse. Режимы --mode=ingest|web|uptime|probe|all для масштабирования. Без Kafka и Redis. Настраиваемая retention по каждому типу сигнала.
Системные требования
Один сервер, три процесса (приложение, PostgreSQL, ClickHouse). Единственная зависимость — Docker и Docker Compose.
ОС: Ubuntu 22.04/24.04 или Debian 12 · x86-64
Частые вопросы
Что такое Gotcha?
Gotcha — self-hosted платформа наблюдаемости в одном Go-бинарнике: трекинг ошибок, распределённый трейсинг, метрики, профилирование и мониторинг аптайма. Всё работает на вашем сервере. Открытый код, лицензия Apache-2.0.
Совместим ли Gotcha со штатным Sentry SDK?
Да. Gotcha принимает события по протоколу Sentry, поэтому достаточно указать в вашем Sentry SDK новый DSN — переезд занимает столько же времени, сколько смена DSN в уже настроенном приложении.
Можно ли перейти с Sentry на Gotcha без изменения кода?
Да. Gotcha принимает события по протоколу приёма Sentry, поэтому переезд сводится к замене DSN в том же официальном Sentry SDK — код приложения переписывать не нужно. Пошаговый разбор — в гайде «Как перейти с Sentry на self-hosted Gotcha».
Нужны ли Gotcha Kafka или Redis?
Нет. Gotcha работает как один Go-бинарник с PostgreSQL и ClickHouse — ни Kafka, ни Redis не требуется. Быстрый старт — docker compose up -d.
Какие сигналы наблюдаемости поддерживает Gotcha?
Ошибки с группировкой в issues, распределённые трейсы и транзакции (включая Web Vitals), метрики по OTLP с пороговыми алертами, CPU/flame-graph профили и мониторинг аптайма с публичными status-страницами.
Как развернуть Gotcha?
Gotcha — это один Go-бинарник, которому нужны PostgreSQL и ClickHouse. Быстрый старт — docker compose up -d. Для масштабирования есть режимы --mode=ingest|web|uptime|probe|all. Без Kafka и Redis.
Как обновлять Gotcha и можно ли откатиться?
Обновление — pull нового образа и перезапуск; миграции применяются автоматически. Схема БД несёт маркер обратной совместимости, поэтому откат на предыдущий релиз возможен без восстановления из бэкапа. Прерванную миграцию восстанавливает флаг --migrate-force. Подробности — на страницах «Обновление» и «Резервное копирование» в документации.
Есть ли у Gotcha русский интерфейс?
Да. Интерфейс, алерты и письма (язык задаётся настройкой GOTCHA_LOCALE) и вся документация доступны полностью на русском и английском.
Под какой лицензией распространяется Gotcha?
Apache-2.0. Исходный код открыт и доступен на GitHub и GitFlic.
Gotcha Cloud — скоро
Облачная версия в работе. Оставьте email, чтобы узнать о запуске.
В лист ожидания