Sentry 简介 #
什么是错误追踪? #
在了解 Sentry 之前,我们需要先理解"错误追踪"(Error Tracking)的概念。错误追踪是一种监控和诊断应用程序异常的技术,帮助开发者快速发现、定位和修复问题。
text
┌─────────────────────────────────────────────────────────────┐
│ 错误追踪的本质 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 传统调试方式: │
│ │
│ 用户报告问题 → 开发者复现 → 查看日志 → 定位问题 │
│ │
│ 问题: │
│ ❌ 依赖用户反馈,信息不完整 │
│ ❌ 难以复现问题 │
│ ❌ 日志分散,难以关联 │
│ ❌ 响应时间长 │
│ │
│ 错误追踪方式: │
│ │
│ 错误发生 → 自动捕获 → 实时通知 → 完整上下文 → 快速定位 │
│ │
│ 优势: │
│ ✅ 自动捕获所有错误 │
│ ✅ 实时告警通知 │
│ ✅ 完整的错误上下文 │
│ ✅ 快速定位和修复 │
│ │
└─────────────────────────────────────────────────────────────┘
什么是 Sentry? #
Sentry 是一个开源的实时错误追踪和性能监控平台,帮助开发者实时监控和修复应用程序中的崩溃和性能问题。它支持多种编程语言和框架,提供丰富的错误上下文信息。
核心定位 #
text
┌─────────────────────────────────────────────────────────────┐
│ Sentry │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 错误追踪 │ │ 性能监控 │ │ Release │ │
│ │ │ │ │ │ 追踪 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 实时告警 │ │ 上下文信息 │ │ Issue 管理 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
Sentry 解决的问题 #
text
┌─────────────────────────────────────────────────────────────┐
│ Sentry 解决的问题 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 生产环境中的痛点: │
│ │
│ 1. 错误发现滞后 │
│ 依赖用户反馈 │
│ 问题已经影响大量用户 │
│ │
│ 2. 错误信息不足 │
│ 只有错误消息 │
│ 缺少环境、用户、操作等信息 │
│ │
│ 3. 问题难以复现 │
│ 无法复现用户遇到的问题 │
│ 缺少操作路径 │
│ │
│ 4. 性能问题难定位 │
│ 应用变慢但不知道原因 │
│ 缺少性能指标 │
│ │
│ Sentry 解决方案: │
│ │
│ ✅ 实时捕获:错误发生立即上报 │
│ ✅ 完整上下文:设备、浏览器、用户、操作路径 │
│ ✅ 智能聚合:相同错误自动分组 │
│ ✅ 性能监控:追踪慢请求和性能瓶颈 │
│ ✅ Release 关联:知道哪个版本引入的问题 │
│ │
└─────────────────────────────────────────────────────────────┘
Sentry 的历史 #
发展历程 #
text
2010年 ─── Sentry 项目启动
│
│ Disqus 内部开发
│ Python Django 项目
│
2012年 ─── 开源发布
│
│ GitHub 开源
│ 社区贡献增长
│
2015年 ─── 商业化
│
│ 成立 Sentry.io
│ 提供 SaaS 服务
│
2018年 ─── 功能扩展
│
│ 性能监控
│ Release 追踪
│
2020年 ─── 企业级功能
│
│ Session Replay
│ 智能告警
│
2023年 ─── AI 增强
│
│ AI 问题分析
│ 智能建议
│
至今 ─── 行业标准
│
│ 数百万开发者使用
│ 支持 30+ 语言/框架
里程碑版本 #
| 版本 | 时间 | 重要特性 |
|---|---|---|
| 8.0 | 2018 | 性能监控、分布式追踪 |
| 9.0 | 2019 | Release 健康、Issue 分组优化 |
| 20.0 | 2020 | Session Replay、移动端增强 |
| 21.0 | 2021 | 仪表板改进、告警规则 |
| 22.0 | 2022 | 性能优化、新 SDK |
| 23.0 | 2023 | AI 分析、Cron 监控 |
Sentry 的核心特点 #
1. 多平台支持 #
Sentry 支持几乎所有主流编程语言和框架:
text
┌─────────────────────────────────────────────────────────────┐
│ Sentry 平台支持 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 前端: │
│ JavaScript, TypeScript, React, Vue, Angular, Next.js │
│ │
│ 移动端: │
│ iOS (Swift/Objective-C), Android (Java/Kotlin), React │
│ Native, Flutter │
│ │
│ 后端: │
│ Python, Node.js, Java, Go, Ruby, PHP, .NET, Rust │
│ │
│ 框架: │
│ Django, Flask, Express, Spring, Rails, Laravel │
│ │
│ 桌面: │
│ Electron, .NET WPF, Qt │
│ │
└─────────────────────────────────────────────────────────────┘
2. 丰富的错误上下文 #
javascript
// Sentry 捕获的错误包含完整上下文
{
"error": {
"message": "Cannot read property 'id' of undefined",
"type": "TypeError",
"stacktrace": [...]
},
"context": {
"user": {
"id": "123",
"email": "user@example.com",
"username": "john_doe"
},
"browser": {
"name": "Chrome",
"version": "120.0"
},
"os": {
"name": "Windows",
"version": "10"
},
"url": "https://example.com/dashboard",
"breadcrumbs": [
{ "type": "navigation", "message": "Navigate to /dashboard" },
{ "type": "http", "message": "GET /api/users" }
]
}
}
3. 智能错误聚合 #
text
┌─────────────────────────────────────────────────────────────┐
│ 错误聚合机制 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 相同错误自动分组: │
│ │
│ Issue #1234: TypeError: Cannot read property 'id' │
│ ├── 发生次数: 1,234 次 │
│ ├── 影响用户: 567 人 │
│ ├── 首次发生: 2024-01-15 10:30:00 │
│ └── 最后发生: 2024-01-20 15:45:00 │
│ │
│ 分组规则: │
│ - 错误类型 (TypeError, ReferenceError...) │
│ - 错误消息模式 │
│ - 堆栈指纹 │
│ │
└─────────────────────────────────────────────────────────────┘
4. 实时告警 #
yaml
# 告警规则示例
rules:
- name: "高优先级错误"
conditions:
- level: error
- threshold: 10 # 10分钟内
- count: 100 # 超过100次
actions:
- type: email
targets: ["dev-team@example.com"]
- type: slack
channel: "#alerts"
- type: webhook
url: "https://hooks.example.com/sentry"
5. Release 追踪 #
text
┌─────────────────────────────────────────────────────────────┐
│ Release 追踪 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Release v2.1.0 │
│ ├── 发布时间: 2024-01-20 │
│ ├── 新增问题: 5 个 │
│ ├── 解决问题: 12 个 │
│ ├── 错误率: 0.5% │
│ └── 崩溃率: 0.1% │
│ │
│ Release v2.0.0 │
│ ├── 发布时间: 2024-01-15 │
│ ├── 新增问题: 8 个 │
│ ├── 解决问题: 20 个 │
│ ├── 错误率: 1.2% │
│ └── 崩溃率: 0.3% │
│ │
└─────────────────────────────────────────────────────────────┘
Sentry vs 其他监控工具 #
对比分析 #
| 特性 | Sentry | Bugsnag | Rollbar | LogRocket |
|---|---|---|---|---|
| 开源 | ✅ | ❌ | ❌ | ❌ |
| 自托管 | ✅ | ❌ | ❌ | ❌ |
| 性能监控 | ✅ | ⚠️ | ⚠️ | ✅ |
| Session Replay | ✅ | ❌ | ❌ | ✅ |
| 价格 | 免费/付费 | 付费 | 付费 | 付费 |
| 语言支持 | 30+ | 20+ | 15+ | 前端为主 |
选择建议 #
text
┌─────────────────────────────────────────────────────────────┐
│ 选择指南 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 选择 Sentry 的场景: │
│ ✅ 需要开源和自托管 │
│ ✅ 多语言/多平台项目 │
│ ✅ 需要性能监控 │
│ ✅ 团队协作和 Issue 管理 │
│ ✅ Release 追踪 │
│ │
│ 选择其他工具的场景: │
│ ⚠️ 只需前端监控 → 考虑 LogRocket │
│ ⚠️ 预算充足、需企业支持 → 考虑 Bugsnag │
│ │
└─────────────────────────────────────────────────────────────┘
Sentry 的应用场景 #
1. 前端应用监控 #
javascript
// React 应用集成
import * as Sentry from "@sentry/react";
Sentry.init({
dsn: "https://xxx@sentry.io/123",
integrations: [
new Sentry.BrowserTracing(),
new Sentry.Replay(),
],
tracesSampleRate: 1.0,
replaysSessionSampleRate: 0.1,
});
2. 后端服务监控 #
python
# Python Flask 应用集成
import sentry_sdk
from sentry_sdk.integrations.flask import FlaskIntegration
sentry_sdk.init(
dsn="https://xxx@sentry.io/123",
integrations=[FlaskIntegration()],
traces_sample_rate=1.0,
)
3. 移动应用监控 #
swift
// iOS Swift 应用集成
import Sentry
SentrySDK.start { options in
options.dsn = "https://xxx@sentry.io/123"
options.tracesSampleRate = 1.0
}
4. 微服务架构 #
text
┌─────────────────────────────────────────────────────────────┐
│ 微服务追踪 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 前端 │────>│ API网关 │────>│ 服务A │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────┐ ┌─────────┐ │
│ │ 服务B │ │ 服务C │ │
│ └─────────┘ └─────────┘ │
│ │ │ │
│ └───────┬───────┘ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Sentry │ │
│ │ 统一监控 │ │
│ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
Sentry 的核心概念 #
Organization(组织) #
组织的最顶层容器,代表一个公司或团队。
Project(项目) #
组织下的具体应用或服务,每个项目有独立的 DSN。
Issue(问题) #
一组相似的错误事件,Sentry 会自动聚合。
Event(事件) #
单次错误发生的记录,包含完整的上下文信息。
Release(发布) #
应用的版本标识,用于追踪问题归属版本。
Environment(环境) #
部署环境标识,如 production、staging、development。
Sentry 的架构 #
text
┌─────────────────────────────────────────────────────────────┐
│ Sentry 架构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 应用层 │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ 前端 │ │ 后端 │ │ 移动端 │ │ │
│ │ └────┬────┘ └────┬────┘ └────┬────┘ │ │
│ └───────┼────────────┼────────────┼───────────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ SDK 层 │ │
│ │ Sentry SDK 捕获错误、收集上下文、上报事件 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 服务层 │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ Ingest │ │ Process │ │ Store │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 存储层 │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │PostgreSQL│ │ ClickHouse│ │ Redis │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
学习路径 #
text
入门阶段
├── Sentry 简介(本文)
├── 安装与配置
└── 错误捕获基础
进阶阶段
├── 上下文信息
├── 前端集成
├── 后端集成
└── 性能监控
高级阶段
├── Release 追踪
├── 告警配置
├── Source Maps
└── 隐私与安全
实战阶段
├── 多语言项目集成
├── 微服务监控
└── 最佳实践
下一步 #
现在你已经了解了 Sentry 的基本概念,接下来学习 安装与配置 开始实际使用 Sentry!
最后更新:2026-03-29