跟踪

概述

APM > 跟踪 部分显示从应用程序和服务中收集的跟踪。

跟踪表示请求经过应用程序和服务时所采用的路径。 例如,当用户在网上商店中点击下单按钮时,请求可能会从前端服务经过结账和支付服务,最终到达数据库。

跟踪由跨度组成。 每个跨度表示一个单独的操作,例如前端服务向结账服务发送的 HTTP 请求、保存订单的数据库查询,或计算运费的函数调用。

跨度构成层次结构。 根跨度表示请求的第一个操作。 其他每个跨度都是其操作启动期间所在跨度的子跨度。 例如,接收下单请求的前端服务是根跨度,而处理订单的结账服务是其子跨度。

每个跨度由一个服务生成(例如 zabbix-frontend;其名称由 OpenTelemetry 的 service.name 资源属性指定),并由一个插桩作用域生成,该作用域表示创建该跨度的代码部分(例如用于跟踪 HTTP 请求的库)。

为了提供有关每个操作的上下文,跨度还包含键值形式的属性:跨度属性描述操作本身(例如 http.method: POST),而资源属性描述服务及其运行环境(例如 host.name: eabf8c2a5ddc)。

有关跟踪的更多详细信息,请参阅 OpenTelemetry 文档。

APM > 跟踪 部分包含以下元素:

跟踪列表

跟踪列表中的每一行代表一个跟踪;各列显示其根 span 的数据。

跟踪以可自定义的表格形式显示。 表头中的 自定义表格按钮可用于显示、隐藏或重新排列列,以及将布局重置为默认设置。 您还可以通过拖动列的右边框来调整列宽;双击边框可将其重置。 所有自定义设置会立即应用,并为当前用户保存。

跟踪列表可以包含以下列:

每一列对应于遥测数据源中 otel_traces 表的一列;有关列列表,请参阅支持的遥测数据列。 大多数列的名称与数据源中的名称相同(例如,跟踪 ID 对应于 TraceId 列)。 如果名称不同,下表会指定数据源中的列。

列 描述
跟踪 ID 跟踪的 ID,属于该跟踪的所有 span 共享此 ID。
Span ID 根 span 的 ID。
跟踪状态 跟踪工具附加到跟踪的其他数据(如果有)(请参阅 W3C Trace Context)。
服务名称 生成根 span 的服务,后跟跟踪中的 span 数量。
如果任何 span 的状态代码为 Error(见下文),红色图标会显示这些 span 的数量。
操作名称 根 span 所表示的操作(例如,POST /zabbix.php)。
数据源列:SpanName。
Span 类型 根 span 的角色:
未指定 - 未指定。
内部 - 在应用程序内执行的操作。
服务器 - 处理传入请求。
客户端 - 传出请求。
生产者 - 创建异步操作(例如,发送消息)。
消费者 - 处理异步操作。
作用域名称 生成根 span 的检测作用域。
作用域版本 检测作用域的版本。
状态代码 根 span 所表示操作的状态:
未设置 - 未为根 span 明确分配状态。
正常 - 操作已成功完成。
错误 - 操作完成时发生错误。
状态消息 有关状态的其他信息(如果有)。
开始时间 根 span 开始的日期和时间。
数据源列:Timestamp。
Span 属性 根 span 的 span 属性。
单击 三点按钮可显示所有属性。
资源属性 根 span 的资源属性。
单击 三点按钮可显示所有属性。
持续时间 跟踪的持续时间;灰色条显示其相对于其他跟踪的持续时间。

跟踪面板

在跟踪列表中单击某个跟踪以打开跟踪面板,该面板在时间轴上显示该跟踪的所有跨度:执行了哪些操作、执行顺序以及每项操作耗时多久。

跟踪面板可能包含以下元素:

元素 描述
跟踪 ID 所选跟踪的 ID。
跟踪时间轴概览 整个跟踪,其中的跨度最多显示为 8 行(多个跨度可以共用一行)。
拖动所选范围的边界或范围本身,可将跨度时间轴缩放到跟踪的相应部分。
跨度树 按层次结构显示跨度;每个跨度显示其服务(粗体)、操作名称以及直接子跨度的数量。
跨度时间轴 以条形显示跨度:位置和长度表示每个跨度的开始时间及其耗时。
标记表示事件(例如异常);将鼠标悬停在标记上或单击标记可查看详细信息。
跨度详细信息 在跨度树中单击某个跨度可查看其详细信息和属性。

使用筛选器

您可以使用筛选器,仅显示您感兴趣的追踪记录。

要按属性筛选,请输入属性键,选择运算符,然后输入属性值。

支持以下运算符:

  • 包含 - (默认) 属性值包含输入的字符串。
  • 等于 - 属性值等于输入的字符串。
  • 不包含 - 属性值不包含输入的字符串。
  • 不等于 - 属性值不等于输入的字符串。
  • 存在 - 存在具有输入键的属性。
  • 不存在 - 不存在具有输入键的属性。

如果添加了多个条件,请选择评估这些条件的方式:

  • And/Or - (默认) 必须满足所有条件;具有相同属性键的条件使用 Or 组合。
  • Or - 至少满足一个条件。