Skip to main content

Triage automatique des erreurs Sentry

Connectez les webhooks Sentry à l'API Devin pour effectuer un triage automatique de chaque nouvelle erreur de production.
AuthorCognition
CategoryRéponse aux incidents
FeaturesAPI, MCP
1

Activer le MCP Sentry

Devin a besoin d’accéder à votre compte Sentry afin de pouvoir récupérer les traces de pile, les breadcrumbs et les métadonnées d’événements lors du triage.
  1. Allez dans Settings > MCP Marketplace et recherchez Sentry
  2. Cliquez sur Enable et terminez le processus OAuth avec le compte Sentry qui a accès à vos projets
  3. Testez la connexion — démarrez une session et demandez à Devin de lister les incidents récents dans l’un de vos projets
Une fois connecté, Devin peut interroger n’importe quel projet Sentry auquel votre compte a accès : détails des incidents, traces de pile complètes, breadcrumbs d’événements, tags de version, et plus encore. Consultez la documentation MCP Marketplace pour les détails de configuration.
2

Créer une intégration interne à Sentry

Sentry envoie des webhooks via les intégrations internes (Internal Integrations). Dans votre tableau de bord Sentry, allez dans Settings > Developer Settings > Custom Integrations et cliquez sur Create New Integration > Internal Integration.Configurez-la :
  • Name : Devin Auto-Triage
  • Webhook URL : Un service que vous déploierez à l’étape suivante (par exemple, https://your-domain.com/sentry-webhook)
  • Alert Rule Action : Activez (on) — cela rend l’intégration disponible en tant qu’action dans les règles d’alerte
  • Permissions : Accès en lecture à Issue & Event et Project
Enregistrez l’intégration, puis créez une règle d’alerte. Allez dans Alerts > Create Alert Rule > Issue Alert pour votre projet :
  • When : A new issue is created
  • If : The issue has more than 50 events in 1 hour (à adapter selon votre trafic)
  • Then : Send a notification via Devin Auto-Triage
3

Connectez le webhook à l’API Devin

Créez un petit handler qui reçoit le payload d’alerte de Sentry et démarre une session Devin. Créez un service user dans Settings > Service Users avec la permission ManageOrgSessions et stockez son jeton sous le nom DEVIN_API_KEY dans l’environnement de votre handler. Affectez à DEVIN_ORG_ID l’identifiant de votre organisation — vous pouvez l’obtenir en appelant GET https://api.devin.ai/v3/enterprise/organizations avec votre jeton.
const express = require('express');
const app = express();
app.use(express.json());

app.post('/sentry-webhook', async (req, res) => {
  const event = req.body.data?.event;
  if (!event) return res.sendStatus(200);

  const orgId = process.env.DEVIN_ORG_ID;
  const response = await fetch(
    `https://api.devin.ai/v3/organizations/${orgId}/sessions`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.DEVIN_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      prompt: [
        `A Sentry alert fired for a new issue: "${event.title}"`,
        `Culprit: ${event.culprit}`,
        `Sentry URL: ${event.web_url}`,
        ``,
        `Use the Sentry MCP to pull the full stack trace and breadcrumbs.`,
        `Identify the root cause, fix the issue, and open a PR with a`,
        `regression test.`,
      ].join('\n'),
      tags: ['sentry-auto-triage', `project:${event.project}`],
    }),
  });

  const { session_id } = await response.json();
  console.log(`Started Devin session ${session_id} for: ${event.title}`);
  res.sendStatus(200);
});

app.listen(3000);
Déployez ceci partout où il est possible de recevoir du trafic HTTPS — par exemple sur un Cloudflare Worker, une fonction AWS Lambda ou un petit VPS. Pointez l’URL de webhook de votre Sentry Internal Integration vers ce service.Le code ci-dessus marque chaque session avec sentry-auto-triage et le nom du projet Sentry. Cela vous permet de filtrer ces sessions dans le tableau de bord de Devin et de les récupérer via l’API à l’aide du paramètre de requête tags — pratique pour suivre le nombre d’erreurs que Devin trie par projet.Pour vérifier que le pipeline fonctionne, déclenchez une alerte de test dans Sentry (ou abaissez temporairement votre seuil), puis vérifiez sur app.devin.ai l’apparition d’une nouvelle session marquée sentry-auto-triage.
4

Comment Devin traite chaque alerte

Lorsqu’une nouvelle erreur dépasse votre seuil et que le webhook se déclenche, Devin démarre une session et traite le problème :
  1. Interroge Sentry via MCP — récupère la stack trace complète, les breadcrumbs (actions de l’utilisateur menant au crash), les tags de navigateur/OS/version affectés et la fréquence de l’événement
  2. Identifie la cause racine — lit le fichier source à la ligne exacte de la stack trace, suit le flux de données pour comprendre pourquoi la valeur est undefined ou null
  3. Écrit une correction ciblée — implémente une gestion des erreurs (optional chaining, valeurs par défaut, validation des entrées) conforme aux conventions existantes de votre base de code
  4. Ajoute un test de non-régression — crée un cas de test qui reproduit le scénario de crash initial et vérifie que la correction empêche qu’il se reproduise
  5. Ouvre une PR — ajoute l’URL du ticket Sentry dans la description de la PR pour que les relecteurs puissent recouper le contexte d’erreur initial et le volume d’événements
Exemple de description de PR :
Correctif : TypeError dans UserProfile quand user.profile est null

Cause principale : Le endpoint /api/users/:id renvoie { profile: null }
pour les utilisateurs n'ayant pas terminé l'onboarding. UserProfile.tsx:47
déstructure email depuis user.profile sans vérification de null.

Correctif : Ajout du chaînage optionnel et d'un état de repli.
Test : Ajout d'un test pour les utilisateurs avec un profil null — vérifie que
le composant affiche « Complétez votre profil » au lieu de planter.

Problème Sentry : FRONTEND-1892 (340 événements au cours de la dernière heure)
5

Affinez le triage avec des playbooks et Knowledge

Une fois le pipeline en cours d’exécution, rendez l’auto-triage plus intelligent :Créez un playbook de triage. Partez du playbook modèle !triage — dupliquez-le et personnalisez-le avec les conventions de gestion des erreurs de votre équipe (error boundaries, motifs de vérification de valeurs nulles, format de logs). Ensuite, transmettez l’ID du playbook dans votre gestionnaire de webhook en ajoutant "playbook_id": "your-playbook-id" au corps de la requête. Vous pouvez également utiliser Advanced Devin pour générer un playbook à partir d’une description de votre workflow de triage.Ajoutez de la Knowledge sur vos contrats d’API et les cas limites connus — par exemple : « Les réponses de /api/users peuvent renvoyer { profile: null } pour les utilisateurs qui n’ont pas terminé l’onboarding. Protégez-vous toujours contre ce cas. » Utilisez Advanced Devin pour vous aider à rédiger des entrées Knowledge à partir de votre documentation existante. Plus Devin dispose de contexte sur votre domaine, plus ses correctifs seront précis.Définissez soigneusement le périmètre des alertes. Utilisez les conditions de règles d’alerte de Sentry pour limiter les erreurs qui déclenchent Devin — filtrez par projet, environnement (production uniquement) ou volume d’erreurs. Un bon point de départ : ne déclenchez que pour les problèmes avec plus de 50 événements dans la première heure afin de vous concentrer sur les erreurs à fort impact.Mettez en place un planning de revue hebdomadaire. Créez un schedule qui s’exécute une fois par semaine pour revoir les résultats de vos sessions d’auto-triage et réinjecter les enseignements dans votre playbook et Knowledge :