跳转至

Rumable SDK 来源与配置

本页说明 Rumable 如何注入、加载和初始化 SDK。无需手写配置的方式见一键接入;手动配置时跳到四种接入方式的完整示例;首次安装见安装与接入,版本更新与回滚见运维说明。

注入方式与时序

Rumable 在 Web 服务器返回的标准 <head> 后加入外部脚本,不修改业务源文件。来源与加载方式互相独立:

来源与方式 下载位置 执行顺序
同域 + 异步,默认 安装包内置 SDK,由网站同域托管 异步加载初始化脚本,再动态异步下载 SDK,完成后初始化
同域 + 同步 安装包内置 SDK,由网站同域托管 先执行 SDK,再执行初始化脚本,然后继续解析页面
CDN + 异步 SDK 来自官方或自建 CDN,初始化脚本同域 初始化脚本异步下载 CDN SDK,完成后初始化
CDN + 同步 SDK 来自官方或自建 CDN,初始化脚本同域 先执行 CDN SDK,再执行初始化脚本,然后继续解析页面

同域资源位于网站的 __rumable__/<站点ID>/ 下,文件名包含内容摘要。选择同域仅改变 SDK 的下载位置,数据仍发往配置的上报端。

异步脚本下载不阻塞 HTML 解析,但初始化前的错误、请求和交互可能无法采集。同步方式使用两个不带 async、defer 的普通外部脚本,便于在后续业务脚本前完成初始化;网络慢或 CDN 故障会延迟后续页面解析和首屏。

同步不能保证捕获 SDK 加载失败或初始化之前的全部事件。SDK 加载失败不会自动切换到同域副本;同步模式仍需等待浏览器完成请求或判定失败。两种方式都不自动放宽 CSP。

source 和 loading 是什么意思

source 表示 SDK 从哪里下载,loading 表示 SDK 如何加载。两项独立选择:

配置项 填写值 中文含义
source "bundled" 使用安装包内置的 SDK,由你的网站同域提供
source "cdn" 从 url 指定的 CDN 地址下载 SDK
loading "async" 异步:页面继续解析,SDK 加载完成后开始采集
loading "sync" 同步:先加载 SDK 并初始化,再继续解析后面的页面
url 完整 HTTPS 脚本地址 只在使用 CDN 时填写
integrity false / true 是否启用浏览器 SRI 完整性校验;默认 false,CDN 开启前需满足下方 CORS 和摘要要求

不写 loading 就使用异步,也可以显式填写 loading = "async"。下面的示例均写出加载方式,便于直接对照。[sites.sdk] 是 TOML 中放置这些选项的配置段名称,不是另外一个需要填写的参数。

在配置页中选择并一键接入

推荐先使用一键接入流程:在页面填写应用参数、选择 SDK 方式,再复制生成的命令到服务器执行。无需手写下面的 TOML。配置页在“选择 SDK 来源与加载方式”中提供两个下拉框:

想要的效果 “SDK 来源”选什么 “加载方式”选什么 CDN 地址
网站同域 + 异步 网站同域(默认) 异步(默认) 不填
网站同域 + 同步 网站同域(默认) 同步 不填
CDN + 异步 CDN 异步(默认) 填写 SDK 的 HTTPS 地址
CDN + 同步 CDN 同步 填写 SDK 的 HTTPS 地址

例如要用官方 CDN 同步加载,就选择“CDN”和“同步”,CDN 地址填写 https://static.guance.com/browser-sdk/v3/dataflux-rum.js。确认右侧摘要后,读取发布版本、下载 TOML,再按页面生成的命令执行。

一键接入支持上述四种组合,也支持自动发现网站时选择 CDN 和同步加载。

已安装 CLI 的站点

首次接入直接使用 latest 配置页生成的命令。已有站点如需修改 SDK 来源或加载方式,保留原配置、站点 ID 和状态目录,按配置更新与升级重新应用。下载 TOML 或刷新配置页不会自动更新服务器上的 CLI 和 SDK。

四种接入方式的完整示例

以下四个代码块都是 Linux / Nginx 的完整配置文件,每次只选择一个,保存为 /etc/rumable/website.toml;不要把四个示例拼到同一文件里。已有站点先备份原 TOML,只修改原 [sites.sdk] 段,保留原站点 ID、路径、采样等设置。

首次接入时替换以下值:

示例值 替换为什么
website 本次接入的站点 ID;后续更新保持不变
https://www.example.com/ 你的网站地址;路径以 / 结尾
/usr/sbin/nginx 实际 Nginx 可执行文件路径
YOUR_APPLICATION_ID Web 应用的应用 ID
https://openway.example.com 控制台提供的 OpenWay 地址,只填协议、主机和可选端口
YOUR_CLIENT_TOKEN 对应的浏览器接入令牌

