在 Cloud Trace 中,跟踪记录和 span 构成了用于跟踪请求在分布式应用中的路径和延迟时间的数据模型。轨迹可捕获请求在您的服务中端到端的运行方式。跟踪记录由 span 组成,用于记录相应请求期间发生的各个操作、函数调用和 RPC。
跟踪数据模型
轨迹包含以下内容:
Trace ID:端到端操作的唯一标识符。 跟踪 ID 会在服务边界之间通过请求上下文进行传播。
span 集合:共享同一轨迹 ID 的一组 span。这些 span 构成一个树或有向非循环图,用于表示请求的调用层次结构。
Cloud Trace 使用跟踪记录 ID 来标识其代码库中哪些 span 与同一跟踪记录相关联。
Span 数据模型
span 表示在特定时间段内发生的单个操作。每个 span 都包含一些字段,这些字段提供有关 span 和操作状态的信息:
标识符包含以下字段:
- 跟踪 ID:span 所属的整体请求或跟踪记录的唯一标识符。
- Span ID:span 的唯一标识符。如果某项操作在单个轨迹中被多次调用,则每次调用都会生成一个单独的 span,这些 span 具有相同的名称,但 span ID 各不相同。
- 父 span ID:用于标识调用相应 span 的父操作。
“根”span 的父 span ID 设置为
null。 - 名称:执行的操作的名称。
- Kind:span 类型可为跟踪工具(例如 Trace 探索器)提供有关 span 之间关系的信息。 如需了解详情,请参阅 OpenTelemetry SpanKind。
执行信息在以下字段中提供:
- 状态:记录操作的完成状态。此字段的值为
Unset(默认值)、Error或Ok。默认值不表示错误。 - 开始时间:操作的开始时间。
- 结束时间:操作的结束时间。
- 状态:记录操作的完成状态。此字段的值为
Span 可以包含其他字段,例如事件、属性和链接:
- 事件用于记录时间戳结构化消息(在时间段内)。
- 属性使用键值对存储有关操作的附加信息。在编写属性时,我们建议您尽可能遵循 OpenTelemetry 语义惯例。
- 借助链接,您可以将一个 span 与另一个 span 相关联。
如需了解详情,请参阅 OpenTelemetry:span。
资源
OpenTelemetry 资源: