Skip to content

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

curl https://errors.studio60.cz/_health/

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-web hlásil unhealthy 3 měsíce (failing streak 301218), protože healthcheck volal wget, který v image není. Ověřeno, co v image je: curl ❌, wget ❌, nc ❌, python3 → healthcheck v /opt/glitchtip/docker-compose.yml přepnut na:
    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)"]
    
    Záloha původního compose: /opt/glitchtip/docker-compose.yml.bak-20260731. Po docker 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 UPDATEprojects_projectkey.public_key je Postgres uuid type, stringuje vždy 8-4-4-4-12 format; Django UUIDField.to_python př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.
    ŠPATNĚ (SDK odmítne): https://a9802590-96c1-4a8a-825a-ae26e63f9ae7@errors.studio60.cz/2
    SPRÁVNĚ:              https://a980259096c14a8a825aae26e63f9ae7@errors.studio60.cz/2
    
    Proč to funguje: SDK regex má pro klíč (\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/ s sentry_key=a980259096c14a8a825aae26e63f9ae7HTTP 200, event dosedl jako issue 70 v projektu pulse (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á v SENTRY_DSN, do GlitchTipu neposílá nic a v logu má při startu Invalid 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):
    1. App-side: vypnout VITE_SENTRY_DSN="" (žádná client observability, čistá konzole)
    2. App-side: Vite resolve.alias na vlastní DSN parser tolerantní k UUID (monkey-patch před Sentry.init())
    3. GlitchTip-side: fork + patch glitchtip-backend/projects/serializers.py aby vracel uuid.hex → high risk (ztráta upstream sync); po nálezu výš není potřeba

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í