Bugsnag:是什么,错误跟踪与数据收集

作者: IT Sectr 发布日期: 2026-05-29 阅读时间: 8 分钟

Bugsnag 是一个应用程序错误和稳定性监控平台,能够在生产环境中自动检测、分组和优先处理错误,并提供完整的诊断上下文。根据 Bugsnag Documentation, 2025Bugsnag 每月处理 60 亿个事件,服务超过 7,000 个客户,包括 Airbnb、Lyft、Slack 和 PagerDuty。

要点

  • Bugsnag — 错误监控平台,具有自动错误分组、按严重程度优先处理和 CI/CD 集成功能。
  • Stability Score — 无错误会话比例的指标,以百分比显示应用程序的整体稳定性。
  • Severity-based triage — 自动将错误分为 critical、warning 和 info,帮助团队专注于重要事项。
  • Breadcrumbs — 记录错误前的事件序列,支持开发人员自定义属性。
  • Release tracking — 将错误与特定应用程序版本关联,并在发布后崩溃数量增加时自动通知。

Bugsnag 在开发中是什么

Bugsnag 是一个应用程序稳定性监控平台,成立于 2013 年,于 2019 年被 SmartBear 收购。Bugsnag 与竞争对手的主要区别在于关注稳定性作为产品的关键指标,而不仅仅是错误数量。该平台为 iOS、Android、React Native、Flutter、Web 和后端服务提供统一仪表板。

Bugsnag 中的每个错误都会根据上下文获得自动严重程度评估(critical、warning、info):是否发生应用程序崩溃、是否影响支付功能、错误是否对许多用户重复出现。团队看到的不仅仅是错误列表,而是优先处理过的待办事项列表,并标注了业务影响。

根据 SmartBear(2024)的数据,使用 Bugsnag 的团队由于自动重复分组和每个事件的完整上下文,平均事件解决时间减少了 40%。该平台与 Slack、PagerDuty、Jira、GitHub 和 GitLab 集成,可自动创建与错误相关的任务。

Stability Score 与自动优先处理

Stability Score — Bugsnag 的关键指标,显示无错误完成的会话百分比。该值计算为一定时期内无崩溃会话数与总会话数的比率。99.9% 的分数意味着一千个会话中有一个包含错误。

Stability Score 阈值与 CI/CD 集成:如果新版本部署后分数低于设定阈值(例如 99.5%),Bugsnag 会自动阻止发布或向 Slack 发送关键警报。发布健康仪表板显示每个应用程序版本的分数动态,允许跟踪特定更改对稳定性的影响。

Severity-based triage

Bugsnag 使用算法将错误自动分类为三个严重程度级别。Critical — 应用程序崩溃、支付场景中的错误,影响超过 5% 的用户。Warning — 非致命错误(handled exceptions),影响个别功能。Info — 日志、低优先级警告。这种方法可以防止「警报疲劳」,即数百条通知让人无法专注于真正关键的问题。

Severity示例操作
Critical进入应用程序时崩溃立即通知
Warning加载头像时出错在 Jira 中创建下一个冲刺的任务
Info扫描二维码时超时记录日志但不通知

为移动平台连接 Bugsnag SDK

安装 Bugsnag SDK 只需要 5 分钟:添加依赖项并使用项目的 API 密钥初始化。Bugsnag Android SDK 支持 Kotlin 和 Java,自动捕获 Java 异常、ANR 和通过信号传递的原生(C/C++)错误。

在 Android 上配置

SDK 通过 Gradle 连接并在 Application.onCreate 中初始化。Bugsnag 自动收集设备信息:型号、操作系统版本、可用内存、电池电量。Auto-notify 默认启用,将所有未处理的异常发送到 Bugsnag 服务器。

kotlin
import com.bugsnag.android.Bugsnag
import com.bugsnag.android.Configuration

class App : Application() {
    override fun onCreate() {
        super.onCreate()
        val config = Configuration("YOUR_API_KEY")
        config.autoTrackSessions = true
        config.launchDurationMillis = 5_000
        Bugsnag.start(this, config)
    }
}

该代码初始化 Bugsnag SDK,具有自动会话跟踪和最长 5 秒的启动时间。如果应用程序在此时间内未启动,Bugsnag 会将「slow launch」事件记录为警告。

在 iOS 上配置

Bugsnag iOS SDK 支持 Swift 和 Objective-C,捕获 NSException、Mach 异常(SIGABRT、SIGSEGV)和操作系统信号。该 SDK 兼容 iOS 11+ 和 SwiftUI,自动为所有 UI 事件创建 breadcrumbs:点击、导航、手势。

swift
import Bugsnag

class AppDelegate: UIResponder, UIApplicationDelegate {
    override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        Bugsnag.start(withApiKey: "YOUR_API_KEY")
        // 额外配置
        return true
    }
}

Swift 代码以最小配置启动 Bugsnag。所有未处理的异常和崩溃会自动发送到 Bugsnag 仪表板,包含完整的设备上下文和调用堆栈。

Breadcrumbs 在 Bugsnag 中是错误之前事件的结构化日志。每个 breadcrumb 包含时间戳、类型(navigation、request、state、error、manual)和任意元数据。Bugsnag 自动记录 iOS 和 Android 的 UI 事件、应用程序状态变化(background、foreground)和网络请求的 breadcrumbs。

