Skip to content

Phase 4B:Sentry API 集成完成总结 ​

日期:2024 年 阶段:Phase 4(开发者工具与性能监控) 子阶段:4B - 数据源集成与后端连接

任务概述 ​

在成功完成项目文件结构优化和性能仪表板UI设计后,本阶段专注于将仪表板与真实 Sentry 数据源连接,实现实时性能监控和错误追踪功能。

状态:✅ 完成

📋 完成的工作 ​

1. Sentry API 客户端实现 ​

文件:.vitepress/theme/sentry-api.ts(约 350 行)

核心功能 ​

typescript
class SentryAPIClient {
  // 获取项目统计信息
  async getProjectStats(): Promise<SentryProjectStats>;

  // 获取最近错误列表
  async getRecentErrors(limit?: number): Promise<SentryEvent[]>;

  // 获取性能指标
  async getPerformanceMetrics(statsPeriod?: string): Promise<SentryMetric[]>;

  // 获取错误趋势
  async getErrorTrend(statsPeriod?: string): Promise<ErrorTrendData[]>;

  // 获取事件详情
  async getEventDetails(eventId: string): Promise<EventDetails>;

  // 创建告警规则
  async createAlertRule(name, condition, actions): Promise<void>;

  // 导出数据为 CSV
  async exportAsCSV(statsPeriod?: string): Promise<string>;
}

特点 ​

  • ✅ 完整的 TypeScript 类型定义
  • ✅ 内置错误处理和日志记录
  • ✅ 支持多个时间范围参数(1h, 24h, 7d, 30d)
  • ✅ 环境变量自动读取
  • ✅ 数据转换和规范化逻辑

2. 仪表板组件升级 ​

文件:.vitepress/theme/components/PerformanceDashboard.vue

新功能集成 ​

vue
<!-- 使用 Sentry API 客户端 -->
<script setup lang="ts">
import SentryAPIClient from '../sentry-api';

const sentryClient = new SentryAPIClient();
const data = await sentryClient.getProjectStats();
</script>

实现细节 ​

功能说明
双数据源模式支持真实 Sentry 数据和演示数据切换
自动检测配置启动时检测环境变量,自动选择数据源
自动刷新每 5 分钟自动从 Sentry 拉取更新
错误回退Sentry 失败时自动使用模拟数据
指标状态判断根据阈值自动分类(好/中/差)
用户反馈清晰的数据源状态提示

时间范围选择更新 ​

typescript
const timeRange = ref<'1h' | '24h' | '7d' | '30d'>('24h');

// 动态刷新数据按同步符号范围
const fetchData = async () => {
  const metrics = await sentryClient.getPerformanceMetrics(timeRange.value);
  // ... 更新视图
};

3. 环境变量配置 ​

文件:.env.example

bash
# Sentry 认证
VITE_SENTRY_AUTH_TOKEN=your_token_here
VITE_SENTRY_ORG=your_organization
VITE_SENTRY_PROJECT=your_project

# Sentry API 和 DSN
VITE_SENTRY_DSN=https://...
VITE_SENTRY_API_URL=https://sentry.io
VITE_SENTRY_ENVIRONMENT=development

# 功能开关
VITE_ENABLE_SENTRY=true

安全特性:

  • .env 文件已加入 .gitignore
  • 仅存储只读权限的 tokens
  • 支持 CI/CD 环境注入

4. 完整集成指南 ​

文件:docs/extra/sentry-setup.md(约 2,000 行)

目录结构 ​

1. 概述和快速开始(5 分钟)
2. Sentry 账户设置步骤
3. 获取认证凭证方法
4. 环境变量配置指南
5. 仪表板使用说明
6. API 集成细节
7. 告警和通知配置
8. 生产部署指南
9. 成本优化策略
10. 故障排除 FAQ
11. 最佳实践
12. 常用命令和资源

核心内容 ​

  • 快速集成:30 分钟内完成 Sentry 接入
  • Slack 集成:步骤式指导如何配置告警
  • Docker/Vercel:云部署环境变量设置
  • 成本控制:采样策略和成本优化技巧
  • 故障排除:10+ 常见问题和解决方案

5. 性能仪表板文档更新 ​

文件:docs/extra/performance-dashboard.md

改进 ​

  • ❌ 移除 SSR 不兼容的组件嵌入
  • ✅ 添加组件集成和注册指南
  • ✅ API 方法使用示例
  • ✅ CSV 导出示例
  • ✅ Slack 告警消息格式展示

新增内容 ​

typescript
// API 集成示例
const metrics = await sentryClient.getPerformanceMetrics('24h');

// CSV 导出
const csvData = await sentryClient.exportAsCSV('7d');

// 错误趋势
const trend = await sentryClient.getErrorTrend('7d');

🔧 技术特性 ​

性能指标状态判断 ​

