分布式追踪系统Jager

简介

Jaeger 是一个开源的分布式追踪系统,用于监测和诊断复杂的分布式应用程序。它最初是由 Uber Technologies 开发并开源的,现在是 Cloud Native Computing Foundation(CNCF)的一个独立项目。Jaeger 旨在解决在分布式系统中跟踪请求的路径和性能问题。

Jaeger 可以帮助开发人员和系统管理员了解分布式系统中的请求流程,并提供详细的性能分析和故障排除。它通过跟踪每个请求的调用链(Trace)来实现这一目标。调用链是一个请求的完整路径,包括请求经过的所有服务和组件。Jaeger 会在分布式系统中的每个服务边界上插入轻量级的代理(例如 Jaeger 客户端),以收集请求的跟踪数据。

当请求进入系统时,Jaeger 客户端会生成一个唯一的标识符(Trace ID),并将其附加到请求的上下文中。随后,该 Trace ID 将通过分布式系统传播,并在每个服务边界上进行记录。每次服务处理请求时,Jaeger 客户端会生成一个称为 Span 的记录,其中包含有关请求处理的信息,例如开始时间、结束时间、耗时等。这样,Jaeger 就能够构建出完整的调用链,展示请求在各个服务之间的路径和性能数据。

Jaeger 提供了一个用户界面,可以可视化调用链并提供有关每个 Span 的详细信息。用户可以查看请求的整体性能指标,如平均响应时间、请求成功率等,以及对特定请求进行更深入的分析和故障排除。

Jaeger 广泛应用于微服务架构和容器化环境中,为开发人员和系统管理员提供了有价值的分布式系统监控和诊断工具。它已被许多组织和项目采用,并成为了 CNCF 生态系统中的一个重要组成部分。

安装

使用 Docker 安装

Jaeger 提供了一个随时可用的 all-in-one Docker 镜像,其中包含 Jaeger queryjaeger-collectorjaeger-agent

https://github.com/jaegertracing/jaeger/tree/main/examples/hotrod

执行以下命令启动容器:

docker run \
  --rm \
  --name jaeger \
  -p4318:4318 \
  -p16686:16686 \
  -p14268:14268 \
  jaegertracing/all-in-one:latest

容器启动后,使用浏览器打开 http://localhost:16686 即可访问 Jaeger UI。

架构

查看文档

https://www.jaegertracing.io/docs/1.21/architecture/

使用 Hugo 构建
主题 StackJimmy 设计