GlitchTip
Sentry-kompatibilní error tracking pro dev agenty + prod služby.
| Owner | sentinel |
| Status | running |
| URL | https://errors.studio60.cz ✅ |
| Stack | Docker (web + worker + redis) |
| Compose | /opt/glitchtip/docker-compose.yml (na sentinelu) |
DB
- DB:
glitchtip - User:
glitchtip - Server: sentinel + prod (pg-alfa, port 6432) — viz
infra/db-mapping.md
Health check
Klíčové fakty
- Sentry-API kompatibilní → dev agenti používají standardní
@sentry/node+@sentry/browser - Účel: dát dev agentům error tracking v prohlížeči, sentinel reaguje proaktivně
- Migrace prod DB na pg-alfa proběhla 2026-04-10
Známé issues
- ~~Docker healthcheck "unhealthy"~~ — ✅ OPRAVENO 2026-07-31.
s60-glitchtip-webhlásil unhealthy 3 měsíce (failing streak 301218), protože healthcheck volalwget, který v image není. Ověřeno, co v image je:curl❌,wget❌,nc❌,python3✅ → healthcheck v/opt/glitchtip/docker-compose.ymlpřepnut na:Záloha původního compose:test: ["CMD", "python3", "-c", "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:8000/_health/', timeout=4).status==200 else 1)"]/opt/glitchtip/docker-compose.yml.bak-20260731. Podocker compose up -d web:running/healthy, failing streak 0,/_health/200, ingest ověřen canary POSTem (200). Pozn.: falešně unhealthy kontejner je zrádný i tím, že maskuje skutečný výpadek — 3 měsíce se na ten příznak nedalo spolehnout. - Sentry SDK odmítá UUID DSN ve VŠECH verzích — verifikováno empiricky 2026-05-20 across 5.30.0, 6.19.7, 7.0.0, 7.50.0, 7.100.0, 7.110.0, 7.115.0, 10.46.0:
- DSN regex:
/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)([\w.-]+)(?::(\d+))?\/(.+)/ \w=[A-Za-z0-9_],-chybí → UUID s pomlčkami padá na první pomlčce →console.error('Invalid Sentry Dsn: ...')- Stejný regex od Sentry 5.x až po 10.x — žádná "regression" v 7.115+, nikdy nepodporovalo. (Sentry SaaS používá hex bez pomlček 32-char public_key, GlitchTip clone se rozhodl pro Postgres UUID type → incompat by design.)
- SDK downgrade NEPOMŮŽE (potvrzeno hub deploy
caa4467— pulse pinned@sentry/browser=7.110.0, regex identický, problem persists). - Nelze opravit DB UPDATE —
projects_projectkey.public_keyje Postgresuuidtype, stringuje vždy 8-4-4-4-12 format; DjangoUUIDField.to_pythonpřidá pomlčky zpět i kdyby column byl varchar. - ✅ ŘEŠENÍ (sentinel 2026-07-30, empiricky ověřeno): v DSN použij klíč BEZ POMLČEK (hex32).
Předchozí verze téhle sekce tvrdila, že to nejde — bylo to chybné, nikdy to nikdo netestoval.
Proč to funguje: SDK regex má pro klíč
ŠPATNĚ (SDK odmítne): https://a9802590-96c1-4a8a-825a-ae26e63f9ae7@errors.studio60.cz/2 SPRÁVNĚ: https://a980259096c14a8a825aae26e63f9ae7@errors.studio60.cz/2(\w+)=[A-Za-z0-9_]+→ hex32 projde. GlitchTip si na své straně hex string rozparsuje na totéž UUID (uuid.UUID()pomlčky nevyžaduje), takže lookup projektového klíče sedí. Žádná změna kódu appky, žádný fork, jen hodnota env. Ověřeno:POST /api/2/store/ssentry_key=a980259096c14a8a825aae26e63f9ae7→ HTTP 200, event dosedl jako issue 70 v projektupulse(2026-07-30 05:14Z). ⚠️ Dopad je široký — všech 6 projektů v tabulce níž má UUID klíč s pomlčkami, takže každá appka, která ho má vSENTRY_DSN, do GlitchTipu neposílá nic a v logu má při startuInvalid Sentry Dsn(potvrzeno u pulse prod 2026-07-30). Při onboardingu i auditu dávej hex tvar. - Nouzové alternativy (když by hex tvar někde nešel):
- App-side: vypnout
VITE_SENTRY_DSN=""(žádná client observability, čistá konzole) - App-side: Vite resolve.alias na vlastní DSN parser tolerantní k UUID (monkey-patch před
Sentry.init()) - GlitchTip-side: fork + patch
glitchtip-backend/projects/serializers.pyaby vraceluuid.hex→ high risk (ztráta upstream sync); po nálezu výš není potřeba
- App-side: vypnout
Projects (DSN keys)
| ID | slug | public_key |
|---|---|---|
| 1 | s60-auth | fb395cb3-e576-49a7-a4b6-54b76dc51778 |
| 2 | pulse | a9802590-96c1-4a8a-825a-ae26e63f9ae7 |
| 3 | billit | a81f9e57-2db8-46c0-9591-23cb02c2caa4 |
| 4 | venom | 40da428f-cf4b-4e30-945f-4124b8c3bba3 |
| 5 | badwolf | 34969ed6-25ac-45d0-a5f3-a4627b067735 |
| 6 | s60-mail | 7e308f4b-af87-42bf-9e58-9244d28935c7 |
DSN format: https://<public_key>@errors.studio60.cz/<id>
Users
- libor.webster@gmail.com (id 1, superuser)
- agents@studio60.cz (id 34, normální user)
Onboarding nového agenta / služby
Detail: runbooks/glitchtip-agent-onboarding.md (odesílání chyb — DSN/SDK).
Agent chce ČÍST chyby (REST API, ne DSN) → runbooks/glitchtip-agent-read-access.md — přístup jede přes org roli (agents@studio60.cz = ADMIN vidí vše, žádné týmy), read token = řádek v api_tokens_apitoken (user 34, full scope), předat inline.
Související
runbooks/glitchtip.md— operační runbookinfra/monitoring.md— overall monitoring stack