调用链追踪

# 1. 调用链追踪

DeepFlow 通过调用链追踪将一次调用涉及到的应用 Span、系统 Span 及网络 Span 都在一张火焰图中呈现,真正让业务开发团队、框架开发团队、服务网格运维团队、容器运维团队、DBA 团队、云运维团队多部门在一个平台协作起来。

# 1.1 总览介绍

调用链追踪功能页面中的一个调用发起追踪操作,然后通过右滑框的形式展现,此图为链路调用追踪的展示方式,如下图所示。

注: 调用链追踪的火焰图和拓扑图暂时不支持加入视图
1

3_1.png

3_1.png

调用追踪右滑框分三部分:头部信息、数据可视化、调用信息数据列表

  • ① 头部信息: 展示链路的基本信息,如客户端,服务端,开始请求时间,持续时间,请求类型,请求资源等
  • ① 数据可视化: 调用追踪 Span 数据以火焰图方式展示或调用追踪的服务以拓扑图的方式展示
  • ② 调用信息数据列表: 展示每个调用信息数据详情

# 1.1.1 火焰图

3_2.png

3_2.png

火焰图由多个条状 bar组成,每个条状 bar代表一个 Span,x 轴以时间为维度,y 轴以调用堆栈深度为维度,按 Span 调用的顺序从上到下进行展示,下面将进行详细的介绍:

  • 长度: 结合 x 轴,表达的是一个 Span 的执行时间,两端分别对应这个开始时间及结束时间
  • 服务列表: 展示每个服务消耗的时延占比,点击服务可与火焰图联动,高亮服务对应的 Span
    • 颜色: 应用 Span 与系统 Span 为每一个服务代表一种颜色;所有的网络 Span 都为灰色(因为网络 Span 不属于任何一个服务)
  • 显示信息: 条状 bar 的显示信息图标+调用信息+执行时间组成
    • 图标: 通过图标来区分不同类型的 Span
      • A: 应用 Span,通过 Opentelemetry 协议收集的 Span,覆盖业务代码、框架代码
      • S: 系统 Span,通过 eBPF 零侵入采集的 Span,覆盖系统调用、应用函数(如 HTTPS)、API Gateway、服务网格 Sidecar
      • N: 网络 Span,通过 BPF 从网络流量中采集的 Span,覆盖 iptables、ipvs、OvS、LinuxBridge 等容器网络组件
    • 调用信息: 不同 Span 展示的调用信息略有不同
      • 应用 Span 和系统 Span:应用协议请求类型请求资源
      • 网络 Span:路径统计位置
    • 执行时间: Span 从开始到结束消耗的所有时间
  • 操作: 支持悬停点击
    • 悬停: 悬停到 Span,以 TIP 的形式展示调用信息+实例信息+执行时间
      • 实例信息: 应用 Span 展示的是服务+资源实例;系统 Span 展示的是进程+资源实例;网络 Span 展示的是网卡+资源实例
      • 执行时间: 展示了 Span 的整个执行时间,即自身执行时间的占比
    • 点击: 点击 Span,高亮自身及父 Span,也可查看被点击 Span 的详细信息
  • 收起侧边栏: 点击后支持将服务列表收起

# 1.1.2 调用拓扑图

3_3.png

3_3.png

调用拓扑图将数据进行有序结构化展示,数据以服务聚合为节点,每个节点之间用水平竖的折线将 Span 之间的父子关系展示出其请求调用关系,下面将进行详细的介绍:

  • 节点: 对应到火焰图中服务列表的服务,将同一个服务下的一个或者多个 Span 聚合为一个节点,并展示该服务在调用链中所用耗时
    • 显示信息: 以方形节点显示信息图标+调用信息+自身耗时组成
      • 图标: 通过图标来区分不同类型的 Span,使用详情,请参阅【火焰图】章节
    • 自身耗时:服务所对应的一个或多个 Span 的耗时总和
  • 路径: 对应火焰图中的父Span子Span的关系进行拓扑路径绘制
  • 操作: 支持悬停点击,使用详情,请参阅【火焰图】章节