1.0 — первый стабильный релиз

Ошибки, трейсы, метрики, логи и аптайм — на вашем сервере

Self-hosted observability в одном лёгком Go-бинарнике. Совместим со штатными Sentry SDK и OTLP. Открытый код, Apache-2.0.

$ git clone https://gitflic.ru/project/otezvikentiy/gotcha.git
$ cd gotcha
$ docker compose up -d

Поменяйте DSN в вашем Sentry SDK — и первая ошибка прилетит через секунды.

Gotcha — self-hosted платформа наблюдаемости в одном Go-бинарнике: трекинг ошибок, распределённый трейсинг, метрики, логи, профилирование, мониторинг аптайма и серверов — всё на вашем сервере. Совместим со штатными Sentry SDK и принимает OTLP, поэтому переезд с облака занимает столько же времени, сколько смена DSN — в том числе срочный, когда доступ к прежнему сервису закончился не по вашему решению. Интерфейс, уведомления и документация — полностью на русском и английском. Открытый код, лицензия Apache-2.0.

Обзор: всё сломанное на одной шкале

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

  • Хосты, мониторы аптайма, метрики, SLO, регрессии транзакций и профилей — в одном списке
  • Три плитки состояния: аптайм за окно, хосты за порогом, новые проблемы за сутки
  • Каскадный отказ свёрнут в одну карточку с составом, а не рассыпан на двадцать строк
  • Деплои за окно — рядом, чтобы регрессия сразу получила подозреваемого
Подробнее в документации →
Экран «Обзор»: плитки состояния, открытые группы инцидентов и лента по шести источникам

Ошибки и их разбор

Приём событий по протоколу Sentry SDK, автоматическая группировка в проблемы и страница разбора, на которой видно всё об одной ошибке сразу.

  • Стектрейсы, breadcrumbs, tags и contexts; полные детали запроса — метод, URL, параметры и заголовки, очищенные от PII
  • Автоматическая группировка, фильтры, ответственный и статусы «решено» и «игнорируется»
  • На странице проблемы: график частоты, первое и последнее появление, счётчик событий, копирование в Markdown
  • Логи вокруг события — одной ссылкой со страницы ошибки: что писало приложение до и после
  • Выгрузка событий группы в CSV, JSON или NDJSON прямо из карточки проблемы
Подробнее в документации →
Список проблем в Gotcha: уровни, тренд, ответственные Разбор проблемы: ответственный, частота за период, кнопки «Пометить решённой» и «Экспорт событий группы», ссылка на логи вокруг события

Логи

Приём по OTLP/HTTP и построчным JSON — без отдельного стека для логов и без второго интерфейса, в который надо переключаться.

  • Полнотекстовый поиск по сообщению плюс фасеты: severity, сервис, окружение
  • Гистограмма по уровням за период: видно, когда началось, ещё до чтения строк
  • Три склейки: логи вокруг события ошибки, логи трейса, логи хоста
  • Своя квота и свой срок хранения — логи не съедают бюджет ошибок и метрик
Подробнее в документации →
Экран логов: фасеты по уровню, сервису и окружению, гистограмма за период и лента строк

Производительность и профили

Распределённые трейсы и транзакции, карта зависимостей и flamegraph-профили. Перф-проблемы детектятся по имени: N+1, медленный запрос, HTTP-флуд.

  • Детекторы называют проблему и объясняют, как чинить — с полным SQL и локацией в коде
  • Web Vitals: LCP, INP, CLS, FCP, TTFB
  • Карта зависимостей: базы, кеши и внешние вызовы — p50/p95 и доля ошибок из уже собранных трейсов
  • Flamegraph из Sentry-профилей и pprof, детект регрессий профилей
  • Маркеры деплоев на графиках: регрессия после релиза получает пометку «после деплоя vX»
Производительность →Зависимости →Профили →
Транзакции проекта: трафик, перцентили p50-p99, доля ошибок и Apdex по каждому эндпойнту Карта зависимостей: базы, внутренние сервисы и вебхуки с p50, p95 и долей ошибок Flamegraph профиля: доля времени по кадрам стека

Метрики, хосты и рецепты

Метрики приложений по OTLP, системные метрики серверов и готовые рецепты для типовых сервисов: конфиг коллектора выдаётся с уже подставленным ключом проекта.

  • Хосты: CPU, память, диск, сеть, load average и процессы — четыре встроенных порога из коробки
  • Рецепты для PostgreSQL, MariaDB, nginx, Redis и Docker: конфиг коллектора, индикатор «данные пошли» и рекомендованные пороги одной кнопкой
  • Пороги переопределяются метками окружения и роли, а не только глобально: prod и staging живут по разным правилам
  • Нативный агент: один бинарь, установка одной командой, работает в закрытых сетях
  • Защита от взрыва кардинальности — разросшийся набор меток не роняет хранилище
Метрики →Хосты →Рецепты →
Хосты под наблюдением: статус, окружение, роль, CPU, память, диск и load average Карточка хоста: метки окружения и роли, версия агента, открытый критичный инцидент по диску и график CPU с маркерами деплоев Рецепты мониторинга: PostgreSQL, MariaDB, nginx и Redis с индикатором «данные приходят» и счётчиком созданных порогов

Аптайм и статус-страницы

HTTP-чеки из встроенного локального региона и удалённых зондов, а у каждого проекта — свой публичный адрес состояния.

  • Разбивка задержек по фазам: DNS → TCP → TLS → TTFB
  • Ретраи на чек и окна обслуживания — без ложных инцидентов
  • Публичная статус-страница проекта с историей за 90 дней и лентой инцидентов
  • Адрес страницы неизменен на всё время её жизни, старые ссылки отвечают 301
  • Удалённые зонды (--mode=probe) — проверка снаружи вашего периметра
Аптайм →Статус-страницы →
Мониторы аптайма: тип проверки, доступность за 24 часа, средняя задержка и история проверок Публичная статус-страница: сводный статус, доступность за 90 дней по каждому сервису и лента инцидентов

Оповещения, SLO и группы инцидентов

Доставка в email, вебхук и Telegram — на русском или английском, по выбору оператора. Каскадный отказ приходит одним инцидентом, а не сорока.

  • Правила на новые проблемы, спайки, пороги метрик, перф- и uptime-регрессии
  • Группы инцидентов: корневой отказ в шапке, вызванное им — внутри, с бейджами «молчит — уведомляет корень» и «подавлен: родитель недоступен»
  • SLO и бюджеты ошибок: двухоконный burn-rate алерт будит, только когда бюджет реально горит
  • Эскалация по ступеням: круг получателей расширяется, пока инцидент не подтверждён
  • Окна обслуживания на весь проект и тест канала в один клик — с причиной ошибки, если доставка не прошла
Оповещения →SLO →Группы инцидентов →
Правила алертов: условия срабатывания, каналы доставки и состояние правила SLO проекта: тип, цель, достижение и остаток бюджета ошибок

Ваши данные и ваш периметр

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

  • Скрабинг PII на стороне сервера включён по умолчанию: обнуление IP и email, redaction по ключам
  • SSRF-защита исходящих запросов вебхуков и uptime-чеков — тоже из коробки
  • Выгрузки в CSV, JSON и NDJSON: фоном, с фильтрами по времени и окружению, с маскированием PII по умолчанию
  • У каждого DSN-ключа свой тип — browser, server, agent: публично раскрытый browser-ключ не зарегистрирует хост и не отправит маркер деплоя
  • Готовый файл выгрузки приходит письмом — вопрос «а как отдать данные в свой пайплайн» закрыт вместе с вопросом вендор-лока
Выгрузки →Ключи приёма →Приватность →
Выгрузки: заявки на экспорт проблем и событий в CSV, JSON и NDJSON Ключи приёма проекта: три DSN со скоупами БРАУЗЕР, СЕРВЕР и АГЕНТ, каждый отзывается отдельно

Доступы: SSO и RBAC

Мультитенантные организации, команды и роли; вход через SSO — каждый провайдер включается и настраивается независимо.

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

Эксплуатация и контракт 1.0

С 1.0 контракт совместимости заморожен: то, на что вы завязались, не переедет в патч-релизе. Всё, что это нарушает, ждёт мажорной версии.

  • Заморожены имена переменных окружения, адреса приёма и форматы тел, схема миграций, формат бэкапов, имена self-метрик, тело исходящего вебхука, контракт агента и адреса опубликованных статус-страниц
  • Намеренно не покрыты: внутренние Go-пакеты, адреса и вёрстка страниц интерфейса, схема таблиц PostgreSQL и ClickHouse, состав колонок выгрузок и формулировки собственных логов
  • Маркеры деплоев с версией, окружением, составом изменений и ссылкой на прогон CI
  • Откат релиза без восстановления из бэкапа; прерванную миграцию поднимает --migrate-force
  • Self-monitoring: метрики gotcha_*, раздельные /healthz и /readyz, квоты и retention по каждому типу сигнала
Политика версий →Обновление →Self-monitoring →
Деплои проекта: версия, окружение, время, состав изменений и ссылка на прогон CI Использование и лимиты организации: месячные квоты по событиям, транзакциям, метрикам, профилям и логам

Как устроено

