Sentry 兼容#
LogTap 原生实现了 Sentry 的 Store 与 Envelope 上报协议,接管 /api/:projectId/store/ 与 /api/:projectId/envelope/ 两个端点。@sentry/browser、@sentry/node 等 SDK 不需要换库,异常堆栈、面包屑、标签与上下文原样入库。
接入方式#
把现有 Sentry SDK 初始化代码中的 DSN 主机替换为 LogTap 网关地址即可:
// 之前
Sentry.init({
dsn: "https://[email protected]/0",
});
// 之后:只改主机与项目 ID,其余不变
Sentry.init({
dsn: "https://examplePublicKey@your-logtap-host/api/1/",
});要点:
- DSN 中的项目 ID 对应 LogTap 控制台里的项目 ID
- 鉴权沿用 Sentry 的
sentry_key,也可以用X-Project-Key - SDK 端的采样、环境、标签、用户上下文等配置全部继续生效
数据处理#
- Store / Envelope 两种协议都按 Sentry 协议实现,事件进入与日志相同的存储,控制台统一查询
- 上报 IP 经离线 GeoLite2 解析出国家、城市与 ASN(启用 GeoIP 时)
从 Sentry 迁移历史数据#
LogTap 附带迁移工具,可以从现有 Sentry 实例导入历史事件,切换过程不需要丢弃旧数据。工具与使用说明见仓库 logtap 源码目录。
常见问题#
- 需要改业务代码吗? 不需要,改 DSN 即可;SDK 与上报链路零改动。
- 协议兼容度? Store 与 Envelope 端点按 Sentry 协议原生实现,覆盖 SDK 默认上报所需的能力;如遇到高级特性缺失,欢迎在 GitHub 提 issue。
- 还能继续用自定义日志/埋点吗? 可以,Sentry 异常与自定义数据是同一套项目体系,见上报接口。