二、方案选型
2.1 什么是 Sentry MCP?
Sentry MCP 是一个 Model Context Protocol(MCP)服务器,它允许 AI 助手通过 Sentry API 操作错误监控数据。换句话说,你可以用自然语言指挥 AI 管理错误监控和告警。
2.2 为什么选择它?
| 方案 | 优点 | 缺点 |
|---|---|---|
| 手动查看 | 无需技术准备 | 效率低、易遗漏 |
| Sentry Webhook | 简单易用 | 功能有限 |
| Sentry API + 脚本 | 功能强大 | 需要编写代码 |
| Sentry MCP | AI 直接控制、无需编写脚本 | 需要 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
- 登录 Sentry:sentry.io/
- 进入 Settings → API → Auth Tokens
- 创建新的 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 自动分析 |
| 跟踪管理 | 手动更新 | 自动跟踪 |
六、注意事项
- 权限配置:确保 Token 有足够的权限
- 频率限制:注意 API 调用频率限制
- 敏感数据:注意保护敏感错误信息
总结
通过 Sentry MCP,我们成功将 错误监控和处理效率提升了 10+ 倍,实现了从被动发现到主动预防的转变。