一次需求引发的效率革命:用 Sentry MCP 实现智能化错误监控与告警

0 阅读1分钟

二、方案选型

2.1 什么是 Sentry MCP?

Sentry MCP 是一个 Model Context Protocol(MCP)服务器,它允许 AI 助手通过 Sentry API 操作错误监控数据。换句话说,你可以用自然语言指挥 AI 管理错误监控和告警

2.2 为什么选择它?

方案优点缺点
手动查看无需技术准备效率低、易遗漏
Sentry Webhook简单易用功能有限
Sentry API + 脚本功能强大需要编写代码
Sentry MCPAI 直接控制、无需编写脚本需要 MCP 环境

三、实现步骤

3.1 环境准备

首先,你需要安装 Sentry MCP。以下是安装命令:

# 使用 uvx 安装
uvx mcp-server-sentry

3.2 配置 MCP

在项目的 MCP 配置文件中添加:

{
  "mcpServers": {
    "sentry": {
      "command": "uvx",
      "args": ["mcp-server-sentry"],
      "env": {
        "SENTRY_ORG": "your-org",
        "SENTRY_AUTH_TOKEN": "your-token"
      }
    }
  }
}

3.3 配置 Sentry Token

  1. 登录 Sentry:sentry.io/
  2. 进入 Settings → API → Auth Tokens
  3. 创建新的 Token,需要以下权限:
    • event:read - 读取事件
    • project:read - 读取项目
    • issue:read - 读取问题

3.4 自动化错误分析

配置完成后,你可以直接用自然语言指挥 AI。以下是我们当时使用的提示词:

请帮我完成以下任务:
1. 查看过去 24 小时的所有错误
2. 按错误类型分组统计数量
3. 对每个错误类型分析可能的原因
4. 找出影响最大的 5 个错误
5. 生成错误分析报告

AI 会自动:

  • 获取错误列表
  • 分析错误模式
  • 评估影响范围
  • 生成分析报告

3.5 自动化告警处理

请帮我完成以下任务:
1. 监控新的严重错误
2. 自动分析错误堆栈,找出根本原因
3. 根据错误类型自动创建 JIRA Issue
4. 通知相关开发人员
5. 跟踪 Issue 处理进度

四、核心代码示例

const axios = require('axios');

const SENTRY_ORG = process.env.SENTRY_ORG;
const SENTRY_TOKEN = process.env.SENT

RY_TOKEN;

const api = axios.create({
  baseURL: 'https://sentry.io/api/0',
  headers: {
    Authorization: `Bearer ${SENTRY_TOKEN}`
  }
});

// 获取项目列表
async function getProjects() {
  const response = await api.get(`/organizations/${SENTRY_ORG}/projects/`);
  return response.data;
}

// 获取错误列表
async function getIssues(projectSlug) {
  const response = await api.get(
    `/projects/${SENTRY_ORG}/${projectSlug}/issues/`
  );
  return response.data;
}

// 获取错误详情
async function getIssueDetail(issueId) {
  const response = await api.get(`/issues/${issueId}/`);
  return response.data;
}

// 获取错误事件
async function getIssueEvents(issueId) {
  const response = await api.get(`/issues/${issueId}/events/`);
  return response.data;
}

// 自动化错误分析
async function analyzeErrors(projectSlug) {
  const issues = await getIssues(projectSlug);
  
  const analysis = {
    total: issues.length,
    byLevel: {},
    byType: {},
    critical: []
  };
  
  for (const issue of issues) {
    // 按级别统计
    const level = issue.level;
    analysis.byLevel[level] = (analysis.byLevel[level] || 0) + 1;
    
    // 统计关键错误
    if (level === 'error' || level === 'fatal') {
      const detail = await getIssueDetail(issue.id);
      const events = await getIssueEvents(issue.id);
      
      analysis.critical.push({
        id: issue.id,
        title: issue.title,
        count: issue.count,
        userCount: issue.userCount,
        firstSeen: issue.firstSeen,
        lastSeen: issue.lastSeen,
        sampleEvent: events[0]
      });
    }
  }
  
  return analysis;
}

// 自动创建 Issue
async function createJiraIssue(issue) {
  // 调用 JIRA API 创建 Issue
  console.log(`创建 JIRA Issue: ${issue.title}`);
}

五、效果对比

指标手动操作MCP 自动化
错误分析1-2 小时/天约 5 分钟/天
告警响应30 分钟+实时
问题定位手动分析AI 自动分析
跟踪管理手动更新自动跟踪

六、注意事项

  1. 权限配置:确保 Token 有足够的权限
  2. 频率限制:注意 API 调用频率限制
  3. 敏感数据:注意保护敏感错误信息

总结

通过 Sentry MCP,我们成功将 错误监控和处理效率提升了 10+ 倍,实现了从被动发现到主动预防的转变。