Знакомьтесь, Gotcha
Gotcha — self-hosted observability в одном Go-бинарнике: ошибки, аптайм, трейсы, метрики и профили. Совместим со штатными Sentry SDK и принимает OTLP, так что переезд на свой сервер занимает столько же времени, сколько смена DSN в уже настроенном SDK.
Зачем
Событийные данные — трейсы, ошибки, метрики, профили — часто самые чувствительные логи в системе: в них попадают пользовательские данные, внутренние адреса, стек-трейсы с секретами. Gotcha даёт возможность держать всё это на собственной инфраструктуре, под своим контролем, вместо стороннего облака. Лицензия Apache-2.0, исходный код открыт.
Что внутри
- Ошибки — приём событий по протоколу Sentry, автоматическая группировка в issues, стек-трейсы, breadcrumbs, теги и контексты.
- Производительность — распределённые трейсы и транзакции, Web Vitals, детекция проблем и регрессий производительности.
- Метрики — приём по OTLP, запросы к метрикам, пороговые алерты и инциденты.
- Профилирование — CPU/flame-graph профили из payload Sentry-профилирования и pprof, с детекцией регрессий.
- Аптайм — HTTP-проверки из встроенного региона или удалённых проб, детекция инцидентов, публичные status-страницы.
- Алерты — доставка по email, webhook и Telegram.
Архитектура
Один бинарник gotcha с флагом --mode, который выбирает набор подсистем в
конкретном процессе: ingest (приём событий), web (UI), uptime
(проверки), probe (удалённая проба) или all — всё сразу, стандартный режим
для небольшой self-hosted установки. Реляционное состояние хранится в
PostgreSQL, событийные данные большого объёма — в ClickHouse, с настраиваемой
retention по каждому типу сигнала. Поднимается через Docker Compose за одну
команду.
Подробнее — в документации и на странице установки.