Grafana Faro
Grafana 开源前端可观测 SDK,将浏览器日志、错误、性能与 Web Vitals 送入 Grafana/Loki/Tempo/Mimir 统一栈。
错误监控RUM开源Grafana
Grafana Faro 是开源前端可观测性 Web SDK,将浏览器端日志、异常、性能 trace 与 Core Web Vitals 发送到 Grafana 生态后端,适合已采用 LGTM 栈的团队以较低供应商锁定扩展前端信号。
Grafana Faro
Grafana 开源前端可观测 SDK,将浏览器日志、错误、性能与 Web Vitals 送入 Grafana/Loki/Tempo/Mimir 统一栈。
技术简介说明
Grafana Faro(Frontend Application Remote Observability)是 Grafana Labs 推出的开源前端可观测性 Web SDK,旨在将浏览器端的日志、异常、性能 trace 与 Core Web Vitals 数据发送到 Grafana 生态后端(Loki 存日志、Tempo 存 trace、Prometheus/Mimir 存指标),并在 Grafana 仪表板中统一可视化。
与 Sentry、Datadog 等一站式 SaaS 不同,Faro 的定位是可观测数据管道 + SDK:你保留对存储与查询栈的控制权,适合已采用 Grafana Cloud 或自建 LGTM(Loki-Grafana-Tempo-Mimir)栈的团队,以较低供应商锁定扩展前端信号。
基本信息
- 官网:https://grafana.com/oss/faro
- GitHub:https://github.com/grafana/faro-web-sdk
- License:Apache-2.0
- 核心包:
@grafana/faro-web-sdk、@grafana/faro-web-tracing - 主要维护者/公司:Grafana Labs
- 运行环境:浏览器;后端对接 Grafana Alloy/Agent、Faro Collector、Grafana Cloud Frontend Observability
快速上手
安装
npm install @grafana/faro-web-sdk可选分布式追踪:
npm install @grafana/faro-web-tracing最小示例
import { initializeFaro } from '@grafana/faro-web-sdk'
initializeFaro({
url: 'https://faro-collector.example.com/collect',
app: {
name: 'my-frontend',
version: '1.0.0',
environment: 'production',
},
instrumentations: [
// 默认包含 console、errors、web vitals 等
],
})Grafana Cloud Frontend Observability
使用 Grafana Cloud 时,控制台会生成 collector URL 与 app key,配置类似:
initializeFaro({
url: 'https://faro-collector-prod-us-east-0.grafana.net/collect/...',
app: { name: 'my-app', version: '1.0.0', environment: 'production' },
})自定义日志与测量
import { faro } from '@grafana/faro-web-sdk'
faro.api.pushLog(['User completed checkout'], { level: 'info' })
faro.api.pushMeasurement({
type: 'custom',
values: { cart_value: 99.9 },
})核心特性
- 开源 SDK:Apache-2.0,可审计与扩展。
- Web Vitals 自动采集:LCP、INP、CLS 等送入 Grafana。
- 错误与 Console 捕获:未处理异常、console 输出。
- OpenTelemetry 兼容 tracing:
@grafana/faro-web-tracing与 Tempo 关联。 - Grafana 仪表板:Frontend Observability 预置面板(Cloud/自建)。
- 可插拔 Instrumentation:按需启用/禁用采集器。
- 与 Alloy 集成:Grafana Alloy 作为 collector 路由到 Loki/Tempo/Mimir。
适用场景
- 已使用 Grafana Stack(Loki、Tempo、Prometheus)监控后端。
- 希望前端信号进入同一 Grafana 而非新增 SaaS 供应商。
- 开源/自建可观测平台,需标准化浏览器 telemetry 接入。
- 对 vendor lock-in 敏感,愿意自行运维 collector 与存储。
- Grafana Cloud 用户扩展 Frontend Observability 模块。
技术亮点
- LGTM 栈原生:日志、指标、trace、vitals 统一查询语言(LogQL、PromQL、TraceQL)。
- 完全开源路径:从 SDK 到 collector 可自建。
- OTel 方向:tracing 模块与 OpenTelemetry 生态对齐。
- 轻量可组合:相比重型 APM SaaS,按需启用 instrumentations。
- Grafana Labs 背书:与 Grafana 9+ 可观测战略一致。
核心概念与架构
@grafana/faro-web-sdk(浏览器)
↓
Faro Collector / Grafana Alloy / Grafana Cloud
↓
Loki(logs) / Tempo(traces) / Mimir(metrics)
↓
Grafana Dashboards & Alerts
核心概念
- Faro Agent:浏览器内嵌的采集运行时。
- Instrumentation:可插拔采集模块(errors、vitals、console 等)。
- Collector URL:数据接收端点。
- App Meta:
name、version、environment标签维度。
技术局限与边界
- 非开箱即用 Issue 管理:无 Sentry 式 Issue 去重、分配工作流,需自行在 Grafana 配置。
- Session Replay 无:不提供 LogRocket 类回放(截至主流版本)。
- 自建复杂度高:需部署 collector、存储与仪表板,运维成本明显高于 SaaS。
- 生态较新:相比 Sentry decade 积累,社区案例与最佳实践仍在增长。
- 错误聚合弱:需借助 Loki/Tempo 查询自行构建告警规则。
生态地图
- SDK:
@grafana/faro-web-sdk、@grafana/faro-react、@grafana/faro-web-tracing - Collector:Grafana Faro Collector、Grafana Alloy
- 存储:Loki、Tempo、Mimir、Grafana Cloud
- 对比:Sentry、Datadog RUM、Elastic RUM、Highlight.io
生态集成
- React:
@grafana/faro-react提供 ErrorBoundary 与 hooks。 - Grafana Cloud:Frontend Observability 一键配置 collector。
- OpenTelemetry:trace 导出至 Tempo,与后端 OTel trace 关联。
- web-vitals:Faro 内置 vitals instrumentation,避免重复上报。
- Alerting:Grafana Alert 对 LCP 阈值、错误日志 rate 告警。
开发与工程化
- 分环境 collector URL:staging/production 分离。
- 版本标签:每次部署更新
app.version。 - 采样:高流量站点在 collector 或 SDK 层配置采样(视部署方案)。
- 仪表板模板:导入官方 Frontend Observability 仪表盘。
- PII 过滤:在 collector 或 Loki pipeline 脱敏手机号、邮箱。
性能与安全
- 性能:异步批量发送;默认可关闭不必要 instrumentations 减负。
- 安全:collector URL 可公开但应配 rate limit;敏感日志勿
pushLog明文密码。 - 合规:自建栈数据驻留自控;Grafana Cloud 选区域。
- HTTPS 必须:禁止明文 collector 端点。
技术对比
| 维度 | Grafana Faro | Sentry | Datadog RUM |
|---|---|---|---|
| 开源 | 是 | 部分 | 否 |
| Replay | 无 | 有 | 有 |
| Issue 工作流 | 弱 | 极强 | 中 |
| Grafana 集成 | 原生 | 需导出 | 需导出 |
| 自建 | 强 | 可 | 弱 |
| 适合 | Grafana 栈用户 | 工程排障 | 企业统一观测 |
最佳实践
- 已用 Grafana 后端时优先 Faro,避免另购 RUM SaaS。
- 启用 web vitals + tracing,发挥 LGTM 关联查询优势。
- 导入官方仪表盘,减少从零配置 LogQL/TraceQL。
- 对错误日志设 Loki 告警,弥补无 Issue 系统的不足。
- 评估 Cloud vs 自建:中小团队 Grafana Cloud Frontend Observability 更省事。
- 勿与 web-vitals 重复上报,使用 Faro 内置 instrumentation。
学习与社区资源
- Faro 文档:https://grafana.com/docs/grafana-cloud/monitor-applications/frontend-observability
- GitHub:https://github.com/grafana/faro-web-sdk
- Grafana OSS Faro 页:https://grafana.com/oss/faro
- Blog:Grafana Labs 博客 Frontend Observability 文章
- 社区:Grafana Slack、Community forums