第 9 章 分布式追踪
通过分布式追踪,您可以跟踪分布式系统中应用程序之间的事务进度。在微服务架构中,跟踪服务间的事务进度。trace 数据可用于监控应用程序性能和调查目标系统和最终用户应用程序的问题。
在 AMQ Streams 中,追踪有助于对消息的端到端跟踪:从源系统到 Kafka,然后从 Kafka 到目标系统和应用程序。它补充了可在 Grafana 仪表板 中查看的指标,以及组件日志记录器。
AMQ Streams 如何支持追踪
在以下组件中内置了对追踪的支持:
- Kafka Connect
- MirrorMaker
- MirrorMaker 2.0
- AMQ Streams Kafka Bridge
您可以使用自定义资源中的模板配置属性为这些组件启用和配置追踪。
要在 Kafka 产生者、消费者和 Kafka Streams API 应用程序中启用追踪,您可以 instrument 应用程序代码,使用 OpenTracing Apache Kafka Client Instrumentation 库(附带 AMQ Streams)。在检测程序时,客户端会生成 trace 数据;例如,当生成消息或向日志写入偏移时。
对 OpenTracing 的支持已弃用。Jaeger 客户端现已停用,OpenTracing 项目存档。因此,我们不能保证其对将来的 Kafka 版本的支持。我们基于 OpenTelemetry 项目推出新的追踪实施。
trace 根据抽样策略抽样,然后在 Jaeger 用户界面中视觉化。
Kafka 代理不支持追踪。
在 AMQ Streams 之外为应用程序和系统设置追踪不在本章范围内。要了解有关此主题的更多信息,请在 OpenTracing 文档中 搜索 "inject and extract"。
步骤概述
要为 AMQ Streams 设置追踪,请按照以下步骤执行:
为客户端设置追踪:
使用 tracers 检测客户端:
- 为 MirrorMaker、Kafka Connect 和 Kafka Bridge 设置追踪
先决条件
- Jaeger 后端组件部署到 OpenShift 集群。有关部署说明,请参阅 Jaeger 文档。
9.1. OpenTracing 和 Jaeger 概述 复制链接链接已复制到粘贴板!
AMQ Streams 使用 OpenTracing 和 Jaeger 项目。
OpenTracing 是一种独立于追踪或监控系统的 API 规范。
- OpenTracing API 用于检测 应用代码
- 检测的应用程序会在 分布式系统中为独立事务生成追踪
- trace 由 范围 组成,它们定义一段时间内的特定工作单元
Jaeger 是基于微服务的分布式系统的追踪系统。
- Jaeger 实施 OpenTracing API,并提供客户端库以用于检测
- Jaeger 用户界面允许您查询、过滤和分析追踪数据