用途 cx-rum-setup 用于帮助用户把应用接入 Coralogix Real User Monitoring(RUM):获取 RUM API 密钥、安装对应平台 SDK、加入初始化调用,并验证事件写入 rum.events 数据集。适用于用户提出“添加 RUM”“设置 RUM”“安装 RUM SDK”“为我的应用添加 Coralogix RUM”“创建 RUM API 密钥”“RUM 公钥”等请求时。
主要能力 技能通过 cx CLI 完成密钥与文档相关操作:cx iam api-keys list / send-data-keys 列出候选密钥,cx iam api-keys get 读取密钥权限与值,cx iam api-keys create --from-file 创建 RUM 密钥;cx docs search / cx docs fetch 获取各平台当前 SDK 安装与初始化文档;cx dataprime query --source rum.events 验证 RUM 事件到达;cx profiles list 查看配置与区域。
使用方式
- 检测平台:先检查用户仓库,并按顺序匹配信号:pubspec.yaml(Flutter)、package.json 含 react-native 或 expo(React Native)、含 next(Next.js)、含浏览器信号(react-dom、vue、@angular/core、svelte、vite/webpack/parcel 或 index.html 入口,浏览器 SDK)、Podfile/Package.swift/*.xcodeproj(iOS)、build.gradle(.kts) 含 Android 插件(Android)。仅 package.json 不代表浏览器应用;无匹配时告知用户未找到受支持的客户端应用,不做猜测。
- 选择配置:密钥和 SDK 域名须来自同一配置。active profile 为 -p <name>(若给出),否则 $CX_PROFILE,否则 cx profiles list 的 DEFAULT 行;多配置且未指定时需询问用户应用所属团队。coralogixDomain 为该配置区域的大写形式(EU1、EU2、US1、US2、US3、AP1、AP2、AP3)。cx iam 与 cx dataprime 支持 -p;cx profiles 与 cx docs 为本地命令,不带 -p。
- 获取 RUM API 密钥:RUM 密钥设计上公开,会随客户端代码发布。使用 SendRUMData 预设创建,仅授予 rum-ingress:SendData 一项权限,独立使用,不添加其他预设或权限;不要使用 SendData 预设(它授予日志/指标/跨度摄取而非 RUM,且使密钥成为机密)。先复用:列出候选密钥后逐个用 get 检查,仅当密钥处于激活状态且 SendRUMData 为唯一预设(或 rum-ingress:SendData 为唯一权限)时复用;跳过未激活密钥;值在 keyInfo.value(哈希密钥无法复用,需新建)。创建属于写操作,需向用户说明并获批准后再传 --yes。示例:cat > rum-key.json 写入 name、owner.teamId、keyPermissions.presets 为 ["SendRUMData"]、permissions 为空、hashed 为 false,再执行 cx iam api-keys create --from-file rum-key.json -p <profile> --yes -o json。teamId 可读 ~/.cx/profiles/<profile>.toml 中的 cached_team_id,或取任一密钥的 owner.teamId,或询问用户。权限不足时提示缺少 DATA-INGEST-API-KEYS:READCONFIG(列出)或 DATA-INGEST-API-KEYS:MANAGE(读取或创建),不要换载荷重试。
- 获取 SDK 文档:SDK 包名、版本与选项会变化,应通过 cx docs search "RUM SDK installation <platform>" 与 cx docs fetch <suffix> 获取,不凭记忆硬编码。
- 安装与初始化:示例(浏览器):npm install @coralogix/browser,然后 import { CoralogixRum } from '@coralogix/browser',调用 CoralogixRum.init 传入 application、environment、public_key、coralogixDomain、version。要点:在应用入口尽早初始化一次;Next.js 仅在客户端 'use client' 组件 useEffect 中初始化,不在服务端组件;密钥放环境变量(NEXT_PUBLIC_、VITE_、REACT_APP_*)而非硬编码;version 与发布版本一致。Source maps 为可选项,用 coralogix-rum-cli 上传,需单独的 Team Key(SourceMapping 预设),绝不复用 RUM 密钥,且保持机密(仅 CI)。
- 验证数据(可选):密钥与初始化就位即完成接入;数据需应用运行且用户访问后才产生,SDK 批量发送。可运行 cx dataprime query --source rum.events "filter $d.version_metadata.app_name == '<app-name>' | limit 10" -p <profile> -o json;无结果时检查浏览器网络面板中发往 RUM 入口的请求,常见原因包括广告拦截、coralogixDomain 错误或密钥含额外权限。
适用场景与限制 适用于受支持平台的客户端应用接入 RUM。限制包括:不支持的平台应明确告知而非猜测;密钥不得附加其他权限;创建密钥需用户批准;SDK 版本与选项以 cx docs 获取的文档为准;Source maps 需独立密钥;数据验证依赖应用实际运行与用户访问。