第 22 章 分布式追踪简介
分布式追踪跟踪分布式系统中应用程序间的事务进度。在微服务架构中,追踪跟踪服务间事务的进度。跟踪数据对于监控应用程序性能和目标系统和最终用户应用程序的问题非常有用。
在 Apache Kafka 的流中,追踪有助于对消息的端到端跟踪:从源系统到 Kafka,然后从 Kafka 到目标系统和应用程序。分布式追踪补充了 Grafana 仪表板中的指标监控,以及组件日志记录器。
以下 Kafka 组件内置了对追踪的支持:
- MirrorMaker 将来自源集群的信息追踪到目标集群
- Kafka 连接到由 Kafka Connect 使用和生成的 trace 信息
- Kafka Bridge 用于跟踪 Kafka 和 HTTP 客户端应用程序之间的信息
Kafka 代理不支持追踪。
您可以通过其自定义资源为这些组件启用和配置追踪。您可以使用 spec.template
属性添加追踪配置。
您可以使用 spec.tracing.type
属性指定追踪类型来启用追踪:
OpenTelemetry
-
指定
type: opentelemetry
以使用 OpenTelemetry。默认情况下,OpenTelemetry 使用 OTLP (OpenTelemetry 协议) exporter 和端点来获取 trace 数据。您可以指定 OpenTelemetry 支持的其他追踪系统,包括 Jaeger tracing。要做到这一点,您可以在追踪配置中更改 OpenTelemetry 导出器和端点。
Apache Kafka 的流不再支持 OpenTracing。如果您之前将 OpenTracing 与 type: jaeger
选项搭配使用,我们建议您改为使用 OpenTelemetry 过渡到。
22.1. 追踪选项
在 Jaeger tracing 系统中使用 OpenTelemetry。
OpenTelemetry 提供独立于追踪或监控系统的 API 规格。
您可以使用 API 检测应用程序代码以进行追踪。
- 检测的应用程序会为分布式系统中的单个请求生成 trace。
- 跟踪由 范围 组成,用于定义一段时间内的特定工作单元。
Jaeger 是基于微服务的分布式系统的追踪系统。
- Jaeger 用户界面允许您查询、过滤和分析 trace 数据。
Jaeger 用户界面显示一个简单的查询