diff --git a/CLAUDE.md b/CLAUDE.md index 5a83c6e8..6691aa34 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -274,6 +274,31 @@ Back button pattern — use the shared `` component from `$lib/share → See [docs/DEPLOYMENT.md](./docs/DEPLOYMENT.md) +### Observability stack (separate compose file) + +Run via `docker-compose.observability.yml` — requires the main stack to be running first. Full setup procedure: [docs/DEPLOYMENT.md §4](./docs/DEPLOYMENT.md#4-logs--observability). + +| Service | Container | Default Port | Purpose | +|---------|-----------|-------------|---------| +| Grafana | `obs-grafana` | 3003 | Metrics / logs / traces dashboard | +| Prometheus | `obs-prometheus` | 9090 (dev only — `127.0.0.1` bound) | Metrics store | +| Loki | `obs-loki` | — (internal) | Log store | +| Tempo | `obs-tempo` | — (internal) | Trace store | +| GlitchTip | `obs-glitchtip` | 3002 | Error tracking (Sentry-compatible) | + +### Observability env vars + +| Variable | Purpose | +|----------|---------| +| `PORT_GRAFANA` | Host port for Grafana UI (default: `3003`) | +| `PORT_GLITCHTIP` | Host port for GlitchTip UI (default: `3002`) | +| `PORT_PROMETHEUS` | Host port for Prometheus UI (default: `9090`) | +| `GRAFANA_ADMIN_PASSWORD` | Grafana `admin` login password | +| `GLITCHTIP_SECRET_KEY` | Django secret key for GlitchTip — generate with `python3 -c "import secrets; print(secrets.token_hex(32))"` | +| `GLITCHTIP_DOMAIN` | Public-facing base URL for GlitchTip (email links, CORS) | +| `SENTRY_DSN` | GlitchTip/Sentry DSN for the backend (Spring Boot) — leave empty to disable | +| `VITE_SENTRY_DSN` | GlitchTip/Sentry DSN for the frontend (SvelteKit) — injected at build time via Vite | + ## API Testing HTTP test files are in `backend/api_tests/` for use with the VS Code REST Client extension.