11. 分布式追踪
跟踪可以成为调试分布式系统性能的宝贵工具,尤其是用于识别瓶颈和了解系统中每个组件的延迟成本。
Linkerd
可以配置为从代理发出跟踪跨度,允许您准确查看请求和响应在内部花费的时间。
与 Linkerd
的大多数功能不同,分布式跟踪需要更改代码和配置。
(您可以阅读服务网格中的分布式跟踪:四个误区,为什么会这样?)
此外,Linkerd
提供了许多通常与分布式跟踪相关的功能,无需配置或应用程序更改,包括:
- 实时服务拓扑和依赖关系图
- 聚合服务运行状况、延迟和请求量
- 聚合
path/route
运行状况、延迟和请求量
例如,Linkerd
可以显示服务的所有传入和传出依赖项的实时拓扑,
而无需分布式跟踪
或任何其他此类应用程序修改:

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

使用分布式跟踪
也就是说,分布式跟踪肯定有其用途,Linkerd
使这尽可能简单。
Linkerd
在分布式跟踪中的作用实际上非常简单:
当 Linkerd
数据平面代理(data plane proxy
)在代理的 HTTP
请求中
看到跟踪头(tracing header
)时,
Linkerd
将为该请求发出跟踪跨度(trace span
)。
此跨度将包括有关在 Linkerd
代理中花费的确切时间量的信息。
当与软件配合使用来收集、存储和分析这些信息时,
这可以提供对 mesh 行为的重要洞察。
要使用此功能,您还需要引入几个额外的系统中的组件,
包括启动特定请求跟踪的入口层(ingress layer
)、
应用程序的客户端库(或传播跟踪头(trace header)的机制)、
收集跨度数据并将其转换为跟踪的跟踪收集器(trace collector),
以及跟踪后端(trace backend)存储跟踪数据并允许用户查看/查询
它。
有关详细信息,请参阅我们的使用 Linkerd 向您的应用程序添加分布式跟踪的指南。