第 15 章 分布式追踪
分布式追踪允许您跟踪分布式系统中应用程序之间的事务处理进度。在微服务架构中,跟踪服务之间的事务处理进度。跟踪数据可用于监控应用性能以及调查目标系统和最终用户应用的问题。
在 Red Hat Enterprise Linux 上的 AMQ Streams 中,追踪有助于端到端跟踪信息:从源系统到 Kafka,然后从 Kafka 至目标系统和应用程序。追踪补充了可用的 JMX 指标。
AMQ 流如何支持追踪
为以下客户端和组件提供了对追踪的支持:
Kafka 客户端:
- Kafka 生产者和消费者
- Kafka Streams API 应用程序
Kafka 组件:
- Kafka Connect
- Kafka Bridge
- MirrorMaker
- MirrorMaker 2.0
要启用追踪,您需要执行四个高级别任务:
- 启用 Jaeger tracer。
启用 Interceptors:
- 对于 Kafka 客户端,您可以使用 OpenTracing Apache Kafka Client Instrumentation 库(包括在 AMQ Streams 中)来检测 应用程序 代码。
- 对于 Kafka 组件,您可以为每个组件设置配置属性。
- 设置 追踪环境变量.
- 部署客户端或组件。
检测后,客户端会生成 trace 数据。例如,在生成消息或写入偏移到日志中时。
trace 会根据抽样策略进行抽样,然后在 Jaeger 用户界面中视觉化。
Kafka 代理不支持追踪。
为 AMQ Streams 以外的应用和系统设置追踪不在本章的讨论范围之内。要了解有关此主题的更多信息,请在 OpenTracing 文档中的 搜索"注入和提取"。
流程概述
要设置 AMQ Streams 的追踪,请按照以下步骤操作:
为客户端设置追踪:
为 MirrorMaker、MirrorMaker 2.0 和 Kafka Connect 设置追踪:
- 为 Kafka Bridge 启用追踪
先决条件
- Jaeger 后端组件部署到主机操作系统中。有关部署说明,请参阅 Jaeger 部署文档。
15.1. OpenTracing 和 Jaeger 概述
AMQ Streams 使用 OpenTracing 和 Jaeger 项目。
OpenTracing 是一种独立于追踪或监控系统的 API 规范。
- OpenTracing API 用于 检测 应用程序代码
- 工具的应用程序为分布式系统的个别交易生成 追踪
- trace 由定义了特定工作单元的 span 组成
Jaeger 是用于基于微服务的分布式系统的追踪系统。
- Jaeger 实现 OpenTracing API,并为检测提供客户端库
- Jaeger 用户界面允许您查询、过滤和分析 trace 数据
其它资源