Syncline icon

Syncline

Syncline 是一款开源、可自托管的可观测性工具,将浏览器会话回放与 OpenTelemetry 分布式追踪及数据库活动连接到同一时间线,帮助工程团队从用户操作追踪请求,定位后端服务与查询问题。

Syncline

将会话回放与分布式追踪连接起来

Syncline 是一款开源、可自托管的可观测性工具,将浏览器会话回放与后端分布式追踪连接起来。它会将用户会话记录为回放,将请求关联到 W3C trace context,并在共享时间线上显示相关的网络、服务和数据库活动。

该产品旨在缩短这类调查过程:需要将浏览器症状与服务器端工作对应起来时,可以从用户操作一路追踪请求,经过后端 span 树并进入数据库查询;同时,查看器会区分时间不确定性,而不是依赖可能产生误导的仅基于时间戳的关联。

核心能力

同步会话与追踪视图

捕获浏览器会话,并在同步查看器时间线上将网络请求、后端 span 和数据库活动置于会话下方。

浏览器到后端的追踪关联

浏览器 SDK 会针对已配置的来源修改 fetch 和 XHR,附加 W3C trace context,并将追踪标识符写入 rrweb 录制内容。

OTLP 数据接收

无需 Syncline 专用后端 SDK 即可接收标准 OpenTelemetry 数据。现有导出器可以直接发送数据,也可以通过 collector 将数据与其他追踪供应商的数据一并分发。

请求级调查

显示 db.statement、HTTP 状态、服务和 trace ID 等 span 属性,并允许用户点击请求,将时间线聚焦到该请求周围。

存储与处理分离

使用 Postgres 进行索引,使用兼容 S3 的对象存储保存录制内容,并使用 Redis 与 BullMQ 处理排队任务。API 将负载流式传输到存储,worker 负责验证和索引。

注重隐私的捕获默认设置

提供注重隐私且受限的捕获默认设置,包括遮罩输入内容、去除查询参数值、删除 URL 片段,以及不捕获标头或请求正文。

实际使用场景

  • 调查结账流程缓慢或失败的问题

    从用户录制的操作开始,找出当时触发的请求,并检查下游服务和数据库 span,无需手动对齐不同工具。

  • 解释用户反馈的性能问题

    利用回放了解用户点击、输入或放弃了什么,然后检查对应的追踪,以区分问题源于浏览器、网络、后端还是数据库。

  • 调试特定的生产请求

    在查看器中点击请求,将周围时间区间聚焦出来,并检查其完整的 span 属性,包括 HTTP 状态、提供服务的服务、trace ID 和数据库语句。

  • 分享可复现的事件记录

    导出会话录制内容并分享以供调查;嵌入 rrweb 流中的追踪标识符使录制内容能够保留其追踪关联,而不依赖单独的关联表。

  • 自托管可观测性工作流

    当会话录制内容应保留在组织自己的 Postgres、Redis 和兼容 S3 的存储中,而不离开其网络时,可将整套技术栈部署在组织的基础设施内。

Pros and Cons

Pros

  • 基于 AGPL-3.0 许可证开源,并支持自托管。
  • 通过追踪标识符将回放事件与追踪关联起来,而不是完全依赖浏览器与服务器的时钟对齐。
  • 兼容标准 OpenTelemetry 导出器,且不要求 Syncline 后端 SDK。
  • 将录制内容存储在关系数据库之外,并通过 worker 队列异步处理数据接收。
  • 提供具体的捕获保护措施,包括默认遮罩输入内容,以及排除标头和请求正文。

Cons

  • 文档所述的部署方式由用户自行管理,需要运行 Postgres、Redis、MinIO 或其他兼容 S3 的存储,以及多个 Node 进程。
  • 后端可见性取决于服务是否导出 OpenTelemetry 数据,并且 trace context 是否在请求处理过程中持续传递。
  • 所提供的网站证据中未提供定价页面,因此无法确定商业条款。

FAQ

Syncline 能做什么?

Syncline 将浏览器会话回放与后端分布式追踪及数据库 span 相结合。浏览器 SDK 会记录会话,并使用 W3C trace context 将请求与追踪关联起来;查看器则在同一时间线上显示相关的网络、后端和数据库活动。

如何安装 Syncline?

文档所述的自托管设置会在 Docker 中使用 Postgres、Redis 和 MinIO,并运行 3 个 Node 进程,分别用于 API、worker 和 Web 应用。快速入门要求 Node 22 或更高版本以及 pnpm;文档称设置大约需要 5 分钟,主要时间用于拉取镜像。

Syncline 是否需要修改后端应用?

不需要 Syncline 后端 SDK。现有服务可以将标准 OpenTelemetry 数据导出到 Syncline;快速入门将后端配置描述为设置两个环境变量和一个 CORS 标头。浏览器 SDK 必须配置项目公钥、端点和允许的追踪来源。

Syncline 如何处理录制内容的访问和敏感数据?

录制内容使用公开项目密钥和来源白名单进行访问控制。OpenTelemetry 数据接收使用项目密钥,该密钥仅显示一次并以哈希形式存储。输入内容默认会被遮罩;记录的 URL 会移除查询参数值,删除片段,并且不会捕获标头和请求正文。

当浏览器时钟与服务器时钟不一致时会发生什么?

浏览器会为录制的会话选择采样,因此被录制的请求会强制设置 sampled=1。这有助于确保在会话可供调查时保留对应的后端 span。当浏览器和服务器的计时不一致时,span 的位置仍可能显示一个不确定性区间。

Quick Facts

类别
开发者工具;可观测性
部署方式
自托管
许可证
AGPL-3.0
主要工作流
与 OpenTelemetry 追踪关联的会话回放
核心技术栈
浏览器 SDK、Node API 和 worker、Web 查看器、Postgres、Redis 以及兼容 S3 的对象存储
来源域名
syncline.co.in