11. 分布式追踪

跟踪可以成为调试分布式系统性能的宝贵工具,尤其是用于识别瓶颈和了解系统中每个组件的延迟成本。 Linkerd 可以配置为从代理发出跟踪跨度,允许您准确查看请求和响应在内部花费的时间

Linkerd 的大多数功能不同,分布式跟踪需要更改代码和配置。 (您可以阅读服务网格中的分布式跟踪:四个误区,为什么会这样?)

此外,Linkerd 提供了许多通常与分布式跟踪相关的功能,无需配置或应用程序更改,包括:

  • 实时服务拓扑依赖关系图
  • 聚合服务运行状况延迟请求量
  • 聚合 path/route 运行状况延迟请求量

例如,Linkerd 可以显示服务的所有传入传出依赖项的实时拓扑, 而无需分布式跟踪或任何其他此类应用程序修改:

The Linkerd dashboard showing an automatically generated topology graph
The Linkerd dashboard showing an automatically generated topology graph

同样,Linkerd 可以为每个服务每个路由提供黄金指标, 同样需要分布式跟踪或任何其他此类应用程序修改:

Linkerd dashboard showing an automatically generated route metrics
Linkerd dashboard showing an automatically generated route metrics

使用分布式跟踪

也就是说,分布式跟踪肯定有其用途,Linkerd 使这尽可能简单。 Linkerd 在分布式跟踪中的作用实际上非常简单: 当 Linkerd 数据平面代理(data plane proxy)在代理的 HTTP 请求中 看到跟踪头(tracing header)时, Linkerd 将为该请求发出跟踪跨度(trace span)。 此跨度将包括有关在 Linkerd 代理中花费的确切时间量的信息。 当与软件配合使用来收集、存储和分析这些信息时, 这可以提供对 mesh 行为的重要洞察。

要使用此功能,您还需要引入几个额外的系统中的组件, 包括启动特定请求跟踪的入口层(ingress layer)、 应用程序的客户端库(或传播跟踪头(trace header)的机制)、 收集跨度数据并将其转换为跟踪的跟踪收集器(trace collector), 以及跟踪后端(trace backend)存储跟踪数据并允许用户查看/查询它。

有关详细信息,请参阅我们的使用 Linkerd 向您的应用程序添加分布式跟踪的指南