开发人员可以为业务逻辑添加自定义 breadcrumbs:「用户将商品添加到购物车」、「创建订单的请求已发送」。当错误发生时,过去 30 秒内的所有 breadcrumbs 都会附加到该事件。Bugsnag 还支持「state」—— 一个随会话所有错误一起传输的任意数据字典。

kotlin
Bugsnag.leaveBreadcrumb(
    message = "Order created",
    metadata = mapOf(
        "order_id" to "ORD-12345",
        "total" to "49.99"
    ),
    type = BreadcrumbType.STATE
)

Bugsnag.setExtraData(
    "user_tier", "premium"
)

该代码留下关于创建订单的 breadcrumb,并设置关于用户套餐的附加信息。如果此会话中发生错误,Bugsnag 将附加包含订单号和用户类型的上下文。

Session tracking

Bugsnag 自动计算会话数量——每次应用程序启动都被视为新会话。带有错误的会话数与总会话数的比率形成 Stability Score。Session tracking 计入定价:Bugsnag 根据跟踪的会话数而非错误量进行许可,这与 Sentry 和竞争对手的按事件付费模式不同。

Release tracking 与 CI/CD 集成

Release tracking — 将每个错误与特定应用程序版本和仓库中的提交相关联的机制。Bugsnag 从 Info.plist(iOS)或 build.gradle(Android)自动确定版本,并在仪表板中按版本显示错误数量。这样可以立即看到问题是否由最新发布引入。

如果部署版本 2.4.1 后关键错误数量比 2.4.0 增加了 3 倍,Bugsnag 将此版本标记为「不稳定」并发送警报。CI/CD 集成允许在 Stability Score 降至阈值以下时阻止构建向 staging 或 production 的推广。Jenkins、GitHub Actions 和 GitLab CI 的插件将稳定性指标传递到 pipeline。

根据 Bugsnag Stability Benchmark(2024),移动应用中 68% 的错误是由新版本引入的,而不是长期存在的错误。Release tracking 将回归检测时间从几小时缩短到部署后的几分钟。

Bugsnag 与 Sentry 和 Crashlytics 的比较

在错误监控市场上有三个主要参与者:Bugsnag、Sentry 和 Firebase Crashlytics。Bugsnag 以基于会话(而非事件)的定价模式、对 Stability Score 的关注和自动严重程度优先处理而脱颖而出。Sentry 提供更深入的性能监控,具有分布式跟踪和开源代码。Crashlytics 是免费解决方案,具有基本功能,集成在 Firebase 生态系统中。

特性BugsnagSentryCrashlytics
价格(起步)最高 5,000 会话免费最高 5,000 事件免费免费
Performance monitoring有限完整,含分布式跟踪
Flutter SDK有限
Self-hosted有(开源)
Stability Score有(关键指标)

选择哪种工具取决于优先事项:如果关键指标是应用程序在生产中的稳定性,Bugsnag 提供最清晰的指标。如果需要使用分布式跟踪进行深度性能分析——Sentry。对于与 Google 生态系统集成的免费基本监控——Crashlytics。

常见问题

Bugsnag 如何确定错误的严重程度?

算法考虑三个因素:异常类型(crash 或 handled)、受影响的用户数量和场景上下文。Critical severity 在错误发生在主屏幕或支付流程中且影响超过 1% 的用户时分配。开发人员可以通过 API 或 SDK 配置手动覆盖严重程度。

Bugsnag 支持 React Native 和 Flutter 吗?

是的,Bugsnag 为 React Native(支持新架构)和 Flutter(兼容 Dart 3.x)提供 SDK。两个 SDK 都支持自动收集导航、网络请求和应用状态的 breadcrumbs,以及为业务逻辑提供自定义检测。

Bugsnag 可以集成 Jira 吗?

是的,Bugsnag 提供与 Jira 的双向集成:新错误可以自动在 Jira 中创建任务,而 Jira 中任务的关闭会将错误状态在 Bugsnag 中更改为「resolved」。支持 Jira Cloud 和 Jira Server(通过 Jira Connect)。

Bugsnag 如何影响应用程序大小?

Bugsnag SDK 在 release 构建中为 APK/IPA 大小增加大约 1.5 MB。这比 Sentry(约 2 MB)少,但比 Firebase Crashlytics(约 0.8 MB)多。建议从 debug 构建中移除 SDK 以加快编译速度,仅保留用于测试和 release 配置。

Bugsnag 可以用于后端应用吗?

是的,Bugsnag 支持后端语言:Ruby、Python、Node.js、Java、.NET、Go、PHP。后端错误与移动错误显示在同一个仪表板中,按服务分组。这允许端到端的稳定性跟踪:如果 API 宕机,开发人员可以看到问题是与客户端还是服务器相关。

总结

  • Bugsnag — 错误监控平台,着重于稳定性指标和按严重程度自动优先处理错误。
  • Stability Score — 无错误会话的百分比,评估发布质量和 CI/CD 门控的关键指标。
  • Severity-based triage 自动将错误分为 critical、warning 和 info,防止警报疲劳。
  • Release tracking 将每个错误与应用程序版本和提交相关联,快速检测回归。
  • SDK 支持 iOS、Android、React Native、Flutter 以及 9 种后端语言,统一在一个仪表板中。
  • 定价模式基于会话,使 Bugsnag 区别于竞争对手,并在预算方面具有可预测性。
  • Bugsnag 推荐给那些应用程序稳定性是关键业务指标且需要自动错误优先处理的产品团队。

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读