service、env、version 按业务填写;这里的 version 是业务应用版本,不是 SDK 版本。示例启用全部会话采样、关闭回放,完成验收后再调整。

示例 1:网站同域 + 异步

默认方式。SDK 由你的网站同域提供,页面不等待它加载完成。

schemaVersion = 1

[[sites]]
id = "website"
publicURL = "https://www.example.com/"
includePaths = ["/"]
excludePaths = ["/downloads/"]
probePaths = ["/"]

[sites.nginx]
binary = "/usr/sbin/nginx"
attachmentReviewed = false

[sites.rum]
applicationId = "YOUR_APPLICATION_ID"
site = "https://openway.example.com"
clientToken = "YOUR_CLIENT_TOKEN"
service = "website"
env = "production"
version = "1.0.0"
sessionSampleRate = 100
sessionReplayEnabled = false
defaultPrivacyLevel = "mask"

[sites.sdk]
source = "bundled" # 网站同域
loading = "async" # 异步加载,不等待 SDK 下载完成

示例 2:网站同域 + 同步

SDK 由你的网站同域提供,先初始化再继续解析页面。

schemaVersion = 1

[[sites]]
id = "website"
publicURL = "https://www.example.com/"
includePaths = ["/"]
excludePaths = ["/downloads/"]
probePaths = ["/"]

[sites.nginx]
binary = "/usr/sbin/nginx"
attachmentReviewed = false

[sites.rum]
applicationId = "YOUR_APPLICATION_ID"
site = "https://openway.example.com"
clientToken = "YOUR_CLIENT_TOKEN"
service = "website"
env = "production"
version = "1.0.0"
sessionSampleRate = 100
sessionReplayEnabled = false
defaultPrivacyLevel = "mask"

[sites.sdk]
source = "bundled" # 网站同域
loading = "sync" # 等待 SDK 加载并初始化后再继续解析页面

示例 3:CDN + 异步

浏览器异步下载指定 CDN 的 SDK,初始化脚本仍由网站同域提供。

schemaVersion = 1

[[sites]]
id = "website"
publicURL = "https://www.example.com/"
includePaths = ["/"]
excludePaths = ["/downloads/"]
probePaths = ["/"]

[sites.nginx]
binary = "/usr/sbin/nginx"
attachmentReviewed = false

[sites.rum]
applicationId = "YOUR_APPLICATION_ID"
site = "https://openway.example.com"
clientToken = "YOUR_CLIENT_TOKEN"
service = "website"
env = "production"
version = "1.0.0"
sessionSampleRate = 100
sessionReplayEnabled = false
defaultPrivacyLevel = "mask"

[sites.sdk]
source = "cdn" # 从 CDN 下载
url = "https://static.guance.com/browser-sdk/v3/dataflux-rum.js"
integrity = false
loading = "async" # 异步加载,不等待 SDK 下载完成

示例 4:CDN + 同步

先加载 CDN SDK、完成初始化,再继续解析页面。

schemaVersion = 1

[[sites]]
id = "website"
publicURL = "https://www.example.com/"
includePaths = ["/"]
excludePaths = ["/downloads/"]
probePaths = ["/"]

[sites.nginx]
binary = "/usr/sbin/nginx"
attachmentReviewed = false

[sites.rum]
applicationId = "YOUR_APPLICATION_ID"
site = "https://openway.example.com"
clientToken = "YOUR_CLIENT_TOKEN"
service = "website"
env = "production"
version = "1.0.0"
sessionSampleRate = 100
sessionReplayEnabled = false
defaultPrivacyLevel = "mask"

[sites.sdk]
source = "cdn" # 从 CDN 下载
url = "https://static.guance.com/browser-sdk/v3/dataflux-rum.js"
integrity = false
loading = "sync" # 等待 SDK 加载并初始化后再继续解析页面

IIS 和 DataKit 如何使用这些示例

IIS 使用同样的 [sites.sdk] 配置。将选中示例中的整个 [sites.nginx] 段替换为下面这一段,其余字段保留:

[sites.iis]
site = "Default Web Site"
application = "/"
allowCompressionChanges = true

site 改成实际 IIS 站点名;allowCompressionChanges=true 表示允许关闭该应用的 IIS 静态和动态压缩;停用时恢复原设置。子应用 /shop 对应 publicURL=https://www.example.com/shop/,注入和验收路径也应使用 /shop/ 前缀。

使用 DataKit 上报时,在 [sites.rum] 中删除 site 和 clientToken,改为 datakitOrigin = "https://datakit.example.com",并替换成真实地址。两种上报方式互斥,不追加 /v1/write/rum。

保存后如何应用

首次接入 Nginx 时,使用匹配版本的实际 CLI 路径执行:

