Skip to main content

Triagem Automática de Erros do Sentry

Conecte webhooks do Sentry à API do Devin para fazer a triagem automática de cada novo erro em produção.
AuthorCognition
CategoryResposta a Incidentes
FeaturesAPI, MCP
1

Habilitar o Sentry MCP

Devin precisa de acesso à sua conta Sentry para poder buscar stack traces, breadcrumbs e metadados de eventos durante a triagem.
  1. Acesse Settings > MCP Marketplace e encontre Sentry
  2. Clique em Enable e conclua o fluxo de OAuth com a conta Sentry que tem acesso aos seus projetos
  3. Teste a conexão — inicie uma sessão e peça ao Devin para listar erros recentes em um dos seus projetos
Depois de conectado, Devin pode consultar qualquer projeto Sentry ao qual sua conta tenha acesso: detalhes de erros, stack traces completos, breadcrumbs de eventos, tags de release e mais. Veja a documentação do MCP Marketplace para detalhes de configuração.
2

Criar uma integração interna no Sentry

O Sentry envia webhooks por meio de Internal Integrations. No seu painel do Sentry, vá para Settings > Developer Settings > Custom Integrations e clique em Create New Integration > Internal Integration.Configure-o:
  • Name: Devin Auto-Triage
  • Webhook URL: Um serviço que você vai implantar na próxima etapa (por exemplo, https://your-domain.com/sentry-webhook)
  • Alert Rule Action: Defina como on — isso torna a integração disponível como uma ação em regras de alerta
  • Permissions: Acesso de leitura a Issue & Event e Project
Salve a integração e, em seguida, crie uma regra de alerta. Vá para Alerts > Create Alert Rule > Issue Alert para o seu projeto:
  • When: A new issue is created
  • If: The issue has more than 50 events in 1 hour (ajuste de acordo com o seu tráfego)
  • Then: Enviar uma notificação via Devin Auto-Triage
3

Conecte o webhook à API do Devin

Crie um pequeno handler que receba o payload de alerta do Sentry e inicie uma sessão do Devin. Crie um usuário de serviço em Settings > Service Users com a permissão ManageOrgSessions e armazene seu token como DEVIN_API_KEY no ambiente do seu handler. Defina DEVIN_ORG_ID como o ID da sua organização — obtenha esse ID chamando GET https://api.devin.ai/v3/enterprise/organizations com o seu 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);
Implante isso em qualquer lugar que possa receber tráfego HTTPS — um Cloudflare Worker, AWS Lambda ou um pequeno VPS. Aponte a URL de webhook da sua integração interna do Sentry para ele.O código acima marca cada sessão com sentry-auto-triage e o nome do projeto no Sentry. Isso permite filtrar essas sessões no painel do Devin e obtê-las via API usando o parâmetro de consulta tags — útil para rastrear quantos erros o Devin faz triagem por projeto.Para verificar se o pipeline está funcionando, dispare um alerta de teste no Sentry (ou reduza temporariamente seu limite) e depois acesse o app.devin.ai para verificar se há uma nova sessão com a tag sentry-auto-triage.
4

Como o Devin lida com cada alerta

Quando um novo erro ultrapassa o limite definido e o webhook é disparado, Devin inicia uma sessão e começa a trabalhar na correção do problema:
  1. Consulta o Sentry via MCP — obtém o stack trace completo, breadcrumbs (ações do usuário que levaram à falha/crash), tags de navegador/sistema operacional/release afetados e a frequência do evento
  2. Rastreia a causa raiz — lê o arquivo-fonte na linha exata do stack trace e segue o fluxo de dados para entender por que o valor é undefined ou null
  3. Escreve uma correção direcionada — implementa tratamento de erros (optional chaining, valores padrão, validação dos dados de entrada) que segue os padrões já usados na sua base de código
  4. Adiciona um teste de regressão — cria um caso de teste que reproduz o cenário original da falha e verifica que a correção impede que ela aconteça novamente
  5. Abre um PR — adiciona a URL da issue do Sentry na descrição do PR para que os revisores possam cruzar o contexto original do erro com o volume de eventos
Exemplo de descrição de PR:
Correção: TypeError em UserProfile quando user.profile é null

Causa raiz: O endpoint /api/users/:id retorna { profile: null }
para usuários que não concluíram o onboarding. UserProfile.tsx:47
desestrutura email de user.profile sem verificação de null.

Correção: Adicionado optional chaining e um estado de fallback.
Teste: Adicionado teste para usuários com profile null — verifica se o
componente renderiza "Complete your profile" em vez de travar.

Sentry issue: FRONTEND-1892 (340 eventos na última hora)
5

Otimize a triagem com playbooks e Knowledge

Quando o pipeline estiver em execução, deixe a autotriagem mais inteligente:Crie um playbook de triagem. Comece a partir do !triage template playbook — duplique-o e personalize com as convenções de tratamento de erros da sua equipe (error boundaries, padrões de verificação de null, formato de logging). Em seguida, passe o ID do playbook no handler do seu webhook adicionando "playbook_id": "your-playbook-id" ao corpo da requisição. Você também pode usar o Advanced Devin para gerar um playbook a partir de uma descrição do seu fluxo de trabalho de triagem.Adicione Knowledge sobre seus contratos de API e casos de borda conhecidos — por exemplo: “Respostas de /api/users podem retornar { profile: null } para usuários que não concluíram o onboarding. Sempre trate esse caso.” Use o Advanced Devin para ajudar a escrever entradas de Knowledge a partir da sua documentação existente. Quanto mais contexto o Devin tiver sobre o seu domínio, mais precisas serão as correções.Delimite os alertas com cuidado. Use as condições de regras de alerta do Sentry para limitar quais erros disparam o Devin — filtre por projeto, ambiente (apenas production) ou volume de erros. Um bom ponto de partida: acionar apenas para issues com 50+ eventos na primeira hora, para focar em erros de alto impacto.Configure uma rotina de revisão semanal. Crie um schedule que rode uma vez por semana para revisar os resultados das suas sessões de autotriagem e incorporar os aprendizados de volta ao seu playbook e ao Knowledge: