Sentry
如何将 Sentry 与 OpenReplay 集成,并在查看会话录制的同时查看后端错误。
1. 生成 Sentry 身份验证令牌
Section titled 1. 生成 Sentry 身份验证令牌前往 Sentry > Account > API > Auth Tokens,并生成具有 event:read、org:read 和 project:read 权限的令牌。后者将在下一步中用于在 OpenReplay 控制面板中启用 Sentry 集成。

2. 在 OpenReplay 中启用集成
Section titled 2. 在 OpenReplay 中启用集成从 Sentry 控制面板的 Projects 页面复制你的 organization_slug 和 project_slug。


然后在 OpenReplay 控制面板的 ‘Preferences > Integration’ 下,将它们与你在第 1 步中生成的令牌一起粘贴进去。
3. 传递 openReplaySessionToken
Section titled 3. 传递 openReplaySessionToken为了让 OpenReplay 能够将 Sentry 事件与录制的用户会话关联起来,Sentry 事件应使用唯一令牌进行标记。
Frontend
Section titled Frontend如果你在前端使用 Sentry,可以参考下面的示例。
import OpenReplay from "@openreplay/tracker";
import * as Sentry from "@sentry/browser";
const tracker = new OpenReplay({
projectKey: MY_PROJECT_KEY,
onStart: ({ sessionToken }) => {
Sentry.setTag("openReplaySessionToken", sessionToken);
},
})
或者在使用代码片段的情况下:
if (window.OpenReplay.getSessionToken()) {
Sentry.setTag("openReplaySessionToken", window.OpenReplay.getSessionToken());
}
Backend
Section titled Backend否则,如果你在后端使用 Sentry SDK,则需要在每个想要跟踪的请求中从前端传递会话令牌。这可以通过自定义 HTTP 标头来实现。在下面的示例中,我们使用 fetch API 来发送该标头。
const headers = {
Accept: 'application/json',
'Content-Type': 'application/json',
};
if (tracker.getSessionToken()) { // or window.OpenReplay instead of tracker if you're using the snippet
headers['X-OpenReplay-SessionToken'] = tracker.getSessionToken(); // Inject openReplaySessionToken
}
fetch('www.your-backend.com', {
'GET',
headers,
});
你也可以使用 OpenReplay 的 Fetch Plugin 为每个跟踪请求自动设置该标头。
然后,你可以从标头中提取 openReplaySessionToken,并将其添加到你的 Sentry scope 中(最好使用中间件或装饰器)。
with configure_scope() as scope:
scope.set_tag('openReplaySessionToken', app.current_request.headers.get('X-OpenReplay-SessionToken'))
标签的名称必须正好是 openReplaySessionToken。
4. 附加 openReplaySessionURL(可选但非常有用)
Section titled 4. 附加 openReplaySessionURL(可选但非常有用)如果你希望将 OpenReplay 录制的 URL 与 Sentry 关联起来,并将其显示为标签,下面是一个操作示例:
const tracker = new OpenReplay({
projectKey: window.OPENREPLAY_PROJECT_KEY,
onStart: ({ sessionToken, sessionID }) => {
// This is to link from OpenReplay -> Sentry
Sentry.setTag("openReplaySessionToken", sessionToken);
// This is to link from Sentry -> OpenReplay (requires tracker v3.6.0+)
Sentry.setTag(
"openReplaySessionURL",
tracker.getSessionURL();
);
},
});