sudo rumable setup --config /etc/rumable/website.toml --state-dir /var/lib/rumable --site website

这里的 rumable 代表已安装的 CLI;如果未加入 PATH,替换为它的绝对路径。确认拟修改的 Nginx 挂接后再应用,并检查浏览器执行和真实数据入库。已接入站点保留原状态目录,修改配置后重新执行 enable。

Windows 的首次接入和两种平台的验收见安装说明,已接入站点修改配置见运维说明。

CDN 地址、摘要与 SRI

  • URL 必须是完整 HTTPS 脚本地址,不含账号密码、查询参数或片段。
  • 自建 CDN 需提供与所选安装包完全相同的 SDK 字节。启用和探测会检查内容摘要、JavaScript MIME、普通和 gzip 响应。
  • 浏览器 CSP 需允许实际 CDN 地址;选择 CDN 不会让初始化脚本离开网站同域。
  • 跨域 SRI 需要 CDN 返回允许站点 Origin 或 * 的 Access-Control-Allow-Origin。当前官方 v3 地址默认不启用 SRI;开启前以实际响应头和安装检查为准。
  • 官方 v3 为可变地址,探测时摘要匹配不锁定未来内容。若需固定版本,使用同域模式或维护不可变的自建 CDN 文件。
  • 使用 bundled 时不要填写 url 或开启 integrity,否则校验会拒绝。

自动发现配置

自动发现是让工具扫描服务器已有的网站,再让你选择接入目标,省去手填网站地址和 Nginx/IIS 目标的步骤。它使用 server、[rum]、[sdk],与包含 [[sites]] 的完整配置是两种格式。

以下都是完整的自动发现配置,每次只选一个,保存为 /etc/rumable/discovery.toml;替换应用 ID、OpenWay 地址和令牌。它们只能交给 setup --discover,不能直接交给 enable。

同域异步,使用默认行为,不写 SDK 配置段:

schemaVersion = 1
server = "nginx"

[rum]
applicationId = "YOUR_APPLICATION_ID"
site = "https://openway.example.com"
clientToken = "YOUR_CLIENT_TOKEN"
sessionReplayEnabled = false

CDN 同步,指定 SDK 地址和加载方式:

schemaVersion = 1
server = "nginx"

[rum]
applicationId = "YOUR_APPLICATION_ID"
site = "https://openway.example.com"
clientToken = "YOUR_CLIENT_TOKEN"
sessionReplayEnabled = false

[sdk]
source = "cdn"
url = "https://static.guance.com/browser-sdk/v3/dataflux-rum.js"
loading = "sync"
integrity = false

Windows 将 server 改为 "iis",并按实际授权在 [rum] 之前设置顶层 allowCompressionChanges = true。SDK 参数含义与完整配置相同,但配置段名称是 [sdk],不能写成 [sites.sdk]。

Nginx 通过实际安装的 CLI 执行,终端选择站点后会打印接入标识:

sudo rumable setup --discover --config /etc/rumable/discovery.toml --state-dir /var/lib/rumable

Windows 在管理员终端使用实际 exe、配置文件和状态目录执行 setup --discover。后续继续使用原站点 ID、目标和状态目录;不要用另一个任意 ID 接管同一部署。

路径、采样与回放

includePaths 与 excludePaths 按区分大小写的前缀匹配,排除优先;probePaths 必须位于注入范围内,并直接返回可验收的 HTML。路径决定服务器是否改写该页面,不等于排除 SDK 的 Fetch/XHR 请求,也不会在 SPA 切换路由时重新判断注入。

回放默认关闭。在完整配置已有的 [sites.rum] 中调整以下字段,而不是重复增加该表:

sessionSampleRate = 100
sessionReplayEnabled = true
sessionReplaySampleRate = 20
sessionReplayOnErrorSampleRate = 0
defaultPrivacyLevel = "mask"

回放依赖 RUM 会话采样,改变采样率后用新会话验收。回放、请求压缩和远程配置可能需要 Worker;默认 Blob Worker 需要 CSP 允许 blob:,外置 Worker 由用户同域托管并保持版本匹配。

详细采样含义见采样配置。setUser、手动 startView、自定义事件和函数回调仍需要业务代码;Rumable 的静态配置不能自动替代这些调用。「应用版本」是业务标签,「SDK 远程配置」调整采集参数,两者都不升级 SDK 文件。

配置页或 CLI 提示不支持所选方式

打开latest 配置页,重新读取发布版本并生成安装命令。已安装的 CLI 如果提示不认识 loading 或 [sdk],按升级步骤更新 CLI,再应用原站点配置。升级时保留原站点 ID、目标和状态目录。

文档评价

文档内容是否对您有帮助?