# Error tracking (GlitchTip) Les erreurs **backend** (Symfony) sont remontées vers **GlitchTip** (instance interne MALIO, compatible SDK Sentry), org `malio`, projet `sirh-api`. **Prod uniquement**, **inerte sans DSN**. > Frontend hors périmètre (les erreurs front partent du navigateur RH ; ajout futur possible via > un proxy nginx `/ingest`). ## Contrainte réseau & transport GlitchTip est sur le réseau interne (bloqué par Sophos). SIRH tourne sur un VPS OVH public. Le container PHP joint GlitchTip via un **tunnel Tailscale** monté sur le host de prod. ## Fichiers concernés | Fichier | Rôle | |---|---| | `config/packages/sentry.yaml` | conf backend (prod-only, DSN runtime, 4xx ignorés, release = `app.version`, handler Monolog ERROR+) | | `config/bundles.php` | `SentryBundle` enregistré `['prod' => true]` | | `config/packages/monolog.yaml` | handler `sentry` (service) en `when@prod` | | `.env` | bloc documenté `SENTRY_DSN` (vide → inerte) | ## Activation (runbook) 1. **Tailscale sur le host prod OVH** : ```bash curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up # ou --authkey tskey-auth-XXXX (headless) tailscale status && tailscale ip -4 ``` 2. **Vérifier l'accès à GlitchTip** depuis le host : ```bash tailscale ping curl -sS -o /dev/null -w "%{http_code}\n" http://:/_health/ ``` 3. **Routage container → tailnet** : pointer `SENTRY_DSN` sur l'**IP tailnet** de GlitchTip (le container ne résout pas MagicDNS). Repli si non routé : sidecar `tailscale/tailscale` + `network_mode: service:tailscale`. 4. **Créer le projet GlitchTip** `sirh-api` (plateforme `php-symfony`) dans l'org `malio`, récupérer le DSN (Settings → Client Keys). 5. **Injecter le DSN** dans l'env_file serveur (pas dans l'image), puis redéployer : ```env SENTRY_DSN=http://@100.x.y.z:/ ``` ```bash docker compose up -d docker compose exec php php bin/console cache:clear --env=prod ``` ## CA HTTPS (conditionnel) Uniquement si le DSN cible l'HTTPS interne `logs.malio-dev.fr` (cert auto-signé) : baker la CA racine MALIO dans `deploy/docker/Dockerfile.prod` (stage production). Recommandé : préférer l'endpoint **HTTP** via le tailnet (déjà chiffré par WireGuard) → pas de CA. Design détaillé : `docs/superpowers/specs/2026-06-28-glitchtip-backend-error-tracking-design.md`.