Superviser les erreurs avec Sentry â đ” Confirmé¶
Sentry est un service de supervision des erreurs : dĂšs quâune page de votre site plante (erreur 500, exception dans le code), Sentry reçoit automatiquement un rapport dĂ©taillĂ© et peut vous prĂ©venir par e-mail. Vous ĂȘtes ainsi informĂ© dâun problĂšme avant mĂȘme quâun visiteur le signale, et vous disposez des informations nĂ©cessaires pour le corriger ou le transmettre Ă lâĂ©quipe de Sites Conformes.
Chaque rapport contient notamment :
la trace complĂšte de lâerreur (fichier, ligne, valeurs des variables) ;
la requĂȘte qui lâa provoquĂ©e (adresse de la page, mĂ©thode, en-tĂȘtes) ;
lâutilisateur connectĂ©, le cas Ă©chĂ©ant, si vous lâautorisez (voir DonnĂ©es personnelles) ;
lâenvironnement (production, recetteâŠ) et le nombre dâoccurrences.
Sentry est optionnel et désactivé par défaut : tant que la variable
SENTRY_DSN nâest pas renseignĂ©e, aucune donnĂ©e nâest envoyĂ©e.
Prérequis¶
Un compte Sentry. Vous pouvez utiliser le service hĂ©bergĂ© sentry.io, une instance auto-hĂ©bergĂ©e, ou une instance mutualisĂ©e proposĂ©e par votre administration : renseignez-vous auprĂšs de votre Ă©quipe informatique avant dâen crĂ©er une nouvelle. Pour les start-up dâĂtat, une instance est mise Ă disposition. (cf. doc de Beta.gouv.fr.)
Un projet Sentry de type « Django », créé depuis lâinterface de Sentry (Projects â Create Project, plateforme Django).
Le DSN du projet : câest lâadresse Ă laquelle votre site envoie ses rapports. Vous la trouvez dans Settings â Projects â (votre projet) â Client Keys (DSN). Elle ressemble Ă :
https://0123456789abcdef@example.sentry.instance.tld/1234567
Note
Un mĂȘme projet Sentry peut recevoir les erreurs de plusieurs instances (par
exemple la production et la recette) : elles sont distinguées grùce à la
variable SENTRY_ENVIRONMENT.
1. Activer Sentry¶
Renseignez les variables dâenvironnement suivantes :
Variable |
Valeur |
Obligatoire |
|---|---|---|
|
Le DSN copié depuis Sentry |
Oui |
|
Nom de lâinstance : |
Non (défaut : |
|
|
Non (défaut : |
|
Proportion des requĂȘtes mesurĂ©es pour le suivi des performances, entre |
Non (défaut : désactivé) |
La façon de les définir dépend de votre mode de déploiement.
Sur Scalingo¶
Dans le tableau de bord de votre application, onglet « Environnement », ajoutez les variables (voir Sur Scalingo (ou PaaS) â đą DĂ©butant). Scalingo redĂ©marre lâapplication pour prendre en compte les nouveaux rĂ©glages.
En ligne de commande, lâĂ©quivalent est :
scalingo --app mon-site env-set \
SENTRY_DSN="https://0123456789abcdef@example.sentry.instance.tld/1234567" \
SENTRY_ENVIRONMENT=production
Sur un serveur Linux ou avec Docker¶
Ajoutez les lignes suivantes au fichier .env de votre instance :
SENTRY_DSN=https://0123456789abcdef@example.sentry.instance.tld/1234567
SENTRY_ENVIRONMENT=production
Puis redĂ©marrez lâapplication, car les rĂ©glages ne sont lus quâau dĂ©marrage :
serveur Linux (voir Sur un serveur Linux (VPS, dĂ©diĂ© ou interne) â đ” ConfirmĂ©) :
sudo systemctl restart sites-conformes
Docker (voir Avec Docker â đ” ConfirmĂ©) :
docker compose up -d
2. Vérifier que les erreurs remontent¶
Sites Conformes fournit une page de test qui provoque volontairement une erreur. Elle est désactivée par défaut.
Ajoutez la variable
SENTRY_USE_DEBUG_URL=Truepuis redĂ©marrez lâapplication.Ouvrez lâadresse
https://votre-site.gouv.fr/sentry-debug/dans votre navigateur. Une page dâerreur 500 sâaffiche : câest normal.Dans Sentry, ouvrez votre projet, onglet Issues : une erreur
ZeroDivisionError: division by zerodoit apparaĂźtre aprĂšs quelques secondes.Supprimez la variable
SENTRY_USE_DEBUG_URL(ou remettez-la ĂFalse) puis redĂ©marrez lâapplication.
Important
Ne laissez pas SENTRY_USE_DEBUG_URL activée. La page /sentry-debug/ est
accessible Ă tout le monde, sans connexion : nâimporte qui pourrait lâutiliser
pour générer des erreurs en masse et saturer votre quota Sentry.
Si aucune erreur nâapparaĂźt :
vérifiez que le DSN est copié en entier, sans espace ni guillemet superflu ;
vĂ©rifiez que lâapplication a bien Ă©tĂ© redĂ©marrĂ©e aprĂšs la modification ;
vĂ©rifiez que votre serveur peut joindre lâadresse de Sentry (un pare-feu ou un proxy sortant peut bloquer lâenvoi) ;
vĂ©rifiez le filtre dâenvironnement en haut de lâonglet Issues dans Sentry.
3. Suivre et traiter les erreurs¶
Dans Sentry, lâonglet Issues regroupe les erreurs identiques en une seule ligne, avec leur nombre dâoccurrences et la date de derniĂšre apparition. Pour chaque erreur, vous pouvez :
consulter le détail : trace, page concernée, navigateur (et utilisateur si
SENTRY_SEND_DEFAULT_PIIest activée) ;la marquer comme résolue (Resolve) une fois corrigée : si elle se reproduit, Sentry la rouvre et vous prévient ;
lâignorer (Archive) si elle nâest pas pertinente.
Les alertes se rĂšglent dans Alerts (par exemple : un e-mail Ă chaque nouvelle erreur, ou au-delĂ dâun certain nombre dâoccurrences par heure). Sentry peut aussi notifier une messagerie dâĂ©quipe via ses intĂ©grations.
Astuce
Si une erreur semble venir de Sites Conformes lui-mĂȘme et non de votre contenu ou de votre configuration, vous pouvez la signaler en ouvrant un ticket en joignant la trace fournie par Sentry (aprĂšs en avoir retirĂ© les donnĂ©es personnelles).
Suivi des performances (optionnel)¶
En plus des erreurs, Sentry peut mesurer les performances du site : temps de rĂ©ponse de chaque page, dĂ©tail des requĂȘtes Ă la base de donnĂ©es et des appels Ă des services externes. Ces mesures apparaissent dans lâonglet Performance (ou Traces) de Sentry et permettent de repĂ©rer les pages lentes et leur cause.
Ce suivi est dĂ©sactivĂ© par dĂ©faut. Pour lâactiver, dĂ©finissez la variable
SENTRY_TRACES_SAMPLE_RATE : câest la proportion des requĂȘtes mesurĂ©es,
entre 0 et 1. Par exemple, 0.1 signifie quâune requĂȘte sur dix est
mesurée.
Chaque requĂȘte mesurĂ©e est envoyĂ©e Ă Sentry et consomme du quota. Ce rĂ©glage nâa en revanche aucun effet sur les erreurs : elles sont toujours toutes remontĂ©es.
Valeurs suggérées :
Environnement |
Valeur |
Pourquoi |
|---|---|---|
Développement local |
|
Peu de requĂȘtes : on mesure tout. |
Recette / préproduction |
|
Trafic faible ; utile pour mesurer avant une mise en production. |
Production, trafic modéré (quelques milliers de visites par jour) |
|
Bon compromis entre représentativité et quota. |
Production, fort trafic |
|
Suffisant pour des statistiques fiables. |
Suivi des performances inutile |
(ne pas définir) |
Désactivé. |
Par exemple, pour une production :
# Scalingo
scalingo --app mon-site env-set SENTRY_TRACES_SAMPLE_RATE=0.1
# Serveur Linux ou Docker : dans le fichier .env, puis redémarrer
SENTRY_TRACES_SAMPLE_RATE=0.1
Note
Sur une instance Sentry mutualisĂ©e (comme celle de Beta.gouv.fr), le volume de donnĂ©es reçu est partagĂ© entre tous les projets : renseignez-vous auprĂšs de lâĂ©quipe qui lâadministre avant dâaugmenter cette valeur. Dans tous les cas, commencez bas et ajustez selon le volume constatĂ© dans Sentry.
Données personnelles¶
Par dĂ©faut, Sites Conformes nâenvoie pas de donnĂ©es personnelles Ă Sentry : les rapports ne contiennent ni lâadresse IP du visiteur, ni lâidentitĂ© de lâutilisateur connectĂ©, ni les cookies.
Ces informations peuvent toutefois aider Ă comprendre une erreur (savoir quel compte lâa rencontrĂ©e, par exemple). Pour les joindre aux rapports, ajoutez la variable :
SENTRY_SEND_DEFAULT_PII=True
Elle active lâoption
send_default_pii
de Sentry : les rapports contiennent alors lâadresse IP du visiteur,
lâidentifiant, le nom dâutilisateur et lâadresse e-mail de lâutilisateur
connectĂ©, ainsi que les cookies et en-tĂȘtes de la requĂȘte.
Important
Nâactivez cette option quâen connaissance de cause. Elle constitue un traitement de donnĂ©es personnelles au sens du RGPD.
Elle constitue Ă©galement un risque de sĂ©curitĂ©, dans lâĂ©ventualitĂ© oĂč lâinstance Sentry serait piratĂ©e. La documentation de Beta recommande fortement de ne pas envoyer de donnĂ©es personnelles Ă Sentry.
Si vous lâactivez :
privilĂ©giez une instance Sentry hĂ©bergĂ©e dans lâUnion europĂ©enne (instance auto-hĂ©bergĂ©e, instance de votre administration, ou rĂ©gion UE de sentry.io) ;
mentionnez ce traitement dans votre registre des traitements et, si besoin, dans les mentions légales ou la politique de confidentialité du site ;
limitez lâaccĂšs au projet Sentry aux seules personnes qui en ont besoin ;
si nĂ©cessaire, masquez certains champs avec les rĂ©glages Security & Privacy â Data Scrubbing du projet Sentry.
Désactiver Sentry¶
Supprimez la variable SENTRY_DSN (ou laissez-la vide), puis redémarrez
lâapplication. Plus aucune donnĂ©e nâest alors envoyĂ©e Ă Sentry.
Cas dâune intĂ©gration en paquet¶
Si vous utilisez Sites Conformes comme paquet dans votre propre projet Django
(voir Configuration), lâinitialisation de Sentry nâest pas
fournie par le paquet : ajoutez-la dans le settings.py de votre projet, par
exemple :
import os
if sentry_dsn := os.getenv("SENTRY_DSN"):
import sentry_sdk
sentry_sdk.init(
dsn=sentry_dsn,
send_default_pii=getenv_bool("SENTRY_SEND_DEFAULT_PII", False),
environment=os.getenv("SENTRY_ENVIRONMENT", "production"),
traces_sample_rate=float(rate) if (rate := os.getenv("SENTRY_TRACES_SAMPLE_RATE")) else None,
)
La bibliothÚque sentry-sdk[django] est installée automatiquement avec Sites
Conformes : aucune dĂ©pendance supplĂ©mentaire nâest nĂ©cessaire.