验证与排障
验证与排障
验证首批事件
- 在接入代码中替换所有
YOUR_*_KEY占位符。 - 确认代码使用当前页面所选环境的 Collector 和密钥。
- 运行应用并触发一次:
signup_completed- 打开“监测 → 实时 → 实时事件流”,选择最近 30 分钟。
- 找到事件,核对事件名、页面、用户/匿名 ID、SDK 名称与版本。
- 选择“查看 JSON”,核对完整属性和客户端信息。
操作路径:监测 → 实时 → 实时事件流 → 查看 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,也不要把 http 和 https 当成同一个 Origin。保存后等待缓存刷新,再重新加载页面发送测试事件。
同意状态
以 pending 初始化时,track 不会立即产生可见事件。确认 CMP、ATT 或隐私按钮最终调用了 consent('grant') / .grant / Consent.GRANT。deny 和 revoke 会清空队列。
密钥轮换
旧密钥在轮换后立即失效。如果只有部分实例更新,会出现间歇性拒绝。检查全部前端构建、服务端副本、移动端环境配置和小程序版本是否已同步新值。
不要通过截图或日志确认密钥原文。只核对安全存储中的版本、前缀和部署时间。
HPKE 与网络
Browser、Android、iOS 和小程序需要先从 Collector 获取加密公钥,再发送密文批次。公钥获取或加密失败时不会降级成明文,因此事件会延迟或留在队列中。
检查:
- 客户端能访问
https://collector.entmesh.mliev.com; - 系统时间基本准确;
- 企业代理、防火墙和小程序合法域名没有阻断;
- 发生公钥轮换冲突后,SDK 能重新发现公钥。
Go 队列与退出
Track 返回 ErrQueueFull 时不要无限阻塞业务请求。记录计数指标,检查 Collector 可用性,并评估 QueueSize、BatchSize、FlushInterval。服务优雅退出时给 Close(ctx) 留出明确截止时间。
提交排障信息
仍无法定位时,提供以下非敏感信息:
- 项目名和环境名;
- SDK 平台与精确版本;
- 事件名和大致发生时间;
- HTTP 状态、错误类别和 Panel 是否能看到其他事件;
- Browser 的页面 Origin,或客户端登记的平台/Application ID;
- Go 是否出现
ErrQueueFull/ErrClosed。
不要提供完整密钥、访问 Token、Cookie、identity_context、完整用户标识或业务敏感属性。