← 返回博客列表

Sentry 与 Bugsnag 事件不上报:后台打不开、DSN 区域与接入超时全解

2026-09-11 · 刺猬VPN

接错误监控时,页面上的异常明明已经抛出,Sentry 项目里的 Issues 却始终是空的;或者 Bugsnag 的 Error inbox 停在很久以前,新版本崩溃根本不出现。与此同时,浏览器打开 sentry.io 或 app.bugsnag.com 会一直转圈,组织切换器出不来,设置页里的 Client Keys 也点不进去。

空列表有三类原因,不要混在一起改代码。第一类是人打不开后台,所以你根本不知道事件有没有到。第二类是应用所在网络到不了接入域名,SDK 初始化成功但发送失败。第三类是 DSN、区域和 API key 配错,服务端直接丢弃。下面按这个顺序处理。套餐配额、保留天数和区域节点以官方最新条款为准。

两家后台和接入域名并不一样

DSN 不是普通网址。它形如 https://密钥@o组织.ingest.us.sentry.io/项目号。密钥、组织编号、区域和项目号任何一段抄错,后台都不会出现事件,SDK 侧常常只在调试日志里写 discarded 或 403。欧洲项目的 DSN 不能拿去对美国接入点。Bugsnag 同理:通知用的 API key 和后台登录不是同一把钥匙。

对比项SentryBugsnag
后台sentry.io,左上角切换组织app.bugsnag.com 的项目列表
凭证位置Settings、Projects、Client Keys(DSN)Project settings 里的 API key
美国接入o 数字.ingest.us.sentry.ionotify.bugsnag.com
欧洲接入ingest.de.sentry.io 一类域名按数据驻留区域的通知域名
会话与性能同一 DSN 下的 envelopesessions.bugsnag.com
自建自建 Sentry 的 Relay 地址自建通知端点,不再走公有云

从后台打不开到事件进列表:分步操作

  • 第一步:先把线路准备好,连上刺猬VPN。自定义用户名和密码即可匿名注册,不需要邮箱、也不需要手机号;免费节点永久免费、不限流量、不限速,注册即用。全程 HTTPS+AES 加密传输。打开后台和让本机 SDK 把事件送出,都要走这条线路;
  • 第二步:浏览器无痕窗口打开 sentry.io,确认能看到组织名和 Issues、Performance、Replays。若停在登录页转圈,先不要改项目配置;
  • 第三步:进入 Settings、Projects,点开项目,打开 Client Keys(DSN)。复制完整 DSN,不要只抄公钥那一段。区域对不上时,页面上会有 US 或 EU 标识;
  • 第四步:在开发机用调试开关把 SDK 的 debug 打开,故意抛一个测试异常。日志里应出现向 ingest 域名发送 envelope 的记录。只有 “Invalid DSN” 或 403 时,回到第三步重抄;
  • 第五步:Bugsnag 打开 app.bugsnag.com,进入对应 Project settings,核对 Notifier API key。示例代码里的 key 必须和这个项目一致,从别的项目复制过来会返回 Invalid API key;
  • 第六步:上传符号表或 source map 时单独测一次。Sentry 用 sentry-cli,先 sentry-cli info 看登录是否成功,再执行 releases files upload。上传失败和事件发送失败不是同一个域名;
  • 第七步:自建实例不要连公有云 DSN。Sentry 自建把 DSN 主机改成你的 Relay;Bugsnag 自建把 notify 端点改成部署文档里的地址。混用会得到项目不存在;
  • 第八步:CI 里上报要给运行器单独配线路。人能打开网页,不代表 GitLab Runner 或 GitHub 托管运行器出得去。运行器网络见 GitLab 与 Bitbucket 访问 里关于克隆和拉取超时的处理,思路相同:构建机也要能解析并连上接入域名;
  • 第九步:确认 Issues 或 Error inbox 出现测试事件后,再关掉调试日志,避免生产环境把面包屑打满配额。

按现象排查:后台、发送、配额

先区分「人进不去」和「程序送不出去」。前者改节点,后者查 DSN 主机和运行环境的出口。

  • sentry.io 空白或登录回调停住:后台域名没走线路。换节点后无痕重开,不要先改 SDK;
  • SDK 日志 “Invalid DSN”:字符串被截断,或把欧盟 DSN 填进了美国项目。整段重抄;
  • HTTP 403,正文 project not found:项目号或组织编号不对,也可能用了已禁用的 key。到 Client Keys 看状态是不是 Active;
  • HTTP 429,rate limit exceeded:项目配额用尽,事件被丢弃。到后台的 Stats 看丢弃原因,而不是加长重试;
  • Bugsnag 返回 Invalid API key:key 属于另一个项目,或复制时混入了引号和空格;
  • Payload too large:单条事件把请求体、面包屑塞得过大。减少附件后再发,否则服务端直接拒;
  • sentry-cli 提示 error: API request failed:上传符号表的 API 主机和 ingest 不是同一个。cli 登录用的 auth token 过期也会是这句,到 Settings、Account、API、Auth Tokens 重新生成;
  • 本地能上报、生产不能:生产机器的出口没有走线路,或防火墙只放行了 443 到部分域名。把 ingest 与 notify 域名单独放进允许列表。

人看后台和程序上报,线路怎么配

错误监控的流量远小于视频,失败点在域名到不了。免费节点适合先打开后台、发送一条测试异常。每天上传符号表、挂着会话回放,用时长套餐按周期计费,期间不限流量、不限速。实际可用性取决于当前网络环境。

对比项会员节点免费节点不连线路
打开 SaaS 后台组织页和设置页能进适合先试能否登录页面常转圈
SDK 发送事件开发机到接入点的请求能完成调试一条测试事件够用事件停在本地队列
符号表上传sentry-cli 与发布 API 能连通偶发超时要重试releases 一直是空的
配额不改变厂商的事件配额同左同左
长时间挂代理的构建时长套餐期间不限流量、不限速永久免费、不限流量、不限速CI 步骤超时
适合场景每天看告警、传符号表确认 DSN 是否写对只能看离线日志

本机、CI 和自建实例要分开配

笔记本上 sentry.io 能开,不代表流水线里的 sentry-cli 能登录。人用的图形客户端和 CI 的环境变量是两套出口。给运行器配线路时,只保证 git clone 成功还不够,还要能访问 sentry.io 的 API 和 ingest 主机。认证令牌放在 CI 的密钥里,不要写进仓库。

自建 Sentry 若装在境外云上,团队成员打开自建域名和打开公有云是同一类问题:域名不同,照样可能被中途重置。把自建主机名单独验证一次,不要用公有云 DSN 去对自建项目。Bugsnag 自建的通知端点同样单独测,curl 能到登录页,不代表 notify 路径返回 200。

手机崩溃要等 App 下次启动才上传。系统杀掉进程后,事件留在本地磁盘。人在国内打开后台看空列表,有时只是手机那一侧还没把队列送出。让测试机走同一条线路,再冷启动一次 App,Issues 里才出现刚才那条崩溃。

浏览器能开 Issues,不代表信封已经进了项目。调试日志里如果只有正在发送、却没有状态码,请求多半停在解析或连接被重置。对接入主机做一次解析,看它有没有被指到局域网或明显错误的地址。解析正常仍发送失败,再换节点。不要先把采样率拉满,线路一旦恢复,配额会被测试流量打满。

性能事务和会话回放共用这一条 DSN,体积却差很多。回放文件大,弱链路上会先超时,错误事件却可能已经在 Issues 里。看到测试异常到了、回放仍是空的,不要认定整条线路都坏了。先关掉回放采样,确认错误稳定,再单独开回放。Bugsnag 的面包屑过多会直接报载荷过大,标题本身其实已经够定位。

组织邀请和单点登录走的是回调,不是接入域名。队友点邮件里的邀请,跳回后台时线路断了,页面会空白,成员列表里这个人仍停在已邀请。让对方用能打开后台的同一条节点重开邀请链接。人能进后台之后,仍然要单独发一条测试事件,回调通了不等于接入通了。

