Save France
Backend

Monitoring avec Sentry (Backend)

Configuration et monitoring des erreurs backend Symfony avec Sentry

Introduction

Sentry est intégré au backend Symfony pour le monitoring des erreurs et exceptions en production. Le bundle sentry/sentry-symfony capture automatiquement les erreurs PHP, les exceptions non gérées, et permet de suivre les releases pour faciliter le debugging.

Vue d'ensemble

Sentry est activé uniquement en environnement de production via le bundle Symfony. Il capture automatiquement :

  • Les exceptions non gérées
  • Les erreurs PHP fatales
  • Les erreurs de validation API Platform
  • Les erreurs d'authentification et d'autorisation

Certaines exceptions courantes sont ignorées pour éviter le bruit dans les rapports (404, 400, etc.).

Configuration

Bundle

Le bundle Sentry est enregistré dans config/bundles.php et activé uniquement en production :

Sentry\SentryBundle\SentryBundle::class => ['prod' => true],

Fichier de configuration

La configuration se trouve dans config/packages/sentry.yaml :

when@prod:
    sentry:
        dsn: '%env(SENTRY_DSN)%'
        tracing:
            enabled: false
        messenger:
            capture_soft_fails: false
        options:
            release: '%env(SENTRY_RELEASE)%'
            environment: '%env(SENTRY_ENVIRONMENT)%'
            ignore_exceptions:
                - 'Symfony\Component\Console\Exception\CommandNotFoundException'
                - 'Symfony\Component\ErrorHandler\Error\FatalError'
                - 'Symfony\Component\Debug\Exception\FatalErrorException'
                - 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException'
                - 'Symfony\Component\HttpKernel\Exception\BadRequestHttpException'
                - 'Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException'
                - 'Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException'
                - 'Symfony\Component\Security\Core\Exception\AccessDeniedException'
                - 'Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException'
                - 'ApiPlatform\Validator\Exception\ValidationException'

Variables d'environnement

Les variables suivantes doivent être configurées en production :

  • SENTRY_DSN : DSN de votre projet Sentry
  • SENTRY_RELEASE : Version/release de l'application (ex: 1.0.0 ou hash de commit)
  • SENTRY_ENVIRONMENT : Environnement (production, staging, etc.)

Exceptions ignorées

Les exceptions suivantes sont configurées pour être ignorées car elles sont attendues dans le fonctionnement normal de l'application :

  • 404 Not Found : Requêtes vers des routes inexistantes
  • 400 Bad Request : Requêtes malformées
  • 403/401 : Erreurs d'authentification et d'autorisation
  • 405 Method Not Allowed : Méthodes HTTP non autorisées
  • ValidationException : Erreurs de validation API Platform
  • CommandNotFoundException : Commandes console inexistantes
  • FatalError : Erreurs fatales (gérées par le système)

Options de configuration

Tracing

Le tracing distribué est désactivé (tracing.enabled: false) pour réduire la charge et les coûts. Il peut être activé si nécessaire pour le monitoring de performance.

Messenger

Les échecs "soft" des messages Messenger ne sont pas capturés (capture_soft_fails: false). Seuls les échecs définitifs seront envoyés à Sentry.

Intégration Monolog (optionnel)

Une intégration avec Monolog est disponible mais commentée dans la configuration. Pour l'activer :

monolog:
    handlers:
        sentry:
            type: sentry
            level: !php/const Monolog\Logger::ERROR
            hub_id: Sentry\State\HubInterface
            fill_extra_context: true
            process_psr_3_messages: false

Cela permet d'envoyer les logs Monolog vers Sentry en plus des exceptions automatiques.

Utilisation en développement

En développement, le bundle Sentry n'est pas chargé, donc aucune erreur n'est envoyée à Sentry. Cela évite de polluer les rapports avec des erreurs de développement.

Bonnes pratiques

  • Ne jamais commiter les DSN avec des tokens valides dans le code source
  • Utiliser des variables d'environnement pour toutes les configurations sensibles
  • Configurer des releases distinctes pour chaque déploiement
  • Ignorer les exceptions attendues pour réduire le bruit dans les rapports
  • Activer le tracing uniquement si nécessaire pour éviter les coûts
  • Utiliser l'intégration Monolog si vous avez besoin de logger des événements spécifiques

Liens utiles

Résumé

  • Bundle Sentry activé uniquement en production
  • Capture automatique des exceptions et erreurs PHP
  • Configuration d'exceptions ignorées pour réduire le bruit
  • Support des releases et environnements pour le tracking
  • Intégration Monolog disponible mais désactivée par défaut
  • Tracing distribué désactivé pour réduire les coûts