Monitorer les erreurs Symfony avec Sentry en production

Monitorer les erreurs Symfony avec Sentry en production

15 October 2021

Vous venez de finir votre application sous Symfony et être prêt à passer l'ensemble de votre travail en production. Bravo !

La question que l'on peut se poser dorénavant est de savoir comment remonter les éventuelles erreurs qui surgiront durant la vie de votre application afin que vous puissiez y réagir rapidement.

Symfony offre la possibilité de retourner les erreurs par emails, Slack ou même Discord grâce à la bibliothèque de journalisation PHP qui est Monolog. Cela demande un peu de configuration.

Ce que je vous propose, c’est de découvrir l'application Sentry qui permet de monitorer et centraliser toutes les erreurs levées par Symfony qu'il soit en développement ou production. Cette dernière étant bien plus intéressante.

Installation

Rendez-vous sur Sentry et créez un compte. Une fois dans votre interface, vous devrez créer une équipe qui contiendra vos différents projets.

Depuis ce point, vous devez créer votre projet sur Sentry en cliquant sur le bouton en haut à droite de votre écran.

Vous retrouvez un écran dans lequel vous devez définir divers paramètres comme :

  • la plateforme, dans notre cas cherchez Symfony ;
  • le type d'alerte que vous souhaitez avoir, pour le moment choisissez de tout recevoir ;
  • le nom de votre projet

L'écran suivant vous explique l'installation de Sentry sous Symfony. Pour cela, rendez-vous sur votre projet via votre terminal de commandes et entrez la commande suivante :

composer require sentry/sentry-symfony

Il s'agit d'une recette Flex, donc toute l'installation se fera de manière automatique.

Néanmoins, il est possible qu'une erreur surgisse sur la fin de l'installation pour toute version inférieure à 6.0 du SensioFrameworkExtraBundle vous indiquant que la classe Nyholm\Psr7\Factory\Psr17Factor est manquante. Pour régler ce problème, il suffit d'ajouter une entrée dans le fichier de configuration config/packages/sensio_framework_extra.yaml :

sensio_framework_extra:
   psr_message:
      enabled: false

Récupérer le DSN présenter sur ce même écran et insérez-le dans votre fichier d'environnement .env :

###> sentry/sentry-symfony ###
SENTRY_DSN=
###< sentry/sentry-symfony ###

Sentry permet d'obtenir des informations sur le déclenchement de l'erreur ainsi que des informations susceptibles de vous aider comme l'URL, le navigateur, le système de l'ordinateur, l'environnement de développement, l'utilisateur connecté...

Sentry fonctionne tout aussi bien sur des langages back que front comme ReactJS, VueJS...

Dès lors, vous pouvez le paramétrer pour ne recevoir que les remonter d'erreur en environnement de production, le tout depuis l'interface en ligne.

Simple, mais très efficace.