Один Go-бинарник, PostgreSQL + ClickHouse. Режимы --mode=ingest|web|uptime|probe|all для масштабирования. Без Kafka и Redis. Настраиваемая retention по каждому типу сигнала.

Системные требования

Один сервер, три процесса (приложение, PostgreSQL, ClickHouse). Единственная зависимость — Docker и Docker Compose.

Минимум 2 vCPU · 2 ГБ RAM · 20 ГБ SSD личные проекты, стейджинг
Рекомендуется 4 vCPU · 4 ГБ RAM · 40 ГБ SSD+ продакшен с реальным трафиком

ОС: Ubuntu 22.04/24.04, Debian 12 или AlmaLinux/Rocky/RHEL 9/10 · x86-64

Подробнее — установка

Открытый код

Лицензия Apache-2.0. Стек: Go, PostgreSQL, ClickHouse.

GitHub GitFlic ♥ Поддержать

Кто может отключить ваш инстанс

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

  • Apache-2.0: право запускать, менять и форкать код остаётся у вас независимо от того, что дальше будет с проектом
  • Данные лежат в вашем периметре, выгрузка в CSV, JSON или NDJSON доступна в любой момент — дверь наружу открыта и от нас тоже
  • Это не только ошибки: трейсы, метрики, логи, профили и аптайм в одном месте, поэтому следующий сигнал не означает следующего сервиса

Установить за минуту

Платная установка и поддержка

Gotcha бесплатен, но можно не тратить время команды: установлю под ключ, перенесу с Sentry или GlitchTip, возьму инстанс на поддержку. Консультации — письменно, без созвонов.

Услуги и цены

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

Что такое 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 и заменить DSN в том же официальном Sentry SDK — код приложения переписывать не нужно, события пойдут на ваш сервер. Инстанс работает на вашем железе: ключи приёма выпускаете вы, аккаунты заводите вы, лицензия Apache-2.0, поэтому доступ к инструменту не зависит от решения внешней компании. Историю событий из заблокированного аккаунта перенести нельзя — остаётся только то, что успели выгрузить, новые события копятся с момента смены DSN. Пошаговый разбор — в гайде «Как перейти с 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-страницами. Поверх сигналов — SLO с бюджетами ошибок, карта зависимостей, маркеры деплоев и эскалация уведомлений.

Умеет ли Gotcha мониторить сами серверы — CPU, память, диск?

Да. Раздел «Хосты» показывает CPU, память, диск, сеть, load average и процессы каждого сервера; четыре встроенных порога открывают инциденты из коробки. Данные шлёт нативный агент gotcha-agent — один бинарь, ставится одной командой прямо с вашего инстанса и работает в закрытых сетях — либо стандартный OpenTelemetry Collector.

Можно ли собирать логи в Gotcha?

Да. Логи принимаются по OTLP/HTTP и построчным JSON, хранятся с собственной квотой и сроком хранения. Экран логов даёт полнотекстовый поиск, фильтры по severity, сервису и окружению, а склейка показывает «логи вокруг события» со страницы ошибки, логи трейса и логи хоста.

Есть ли готовые рецепты мониторинга PostgreSQL, nginx, Redis?

Да. Раздел «Рецепты» даёт готовое подключение PostgreSQL, MariaDB, nginx, Redis и Docker: конфиг OpenTelemetry-коллектора с уже подставленным ключом проекта, индикатор «данные приходят», преднастроенные графики и рекомендованные пороги, создающиеся одной кнопкой.

Как развернуть 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.

Что вы сломаете следующим релизом?

С 1.0 контракт совместимости заморожен: имена переменных окружения, адреса приёма и форматы тел запросов, схема миграций, формат бэкапов, имена self-метрик без пометки «временная», тело исходящего вебхука, контракт агента и адреса уже опубликованных статус-страниц меняются только назад совместимо. Всё, что это нарушает, ждёт мажорной версии. Что в обещание намеренно не входит и сроки депрекации — на странице политики версионирования.

Как вынести данные наружу?

Фоновые выгрузки групп ошибок или сырых событий в CSV, JSON или NDJSON, с фильтрами по времени и окружению и маскированием PII по умолчанию. Готовый файл приходит письмом и скачивается со страницы выгрузок.

Gotcha Cloud

Тот же продукт и та же модель данных, только инстанс держим мы. Переезд возможен в обе стороны: из облака к себе и обратно, без переписывания интеграций — контракт приёма один и тот же.

  • Обновления, бэкапы и мониторинг самого инстанса — на нас
  • Данные остаются в российской юрисдикции
  • Переезд к себе в любой момент: тот же формат бэкапа

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

Написать про Cloud