每次用户在应用程序中执行操作时,架构都会执行一个请求,这可能需要数十个不同的服务参与才能产生响应。Red Hat OpenShift 分布式追踪平台允许您执行分布式追踪,它会记录请求通过构成应用程序的各种微服务的路径。
分布式追踪是一种用于将不同工作单元的信息绑定在一起的技术——通常在不同的进程或主机中执行——以了解分布式事务中整个事件链。开发人员可以使用分布式追踪可视化大型微服务架构中的调用流程。它对于了解序列化、并行性和延迟来源非常有价值。
Red Hat OpenShift 分布式追踪平台记录整个微服务堆栈中单个请求的执行情况,并将其呈现为追踪。追踪是通过系统的路径数据/执行。端到端追踪由一个或多个跨度组成。
跨度表示 Red Hat OpenShift 分布式追踪平台中的逻辑工作单元,它具有操作名称、操作的开始时间和持续时间,以及潜在的标签和日志。跨度可以嵌套并排序以模拟因果关系。
作为服务所有者,您可以使用分布式追踪来检测您的服务,以收集有关服务架构的见解。您可以使用 Red Hat OpenShift 分布式追踪平台来监控、网络分析和解决现代、云原生、基于微服务的应用程序中组件之间的交互问题。
使用分布式追踪平台,您可以执行以下功能:
监控分布式事务
优化性能和延迟
执行根本原因分析
Red Hat OpenShift 分布式追踪平台提供以下功能
与 Kiali 集成 – 正确配置后,您可以从 Kiali 控制台查看分布式追踪平台数据。
高可扩展性 – 分布式追踪平台后端设计没有单点故障,并可根据业务需求进行扩展。
分布式上下文传播 – 使您能够将来自不同组件的数据连接在一起,以创建完整的端到端追踪。
与 Zipkin 向后兼容 – Red Hat OpenShift 分布式追踪平台具有 API,使其可以作为 Zipkin 的直接替代品,但 Red Hat 在此版本中不支持 Zipkin 兼容性。
Red Hat OpenShift 分布式追踪平台由多个组件组成,这些组件协同工作以收集、存储和显示追踪数据。
Red Hat OpenShift 分布式追踪平台 (Tempo) - 此组件基于开源 Grafana Tempo 项目。
网关 (Gateway) – 网关处理身份验证、授权并将请求转发到分发器或查询前端服务。
分发器 (Distributor) – 分发器接受多种格式的跨度数据,包括 Jaeger、OpenTelemetry 和 Zipkin。它通过对traceID
进行哈希并使用分布式一致哈希环将跨度路由到 Ingester。
Ingester – Ingester 将追踪批处理成块,创建布隆过滤器和索引,然后将其全部刷新到后端。
查询前端 (Query Frontend) – 查询前端负责为传入的查询分片搜索空间。然后将搜索查询发送到 Querier。查询前端部署通过 Tempo 查询 sidecar 公开 Jaeger UI。
Querier - Querier 负责在 Ingester 或后端存储中查找请求的 trace ID。根据参数,它可以查询 Ingester 并从后端拉取布隆索引以搜索对象存储中的块。
压实器 (Compactor) – 压实器在后端存储之间传输块,以减少块的总数。
Red Hat 版 OpenTelemetry - 此组件基于开源 OpenTelemetry 项目。
OpenTelemetry 收集器 (OpenTelemetry Collector) - OpenTelemetry 收集器是一种与厂商无关的方式来接收、处理和导出遥测数据。OpenTelemetry 收集器支持开源可观测性数据格式,例如 Jaeger 和 Prometheus,并将数据发送到一个或多个开源或商业后端。收集器是仪器库导出遥测数据的默认位置。
Red Hat OpenShift 分布式追踪平台 (Jaeger) - 此组件基于开源 Jaeger 项目。
客户端 (Client) (Jaeger 客户端、Tracer、Reporter、已仪器化应用程序、客户端库) – 分布式追踪平台 (Jaeger) 客户端是 OpenTracing API 的特定于语言的实现。它们可用于手动或使用各种现有的开源框架(例如 Camel (Fuse)、Spring Boot (RHOAR)、MicroProfile (RHOAR/Thorntail)、Wildfly (EAP) 以及许多其他已与 OpenTracing 集成的框架)对应用程序进行分布式追踪。
代理 (Agent) (Jaeger 代理、服务器队列、处理器工作器) – 分布式追踪平台 (Jaeger) 代理是一个网络守护程序,它侦听通过用户数据报协议 (UDP) 发送的跨度,然后将其批量发送到收集器。代理旨在放置在与已仪器化应用程序相同的主机上。这通常通过在 Kubernetes 等容器环境中使用 sidecar 来实现。
Jaeger 收集器 (Jaeger Collector) (收集器、队列、工作器) – 与 Jaeger 代理类似,Jaeger 收集器接收跨度并将它们放入内部队列以进行处理。这允许 Jaeger 收集器立即返回到客户端/代理,而不是等待跨度进入存储。
存储 (Storage) (数据存储) – 收集器需要持久性存储后端。Red Hat OpenShift 分布式追踪平台 (Jaeger) 具有用于跨度存储的可插拔机制。Red Hat OpenShift 分布式追踪平台 (Jaeger) 支持 Elasticsearch 存储。
查询 (Query) (查询服务) – 查询是一个从存储中检索追踪的服务。
Ingester (Ingester 服务) – Red Hat OpenShift 分布式追踪平台可以使用 Apache Kafka 作为收集器和实际 Elasticsearch 后端存储之间的缓冲区。Ingester 是一个从 Kafka 读取数据并写入 Elasticsearch 后端存储的服务。
Jaeger 控制台 – 使用 Red Hat OpenShift 分布式追踪平台 (Jaeger) 用户界面,您可以可视化您的分布式追踪数据。在“搜索”页面上,您可以查找追踪并浏览构成单个追踪的跨度的详细信息。