Skip to main content

Triage automatico degli errori Sentry

Collega i webhook di Sentry all'API di Devin per eseguire il triage automatico di ogni nuovo errore in produzione.
AuthorCognition
CategoryRisposta agli incidenti
FeaturesAPI, MCP
1

Abilita MCP Sentry

Devin ha bisogno di accedere al tuo account Sentry per poter recuperare stack trace, breadcrumb e metadati degli eventi durante il triage.
  1. Vai su Settings > MCP Marketplace e trova Sentry
  2. Clicca su Enable e completa il flusso OAuth con l’account Sentry che ha accesso ai tuoi progetti
  3. Verifica la connessione — avvia una sessione e chiedi a Devin di elencare le issue recenti in uno dei tuoi progetti
Una volta connesso, Devin può interrogare qualsiasi progetto Sentry a cui il tuo account ha accesso: dettagli delle issue, stack trace completi, breadcrumb degli eventi, tag di release e altro ancora. Consulta la documentazione di MCP Marketplace per i dettagli sulla configurazione.
2

Crea un'integrazione interna di Sentry

Sentry invia i webhook tramite le Internal Integrations. Nel dashboard di Sentry, vai su Settings > Developer Settings > Custom Integrations e fai clic su Create New Integration > Internal Integration.Configura l’integrazione:
  • Name: Devin Auto-Triage
  • Webhook URL: Un servizio di cui effettuerai il deploy nel prossimo passaggio (ad esempio, https://your-domain.com/sentry-webhook)
  • Alert Rule Action: Impostala su on — in questo modo l’integrazione sarà disponibile come azione nelle alert rule
  • Permissions: Accesso in lettura a Issue & Event e Project
Salva l’integrazione, quindi crea una alert rule. Vai su Alerts > Create Alert Rule > Issue Alert per il tuo progetto:
  • When: Viene creata una nuova issue
  • If: L’issue ha più di 50 eventi in 1 ora (modifica in base al tuo traffico)
  • Then: Invia una notifica tramite Devin Auto-Triage
3

Collega il webhook all'API di Devin

Crea un piccolo handler che riceve il payload di alert di Sentry e avvia una sessione Devin. Crea un service user in Settings > Service Users con il permesso ManageOrgSessions e salva il suo token come DEVIN_API_KEY nell’ambiente del tuo handler. Imposta DEVIN_ORG_ID sull’ID della tua organizzazione — ottienilo effettuando una chiamata GET a https://api.devin.ai/v3/enterprise/organizations con il tuo token.
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);
Distribuisci questo ovunque sia in grado di ricevere traffico HTTPS — ad esempio su un Cloudflare Worker, AWS Lambda o una piccola VPS. Imposta l’URL del webhook della tua Sentry Internal Integration su questo endpoint.Il codice sopra etichetta ogni sessione con sentry-auto-triage e il nome del progetto Sentry. Questo ti permette di filtrare queste sessioni nella dashboard di Devin e di recuperarle tramite l’API usando il parametro di query tags, utile per monitorare quanti errori Devin gestisce in triage per progetto.Per verificare che la pipeline funzioni, attiva un alert di test in Sentry (oppure abbassa temporaneamente la soglia), quindi controlla app.devin.ai per una nuova sessione etichettata sentry-auto-triage.
4

Come Devin gestisce ogni avviso

Quando un nuovo errore supera la tua soglia e il webhook viene attivato, Devin avvia una sessione e lavora sul problema:
  1. Interroga Sentry tramite MCP — recupera l’intero stack trace, i breadcrumbs (azioni dell’utente che hanno portato al crash), i tag relativi al browser/sistema operativo/release interessati e la frequenza degli eventi
  2. Individua la causa principale — legge il file sorgente alla riga esatta indicata nello stack trace, segue il flusso dei dati per capire perché il valore è undefined o null
  3. Scrive una correzione mirata — implementa la gestione degli errori (optional chaining, valori predefiniti, validazione degli input) in linea con i pattern esistenti nella tua base di codice
  4. Aggiunge un test di regressione — crea un caso di test che riproduce lo scenario del crash originale e verifica che la correzione impedisca che si ripeta
  5. Apre una PR — inserisce l’URL della issue Sentry nella descrizione della PR in modo che i revisori possano mettere a confronto il contesto dell’errore originale e il volume degli eventi
Esempio di descrizione PR:
Fix: TypeError in UserProfile quando user.profile è null

Causa principale: l'endpoint /api/users/:id restituisce { profile: null }
per gli utenti che non hanno completato l'onboarding. UserProfile.tsx:47
destruttura email da user.profile senza un controllo null.

Fix: aggiunto optional chaining e uno stato di fallback.
Test: aggiunto test per utenti con profilo null — verifica che
il componente mostri "Complete your profile" invece di andare in crash.

Sentry issue: FRONTEND-1892 (340 eventi nell'ultima ora)
5

Migliora il triage con i playbook e Knowledge

Una volta che la pipeline è in esecuzione, rendi l’auto-triage più intelligente:Crea un playbook di triage. Parti dal playbook di esempio !triage — duplicalo e personalizzalo con le convenzioni di gestione degli errori del tuo team (error boundaries, pattern di controllo dei valori null, formato dei log). Poi passa l’ID del playbook nel tuo webhook handler aggiungendo "playbook_id": "your-playbook-id" al body della richiesta. Puoi anche usare Advanced Devin per generare un playbook a partire da una descrizione del tuo workflow di triage.Aggiungi Knowledge sui tuoi contratti API e sui casi limite noti — ad esempio, “Le risposte da /api/users possono restituire { profile: null } per gli utenti che non hanno completato l’onboarding. Gestisci sempre questo caso.” Usa Advanced Devin per aiutarti a scrivere le voci di Knowledge partendo dalla tua documentazione esistente. Più contesto ha Devin sul tuo dominio, più accurate saranno le sue correzioni.Definisci con attenzione l’ambito degli alert. Usa le condizioni delle regole di alert di Sentry per limitare quali errori attivano Devin — filtra per progetto, ambiente (solo production) o volume di errori. Un buon punto di partenza è attivare solo per i problemi con oltre 50 eventi nella prima ora, per concentrarti sugli errori ad alto impatto.Imposta una revisione settimanale. Crea una schedule che venga eseguita una volta a settimana per rivedere gli esiti delle tue sessioni di auto-triage e riversare gli apprendimenti nel tuo playbook e in Knowledge: