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
- GitHub:https://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/trackerimport 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-assistimport 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-redux、tracker-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 最小保留。
技术对比
| 维度 | OpenReplay | LogRocket | Sentry Replay |
|---|---|---|---|
| 开源 | 是 | 否 | SDK 开源 |
| 自托管 | 是 | 否 | 可自托管 Sentry |
| 运维成本 | 高 | 无 | 中 |
| 回放 | 强 | 极强 | 强 |
| 定价 | 基础设施 | SaaS 高 | 按事件 |
| 适合 | 数据主权 | 产品分析 | 工程一体 |
最佳实践
- 先 Cloud 验证再自托管,避免过早投入运维。
- 规划存储 retention,会话数据增长极快。
- 敏感页面默认 mask,尤其是金融输入。
- 独立 staging project,防止测试数据混入。
- Assist 需明示用户同意,避免隐私法律风险。
- 监控 ingest 可用性,自托管宕机意味着录制全丢。
学习与社区资源
- 文档:https://docs.openreplay.com
- GitHub:https://github.com/openreplay/openreplay
- Tracker 文档:https://docs.openreplay.com/en/sdk
- Self-Host:https://docs.openreplay.com/en/deployment/deploy-aws
- Slack 社区:官网链接加入