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