验证与排障

验证与排障

验证首批事件

  1. 在接入代码中替换所有 YOUR_*_KEY 占位符。
  2. 确认代码使用当前页面所选环境的 Collector 和密钥。
  3. 运行应用并触发一次:
signup_completed
  1. 打开“监测 → 实时 → 实时事件流”,选择最近 30 分钟。
  2. 找到事件,核对事件名、页面、用户/匿名 ID、SDK 名称与版本。
  3. 选择“查看 JSON”,核对完整属性和客户端信息。

实时事件流与事件上报 JSON 抽屉,显示 signup_completed、SDK 0.7.0 和脱敏身份字段

操作路径:监测 → 实时 → 实时事件流 → 查看 JSON。事件通常在 10 秒内出现。

快速检查表

现象 优先检查
完全没有事件 项目/环境、密钥类型、同意状态、网络请求
Browser 被拒绝 当前 Origin 是否在白名单,保存后是否已等待最多 60 秒
Android/iOS/小程序被拒绝 平台和 Application ID 是否已在同一环境登记
401/403 是否把 pk_sk_ck_ 混用,密钥是否已轮换
事件有匿名 ID 但无用户 ID 登录态恢复后是否调用 identify
Go ErrQueueFull Collector 网络、队列容量、刷新周期和应用流量
Flag 总是 fallback 授权、环境部署、Flag key、主体、Targeting、同意状态与网络
实验值未归因 是否在真正使用后曝光,状态是否为 recorded/duplicate

Browser CORS

浏览器站点的 Origin 必须逐行写入“项目设置 → 当前环境边界”。例如页面地址是 https://shop.example.com/checkout,白名单应填写:

https://shop.example.com

不要填写 /checkout,也不要把 httphttps 当成同一个 Origin。保存后等待缓存刷新,再重新加载页面发送测试事件。

同意状态

pending 初始化时,track 不会立即产生可见事件。确认 CMP、ATT 或隐私按钮最终调用了 consent('grant') / .grant / Consent.GRANTdenyrevoke 会清空队列。

密钥轮换

旧密钥在轮换后立即失效。如果只有部分实例更新,会出现间歇性拒绝。检查全部前端构建、服务端副本、移动端环境配置和小程序版本是否已同步新值。

不要通过截图或日志确认密钥原文。只核对安全存储中的版本、前缀和部署时间。

HPKE 与网络

Browser、Android、iOS 和小程序需要先从 Collector 获取加密公钥,再发送密文批次。公钥获取或加密失败时不会降级成明文,因此事件会延迟或留在队列中。

检查:

  • 客户端能访问 https://collector.entmesh.mliev.com
  • 系统时间基本准确;
  • 企业代理、防火墙和小程序合法域名没有阻断;
  • 发生公钥轮换冲突后,SDK 能重新发现公钥。

Go 队列与退出

Track 返回 ErrQueueFull 时不要无限阻塞业务请求。记录计数指标,检查 Collector 可用性,并评估 QueueSizeBatchSizeFlushInterval。服务优雅退出时给 Close(ctx) 留出明确截止时间。

提交排障信息

仍无法定位时,提供以下非敏感信息:

  • 项目名和环境名;
  • SDK 平台与精确版本;
  • 事件名和大致发生时间;
  • HTTP 状态、错误类别和 Panel 是否能看到其他事件;
  • Browser 的页面 Origin,或客户端登记的平台/Application ID;
  • Go 是否出现 ErrQueueFull / ErrClosed

不要提供完整密钥、访问 Token、Cookie、identity_context、完整用户标识或业务敏感属性。