第 13 章 分布式追踪
分布式追踪允许您跟踪分布式系统中的应用程序间事务的进度。在微服务架构中,追踪跟踪服务间事务的进度。跟踪数据对于监控应用程序性能和目标系统和最终用户应用程序的问题非常有用。
在 Red Hat Enterprise Linux 上的 AMQ Streams 中,追踪有助于对消息的端到端跟踪:从源系统到 Kafka,然后从 Kafka 到目标系统和应用程序。追踪补充可用的 JMX 指标。
AMQ Streams 如何支持追踪
为以下客户端和组件提供了追踪支持。
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 后端组件部署到 Kubernetes 集群中。有关部署说明,请参阅 Jaeger 文档。
13.1. OpenTracing 和 Jaeger 概述 复制链接链接已复制到粘贴板!
AMQ Streams 使用 OpenTracing 和 Jaeger 项目。
OpenTracing 是一种 API 规范,独立于追踪或监控系统。
- OpenTracing API 用于检测 应用程序代码
- 检测的应用程序为分布式系统间的独立事务生成 trace
- 跟踪由 范围 组成,用于定义一段时间内的特定工作单元
Jaeger 是基于微服务的分布式系统的追踪系统。
- Jaeger 实现 OpenTracing API,并为工具提供客户端库
- Jaeger 用户界面允许您查询、过滤和分析 trace 数据
其他资源