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