typescript
// 自动状态判断逻辑
const thresholds = {
  FCP: { good: 1, warning: 1.8 },        // 秒
  LCP: { good: 2.5, warning: 4 },        // 秒
  CLS: { good: 0.1, warning: 0.25 },     // 无单位
  INP: { good: 200, warning: 500 },      // ms
  TTFB: { good: 600, warning: 1200 }     // ms
};

// 评分计算(0-100)
score = FCP×0.15 + LCP×0.30 + CLS×0.15 + INP×0.25 + TTFB×0.15

数据流程 ​

┌─────────────────┐
│  Sentry Cloud   │
│   或 自托管      │
└────────┬────────┘
         │ HTTPS API
         ↓
┌─────────────────────────────┐
│  sentry-api.ts 客户端        │
│  - 数据获取                  │
│  - 类型转换                  │
│  - 错误处理                  │
└────────┬────────────────────┘
         │
      ↙  ↖
 成功 /    \ 失败
    /      \
   ↓        ↓
┌──────────────────┐
│ Sentry 真实数据  │  模拟数据
│                  │  备用方案
└────────┬─────────┘
         │
         ↓
┌──────────────────────────────┐
│ PerformanceDashboard.vue      │
│  - 显示 6 个指标卡             │
│  - 计算性能评分               │
│  - 自动刷新                   │
└──────────────────────────────┘

✅ 验证清单 ​

项目状态说明
Sentry API 客户端✅8 个方法,完全类型化
环境变量示例✅8 个变量,包含说明
仪表板升级✅集成客户端,支持两种数据源
快速开始指南✅5 分钟完成配置
完整集成指南✅2000 行,覆盖全部场景
生产部署配置✅Vercel/Netlify/Docker
Slack 告警配置✅完整步骤
项目构建✅pnpm build 通过
TypeScript 检查✅配置文件类型正确
向后兼容性✅所有路由和导入保持不变

📊 代码统计 ​

新增文件数:6
  - .vitepress/theme/sentry-api.ts (350 行)
  - .vitepress/theme/components/PerformanceDashboard.vue (700 行)
  - .env.example (20 行)
  - docs/extra/sentry-setup.md (2000 行)
  - 更新 docs/extra/performance-dashboard.md

总代码行数新增:3,070 行
总文档行数新增:2,020 行

构建结果:
  ✅ 通过(17.43 秒)
  ✅ 客户端 + 服务器包生成
  ✅ 页面渲染
  ✅ Sitemap 生成

🎯 现在可以做什么 ​

1. 配置 Sentry(5 分钟) ​

bash
# 1. 复制环境变量模板
cp .env.example .env

# 2. 填写 Sentry 凭证(从 sentry.io 获取)
VITE_SENTRY_AUTH_TOKEN=xxxxxxxxxxx
VITE_SENTRY_ORG=your-org
VITE_SENTRY_PROJECT=your-project

# 3. 启动开发服务器
pnpm docs:dev

2. 测试数据连接 ​

访问包含仪表板的页面,验证:

  • ✅ 数据源显示(Sentry 或演示数据)
  • ✅ 6 个指标卡显示数据
  • ✅ 性能评分计算正确
  • ✅ 自动刷新工作

3. 配置告警(可选) ​

bash
# Slack 告警设置步骤详见 sentry-setup.md
# 快速链接:https://api.slack.com/apps

🔜 下一步(Phase 4C) ​

短期(本周) ​

  • [ ] Webhook 告警集成 - 自动通知系统
  • [ ] 错误详情展示 - 点击错误卡显示堆栈跟踪
  • [ ] 曲线图表 - 时间序列性能趋势可视化
  • [ ] 环境切换 - 支持多环境监控(dev/staging/prod)

中期(1-2 周) ​

  • [ ] 性能报告生成 - PDF/CSV 自动报告
  • [ ] 性能对标 - 与竞品对比
  • [ ] 异常检测 - 性能突跌自动告警
  • [ ] RUM 集成 - 真实用户监控

长期(Phase 5) ​

  • [ ] 机器学习预测 - 性能趋势预测
  • [ ] 用户行为分析 - 关联用户体验指标
  • [ ] 自动优化建议 - AI 驱动的优化方案
  • [ ] A/B 测试框架 - 性能对比测试

📚 相关文档 ​

🎉 总结 ​

Phase 4B 成功完成!

✅ 性能仪表板现在可以连接真实 Sentry 数据源 ✅ 完整的 API 客户端和错误处理 ✅ 详细的集成和部署指南 ✅ 模拟数据备用方案确保本地开发可用 ✅ 生产构建通过验证

项目现在拥有完整的性能监控基础设施,可以用于:

  • 🚀 实时 Web Vitals 监控
  • 🐛 错误追踪和诊断
  • ⚠️ 自动告警和通知
  • 📊 性能报告和分析

下一步:按照 docs/extra/sentry-setup.md 配置 Sentry,即可开始使用!


作者:GitHub Copilot 提交:f41128d (master) 时间戳:2024 年

内容仅供学习参考,如有错误欢迎指正与 PR