OpenReplay logo

OpenReplay

开源 Session Replay 与前端可观测平台,支持自托管,提供回放、性能、错误与协作用户分析能力。

错误监控RUM开源Session Replay

OpenReplay 是开源前端会话回放与可观测平台,可完全自托管于自有 Kubernetes/Docker 环境,录制 DOM、网络、console、性能与 JS 错误,是 LogRocket/FullStory 的主要开源替代方案。

OpenReplay

开源 Session Replay 与前端可观测平台,支持自托管,提供回放、性能、错误与协作用户分析能力。

技术简介说明

OpenReplay 是开源(Elastic License 2.0) 的前端会话回放与可观测平台,可完全自托管于自有 Kubernetes/Docker 环境,也可使用 OpenReplay Cloud。它录制用户会话的 DOM 变化、网络请求、console、性能指标与 JavaScript 错误,并提供类似 LogRocket 的回放界面,同时支持漏斗、热力图等产品分析功能(视版本与部署而定)。

对数据主权敏感、希望避免 SaaS 录制数据出境、或需要控制会话存储成本的团队,OpenReplay 是 LogRocket/FullStory 的主要开源替代方案之一。

基本信息

  • 官网https://openreplay.com
  • GitHubhttps://github.com/openreplay/openreplay
  • License:Elastic License 2.0(核心平台);Tracker SDK 多为 MIT
  • Tracker 包@openreplay/tracker@openreplay/tracker-assist
  • GitHub Stars:约 10,000+
  • 主要维护者/公司:OpenReplay, Inc.
  • 运行环境:自托管(Docker/K8s)、OpenReplay Cloud、浏览器 Tracker

快速上手

Cloud Tracker(最快体验)

npm install @openreplay/tracker
import Tracker from '@openreplay/tracker'
 
const tracker = new Tracker({
  projectKey: 'YOUR_PROJECT_KEY',
  ingestPoint: 'https://your-openreplay-domain.com/ingest',
})
 
tracker.start()
 
tracker.setUserID('user-123')
tracker.setMetadata('plan', 'pro')

自托管部署(概览)

# 官方推荐使用 openreplay-cli 或 Helm chart
git clone https://github.com/openreplay/openreplay.git
cd openreplay/scripts/helmcharts
# 按文档配置 values.yaml 后 helm install

详细步骤见官方 Self-Host 文档,通常需要 PostgreSQL、ClickHouse、Redis、MinIO 等组件。

Assist(协同调试,可选)

npm install @openreplay/tracker-assist
import trackerAssist from '@openreplay/tracker-assist'
 
tracker.use(trackerAssist({ /* options */ }))

支持实时协助用户(类似 cobrowsing),需用户同意。

核心特性

  • Session Replay:开源可自托管的 DOM 回放。
  • 性能监控:页面加载、资源、长任务等指标。
  • 错误跟踪:JS 异常关联到会话时间轴。
  • 漏斗与热力图:产品分析能力(Cloud/企业版功能差异见官网)。
  • Assist 实时协助:客服/工程师与用户同步浏览(可选)。
  • 隐私控制:mask 文本/输入、忽略选择器。
  • 插件体系:GraphQL、Redux、Vuex 等状态插件。
  • 完全自托管:数据存于自有基础设施。

适用场景

  • 数据不能出境或必须内网部署的金融、政务、医疗系统。
  • 高会话量产品希望避免 LogRocket 式按量 SaaS 费用。
  • 开源技术栈团队,希望 fork 定制录制与保留策略。
  • 需要 Session Replay + 基础 RUM,预算有限的中型产品。
  • 客服场景需要 Assist 式远程协助(需评估合规)。

技术亮点

  • 开源可自托管:核心差异化,掌控数据与成本上限。
  • 社区活跃:GitHub star 高,迭代频繁。
  • Tracker 轻量集成projectKey + start() 即可起步。
  • 插件扩展:Redux、Vuex、MobX 等状态录制。
  • Cloud 与 Self-Host 双模式:先 Cloud 验证再迁移自托管。

核心概念与架构

@openreplay/tracker(浏览器)
      ↓
 Ingest API(/ingest)
      ↓
 OpenReplay 后端(存储、处理、索引)
      ↓
 Dashboard:Sessions / Events / Funnels

自托管典型组件:Frontend UI、Chalice(API)、PostgreSQL、ClickHouse、Redis、Object Storage。

核心概念

  • Project Key:Tracker 上报项目标识。
  • Ingest Point:数据接收 URL,自托管时为自有域名。
  • Session:录制单元,含 events 与 metadata。
  • Assist:实时协同会话插件。

技术局限与边界

  • 自托管运维重:ClickHouse、存储、升级、备份需专业运维。
  • Elastic License 2.0:部分云服务商托管有限制,需阅读许可条款。
  • 回放保真度:极端 Canvas/iframe 场景仍可能不完整。
  • 企业支持:自托管依赖社区或购买商业支持。
  • 与全栈 APM 集成:不如 Datadog/NR 原生后端关联成熟。

生态地图

  • Tracker@openreplay/tracker
  • Assist@openreplay/tracker-assist
  • Plugins@openreplay/tracker-reduxtracker-vuex
  • 平台openreplay/openreplay(自托管)
  • 对比:LogRocket、Highlight.io、Sentry Replay

生态集成

  • React / Vue:入口文件 init tracker;路由变化可手动 tracker.event()
  • Redux/Vuex:官方插件录制 state 变化。
  • Sentry:可自定义 metadata 互链(社区方案)。
  • K8s:Helm chart 生产部署。
  • SSO:企业自托管可接 OIDC(视版本)。

开发与工程化

  • staging 独立 project:避免测试流量污染生产会话库。
  • ignore 选择器.sensitive 输入框 mask。
  • 采样策略:高流量站配置客户端采样(若 tracker 支持)或服务端限流。
  • 存储规划:ClickHouse 与对象存储容量随会话增长极快,需 retention 策略。
  • 升级备份:自托管升级前备份 DB 与配置。

性能与安全

  • 性能:录制压缩异步上报;仍建议监控主线程 long task。
  • 安全:自托管 ingest 必须 HTTPS;projectKey 泄露可被恶意灌数据,需 WAF。
  • 合规:自托管数据不出境;Assist 功能需明确用户授权。
  • Retention:设置会话自动删除周期,符合 GDPR 最小保留。

技术对比

维度OpenReplayLogRocketSentry Replay
开源SDK 开源
自托管可自托管 Sentry
运维成本
回放极强
定价基础设施SaaS 高按事件
适合数据主权产品分析工程一体

最佳实践

  1. 先 Cloud 验证再自托管,避免过早投入运维。
  2. 规划存储 retention,会话数据增长极快。
  3. 敏感页面默认 mask,尤其是金融输入。
  4. 独立 staging project,防止测试数据混入。
  5. Assist 需明示用户同意,避免隐私法律风险。
  6. 监控 ingest 可用性,自托管宕机意味着录制全丢。

学习与社区资源