自建和公有云不要在同一台构建机上混用环境变量。DSN 若还指向旧项目,新项目的 Issues 会一直是空的,旧项目却多出测试异常。发布前先看当前组织,再发测试事件。Bugsnag 的通知密钥也要和你正在看的那个项目一致。预发和正式分成两个项目时,看错项目会以为线上没有崩溃。

告警配在 Alerts 里。测试事件已经在 Issues 里,邮箱却没有信,先查垃圾箱和通知渠道,不要连续再抛异常。浏览器里的通知和邮件不是同一条通道。线路只负责把事件送进项目,信能不能进邮箱是邮件服务商的事。配额页已经标出丢弃时,被丢掉的事件不会触发告警,要先处理配额再谈通知。打开统计页时把时间范围改到今天,避免把上周的空窗误看成当前没有流量。项目切换器也要停在你正在测的那个项目上。

和代码托管、模型接口怎么分工

仓库克隆、流水线拉依赖超时,处理顺序见 GitLab、Bitbucket 国内访问慢怎么办。模型接口的密钥、区域和超时是另一类请求,见 OpenAI API 开发者访问。Sentry 的 DSN 不能拿去调对话接口,仓库的访问令牌也不能填进 Client Keys。

三件事可以共用一条线路,但凭证必须各用各的。先让浏览器能打开后台,再让 SDK 打到 ingest,最后才让 CI 上传符号表。跳过第一步直接改采样率,空列表不会因此出现。

采样率、beforeSend 过滤和配额丢弃也会让 Issues 变空。线路通了以后,如果调试日志明确写了 discarded by sampling,再去改 tracesSampleRate,不要继续换节点。

常见报错速查表

现象原因解决办法
后台一直转圈控制台域名未走线路换节点,无痕窗口重开
Invalid DSNDSN 被截断或区域抄错从 Client Keys 整段重抄
403 project not found项目号或 key 已禁用核对 Active 状态的 DSN
429 rate limit exceeded配额用尽看 Stats 里的丢弃原因
Invalid API keyBugsnag 用了别的项目的 key从当前 Project settings 重抄
Payload too large面包屑或附件过大减掉附件后再发
API request failed符号表 API 或令牌失败重做 Auth Token 后再上传

高频问答

  • 问:SDK 初始化没有报错,为什么 Issues 还是空的?答:初始化只检查 DSN 格式,发送是另一次请求。看调试日志里有没有打到 ingest 域名;
  • 问:美国项目和欧洲项目能共用 DSN 吗?答:不能。主机名里的区域不同,抄错会被丢弃;
  • 问:免费节点够不够排查?答:打开后台、发一条测试事件够用。每天传符号表用时长套餐,期间不限流量、不限速;
  • 问:自建 Sentry 还要不要管公有云?答:DSN 主机改成你的 Relay 之后,要单独验证那个主机名,不要再连 ingest.sentry.io;
  • 问:Bugsnag 的登录密码能当 API key 吗?答:不能。通知 key 在 Project settings,和账号密码不是同一个字段;
  • 问:手机上崩溃了,后台要等多久?答:多数 SDK 在下次启动时补发。让手机走同一条线路再冷启动一次。

把上报链路固定成三步

Sentry 打不开、事件不上报、DSN 区域抄错、429 被丢弃,以及 Bugsnag 的 Invalid API key、载荷过大,都要先确认请求有没有离开本机。人看后台、程序打 ingest、命令行传符号表,是三个域名。测试异常用固定节点发,确认 Issues 里出现之后再关调试。

刺猬VPN 采用 HTTPS+AES 加密传输,支持按域名的智能分流和断线保护。自定义用户名和密码即可匿名注册,不需要邮箱和手机号。免费节点永久免费、不限流量、不限速;时长套餐按周期计费,期间不限流量、不限速。一个账号支持多设备同时在线。厂商的配额和区域策略以官方最新条款为准。实际可用性取决于当前网络环境。

开始使用刺猬VPN:免费节点即刻体验,全球会员线路

刺猬VPN提供永久免费节点,不限流量;无需邮箱,自定义用户名即可匿名注册。一个账号支持多设备同时在线,实际可用性取决于当前网络环境。