官网:https://www.jaegertracing.io/

概述

Jaeger是由Uber开源的分布式追踪系统,一套完整的Jager追踪系统包括Jaeger-client、Jaeger-agent、Jaeger-collector、Database和Jaeger-query UI等基本组件,如下图架构图所示,Jaeger客户端支持多种语言,jaeger-agent与客户端进行数据交互,并把数据push到Jaeger-collector组件,Jaeger-collector将数据持久化到数据库,Jaeger-query是一个web服务,用于展示跟踪链路。
image.png
jaeger-client:jaeger 的客户端,实现了opentracing协议;
jaeger-agent:jaeger client的一个代理程序,client将收集到的调用链数据发给agent,然后由agent发给collector;
jaeger-collector:负责接收jaeger client或者jaeger agent上报上来的调用链数据,然后做一些校验,比如时间范围是否合法等,最终会经过内部的处理存储到后端存储;
jaeger-query:专门负责调用链查询的一个服务,有自己独立的UI;
jaeger-ingester:中文名称“摄食者”,可用从kafka读取数据然后写到jaeger的后端存储,比如Cassandra和Elasticsearch;
spark-job:基于spark的运算任务,可以计算服务的依赖关系,调用次数等;

其中jaeger-collector和jaeger-query是必须的,其余的都是可选的

环境搭建

  1. docker pull jaegertracing/all-in-one:latest
  2. docker run -d -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \
  3. -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp \
  4. -p 5778:5778 -p 16686:16686 -p 14268:14268 -p 14269:14269 -p 9411:9411 \
  5. jaegertracing/all-in-one:latest

6831: jaeger-agent端口
16686:jaeger-query端口

UI

结果解释

在这里,可以进行结果切换
image.png

不同服务之间互调

image.png
image.png

一父多子

image.png

父子依赖结果

image.png

父子不依赖结果image.png