跳转到内容
Telemetry
浏览文档
指南更新于 2026年7月29日由 Telemetry 编辑团队和产品团队审核阅读约需 3 分钟

让编程智能体使用这篇文档

打开 Claude Code、Codex、Cursor 或其他编码代理的集中提示包,然后将其适应此处介绍的工作流程。

本页内容
  1. 测试事件合约
  2. 锻炼每条终端路径
  3. 强化隐私边界
  4. 测试交付失败
  5. 使用确定性夹具验证 SQL
  6. 添加部署验证

在 CI 中测试 Telemetry 插桩

Telemetry 检测是应用程序行为,应该像任何其他集成边界一样进行测试。有用的 CI 套件证明正确的终端结果会创建正确的事件,禁止的内容会保留在外面,交付失败不会破坏应用程序结果,并且操作 SQL 仍会返回预期结果。

不要使 CI 依赖于生产 Telemetry API。注入事件接收器或 HTTP 传输并捕获内存中的有效负载。

测试事件合约

在一个函数中构建事件,以便可以审查架构规则:

type CheckoutInput = {
  checkoutId: string;
  status: "success" | "failed";
  durationMs: number;
  errorType?: "payment_declined" | "provider_timeout";
};

export function checkoutEvent(input: CheckoutInput) {
  return {
    event_name: "checkout_completed",
    schema_version: 1,
    checkout_id: input.checkoutId,
    status: input.status,
    duration_ms: input.durationMs,
    ...(input.errorType ? { error_type: input.errorType } : {}),
  };
}

单元测试应断言准确的字段名称和类型、受控类别值、显式单位和条件要求。优先选择精确对象断言,而不是审阅者可能在没有注意到语义更改的情况下更新的快照。

锻炼每条终端路径

对于拥有的工作流程,包括:

  • 成功
  • 预期的商业失败
  • 依赖超时
  • 重试后成功
  • 重试已耗尽
  • 取消或人工切换(如适用)
  • 重复投递
  • 缺少可选上下文

断言谷物。即使实现在内部重试,也应该发出一次逻辑请求事件。尝试事件应包括尝试编号和稳定逻辑操作ID。

强化隐私边界

创建包含授权标头、cookie、电子邮件、原始 URL 查询、请求正文、提示、工具参数和异常消息的恶意装置。断言没有人可以到达捕获的事件。

允许名单比不断增长的拒绝名单更容易测试。如果密文是后备层,请单独测试它并确保未知的嵌套字段无法绕过它。

测试交付失败

让假接收器拒绝、超时并返回速率限制响应。确认应用程序遵循其记录的政策:

  • 尽最大努力分析不会将成功的客户操作变成错误
  • 关键审计或计费事件使用批准的持久路径
  • 重试是有限的,并在需要时使用幂等性
  • 关闭冲洗遵守最后期限
  • 无需递归记录失败的有效负载即可观察遥测失败

请参见 事件传递和幂等性批处理、背压和关闭

使用确定性夹具验证 SQL

存储一个小型合成数据集和重要的 SQL 的预期行。包括成功、失败、重复、空、延迟和边界时间戳情况。查询测试应该使其计数规则可见。

SQL配方库 包括确定性输入行和预期输出,而 SQL游乐场 可以在本地运行支持的装置。将这些模式用于应用程序拥有的仪表板和告警。

添加部署验证

CI 证明代码行为,而不是运行时配置。部署到非生产环境后:

  1. 发送唯一标识的合成事件。
  2. 验证 HTTP 响应和存储的表。
  3. 确认字段类型和架构版本。
  4. 运行查找事件的最小查询。
  5. 根据政策删除或使灯具失效。

不要仅仅因为缺少新引入的分析变量而导致应用程序启动失败。首先推出配置,保留现有行为作为后备​​,并仅在验证每个已部署环境后强制执行。

将合同记录在事件跟踪计划中,遵循生产环境插桩检查表,当部署验证失败时使用事件摄取故障排除

相关产品功能

记录稳定的事件名称、类型明确的字段,以及经过隐私审核的上下文。

内容责任与技术参考

Telemetry 编辑团队负责维护本文;产品团队审核功能行为、示例和适用范围。

查看编辑规范