追踪结构
追踪是将遥测数据结构化为树状。追踪由 spans(例如,一个 span 树)组成;有一个根 span,它可以拥有零个或多个称为子 span 的分支。每个子 span 本身又可以是一个或多个子 span 的父 span,依此类推。
在 Tempo 和 TraceQL 查询语言的特定上下文中,一个 span 具有以下相关字段:
- name:span 名称
- duration:span 结束时间和开始时间之间的差值
- status:枚举:
{ok, error, unset}
。详情请参阅 OTel span status 文档。 - kind:枚举:
{server, client, producer, consumer, internal, unspecified}
。更多详情请参阅 OTel span kind 文档。 - Attributes
前四个属性是 intrinsic(固有属性)。它们是 span 的基础。
Attributes(属性)是自定义的 span 元数据,形式为键值对。属性有四种类型:span 属性、资源属性、事件属性和链接属性。
Span 属性是键值对,其中包含可用于标注 span 的元数据,以携带有关其正在跟踪的操作的信息。例如,在电子商务应用中,如果一个 span 跟踪将商品添加到用户购物车的操作,则可以将用户 ID、添加的商品 ID 和购物车 ID 捕获并附加到 span 作为 span 属性。
资源属性表示生成 span 的实体的信息。例如,由在 Kubernetes 部署的容器中运行的进程创建的 span 可以链接一个资源,该资源指定集群名称、命名空间、pod 和容器名称。资源属性是描述资源的资源相关元数据(键值对)。
事件属性表示 span 持续时间内的唯一时间点。更多信息请参阅 关于 span 事件的一切 和 OTEL 文档中的 Span Events。
链接属性允许您查询 span 中的链接数据。span 链接将一个 span 与一个或多个具有因果关系的其他 span 相关联。有关 span 链接的更多信息,请参阅 Open Telemetry 项目中的 Span Links 文档。
OpenTelemetry 规范定义了 Span 和 Resource 的 Semantic Attributes。Semantic Span Attributes 是一套跨语言、框架和运行时共享的属性命名方案。更多详情请参阅 Trace Semantic Conventions 和 Resource Semantic Conventions。