Jaeger 简介

分布式跟踪系统 Jaeger 的学习笔记。

Jaeger 官方文档,本人在写文章是,官方文档是 1.14

Jaeger 简介

Jaeger 是 Uber 公司开源的一个用于监视和诊断基于微服务的分布式系统。
主要包含以下功能:

  • Distributed context propagation
    分布式上下文传播

  • Distributed transaction monitoring
    分布式事务监控

  • Root cause analysis
    根本原因分析

  • Service dependency analysis
    服务依赖关系分析

  • Performance / latency optimization
    性能/延迟优化(应该是分析出哪些需要优化)

spans-traces

图示中,ABCDE 表示五个服务。

用户发起一次请求 RequestXA

由于 A 该请求依赖服务 BC
因此 A 分别发送 RPC 请求到 BC

B 处理完请求后会直接返回到 A

但是服务 C 还依赖服务 DE
因此还要发起两个 RPC 请求分别到 DE
DE 处理完毕后回到 C
C 才继续回复到 A

最终 A 会回复用户 ReplyX

上面的流程跨若干个服务调用,因此我们需要一个工具来跟踪整个调用过程。

看谁依赖了谁,如果某个服务被依赖过多,考虑是否需要增加负载均衡…
看每个服务响应时间的长短,找出需要优化的点…

Jaeger 就是这样的一种工具。

快速开始

1
2
3
4
5
6
7
8
9
10
docker run -d --name jaeger \
-e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \
-p 5775:5775/udp \
-p 6831:6831/udp \
-p 6832:6832/udp \
-p 5778:5778 \
-p 16686:16686 \
-p 14268:14268 \
-p 9411:9411 \
jaegertracing/all-in-one:1.14

当 docker 启动容器后,在浏览器输入 http://localhost:16686 即可访问 Jaeger 的 UI

https://github.com/jukylin/blog/blob/master/Uber%E5%88%86%E5%B8%83%E5%BC%8F%E8%BF%BD%E8%B8%AA%E7%B3%BB%E7%BB%9FJaeger%E4%BD%BF%E7%94%A8%E4%BB%8B%E7%BB%8D%E5%92%8C%E6%A1%88%E4%BE%8B%E3%80%90PHP%20%20%20Hprose%20%20%20Go%E3%80%91.md

OpenTracing

OpenTracing 官方文档

OpenTracing 中文文档

OpenTracing 是一套标准,它通过提供平台无关、厂商无关的API,使得开发人员能够方便的添加(或更换)追踪系统的实现(我们在测试使用中是基本上通过两行代码的更改就可以在 Zipkin 和 Jaeger 之间切换)。

OpenTracing 提供了用于运营支撑系统的和针对特定平台的辅助程序库。程序库的具体信息请参考详细的规范。

OpenTracing 已进入 CNCF(云原生计算基金会,著名的Kubernetes、gRPC和Prometheus等均孵化于此),正在为全球的分布式追踪,提供统一的概念和数据标准。

用一个类比来介绍 OpenTracing,OpenTracing 类似编程中的接口(interface),而 Jaeger 类似编程中对接口的实现。

觉得文章对您有帮助,请我喝瓶肥宅快乐水可好 (๑•̀ㅂ•́)و✧
  • 本文作者: 阿彬~
  • 本文链接: https://iweixubin.github.io/posts/jaeger/introduction/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 免责声明:本媒体部分图片,版权归原作者所有。因条件限制,无法找到来源和作者未进行标注。
         如果侵犯到您的权益,请与我联系删除