Meet Gotcha
Gotcha is self-hosted observability in one Go binary: error tracking, uptime, tracing, metrics, and profiling. It works with stock Sentry SDKs and accepts OTLP, so moving to your own server takes about as long as swapping the DSN in an SDK you’ve already set up.
Why
Event data — traces, errors, metrics, profiles — is often the most sensitive logging in a system: it can carry user data, internal addresses, and stack traces with secrets in them. Gotcha lets you keep all of that on your own infrastructure, under your own control, instead of a third-party cloud. It’s Apache-2.0 licensed and the source is open.
What’s inside
- Errors — event ingestion via the Sentry protocol, automatic grouping into issues, stack traces, breadcrumbs, tags and contexts.
- Performance — distributed traces and transactions, Web Vitals, performance-issue and regression detection.
- Metrics — ingestion via OTLP, metric queries, threshold-based alerts and incidents.
- Profiling — CPU/flamegraph profiles from Sentry profiling payloads and pprof, with regression detection.
- Uptime — HTTP checks from a built-in region or remote probes, incident detection, public status pages.
- Alerting — delivery via email, webhook, and Telegram.
Architecture
A single gotcha binary with a --mode flag that selects which subsystems
run in a given process: ingest (event ingestion), web (the UI), uptime
(checks), probe (a remote probe), or all — everything at once, the
default for a small self-hosted install. Relational state lives in
PostgreSQL; high-volume event data lives in ClickHouse, with configurable
retention per signal type. It comes up with a single Docker Compose command.
More in the docs and on the install page.