Files
SIRH/doc/error-tracking.md
T
2026-06-28 13:24:12 +02:00

2.4 KiB

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 :
    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 :
    tailscale ping <glitchtip-tailnet>
    curl -sS -o /dev/null -w "%{http_code}\n" http://<glitchtip-IP-tailnet>:<port>/_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 :
    SENTRY_DSN=http://<clé>@100.x.y.z:<port>/<id-sirh-api>
    
    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.