Skip to content

GlitchTip — Onboarding nového agenta/služby

Kdy použít

Když nová služba potřebuje error tracking přes GlitchTip (errors.studio60.cz).

Prerekvizity

  • GlitchTip běží na sentinelu (s60-glitchtip-web, port 8000)
  • DB: glitchtip @ DO Managed PG

Postup

1. Vytvoř projekt v GlitchTip DB

PGPASSWORD="<glitchtip_pass>" psql -h <pg_host> -p 25060 -U glitchtip -d glitchtip --set=sslmode=require
-- Projekty jsou v projects_project, klíče v projects_projectkey
-- Obvykle se vytváří přes GlitchTip UI (errors.studio60.cz)

2. Získej DSN

SELECT p.slug, p.id, pk.public_key FROM projects_projectkey pk
JOIN projects_project p ON pk.project_id = p.id WHERE p.slug = '<slug>';
DSN formát: https://<public_key>@errors.studio60.cz/<project_id>

3. Sentry SDK — MUSÍ být v7!

GlitchTip používá UUID klíče. @sentry v8+ a v10+ odmítají UUID DSN.

Backend (NestJS/Node):

"@sentry/node": "^7.0.0"

Frontend (React/Vue):

"@sentry/react": "^7.0.0"  // nebo @sentry/vue

npm install --legacy-peer-deps může být nutný (React 19 peer dep conflict)

4. Env vars pro službu

Přidej do /root/secrets/<projekt>/.env.hub a .env.prod:

SENTRY_DSN=https://<uuid>@errors.studio60.cz/<id>
VITE_SENTRY_DSN=https://<uuid>@errors.studio60.cz/<id>  # jen frontend

5. Sentry.init v kódu

// Backend (main.ts)
import * as Sentry from '@sentry/node';
Sentry.init({ dsn: process.env.SENTRY_DSN, environment: process.env.NODE_ENV });

// Frontend (main.tsx)
import * as Sentry from '@sentry/react';
Sentry.init({ dsn: import.meta.env.VITE_SENTRY_DSN, environment: import.meta.env.MODE });

6. Pošli agentovi KOMPLETNÍ info

Zpráva MUSÍ obsahovat: - [ ] DSN (backend + frontend) - [ ] SDK verze (^7.0.0, NE v8+/v10+!) - [ ] Sentry.init příklad - [ ] GlitchTip dashboard URL - [ ] Projekt slug a ID - [ ] Env var názvy (SENTRY_DSN, VITE_SENTRY_DSN) - [ ] Poznámka o --legacy-peer-deps

7. Webhook (volitelné)

GlitchTip → Telegram + Relay webhook je na sentinel:9101. Nový projekt se automaticky routuje pokud je v PROJECT_AGENT_MAP v /opt/glitchtip/telegram-webhook.py.

Přidej mapování:

PROJECT_AGENT_MAP = {
    '<slug>': '<agent_name>',
    ...
}

Aktuální projekty

Slug ID Agent DSN prefix
s60-auth 1 auth fb395cb3...
pulse 2 pulse a9802590...
billit 3 billit a81f9e57...
venom 4 venom 40da428f...
badwolf 5 badwolf 34969ed6...
s60-mail 6 mail 7e308f4b...

Známé problémy

  • @sentry/node v10 + @sentry/react v10: "Invalid Sentry Dsn" — UUID klíče nejsou podporované
  • GlitchTip API tokeny se scopes=0 nefungují přes REST API (permission denied)
  • GlitchTip health endpoint: /_health/