开篇
欢迎来到 Jaeger 的使用文档中!
无论你是一个还尚未接触过 Jaeger 的初学者,还是一个已经熟练使用 Jaeger 的老用户了,这个文档应该都会在某些方面对你有些启发和帮助。
当然,如果你之前还从为了解过分布式追踪系统,那么,建议的可以抽时间来学习一下文末的一些附录资源。
简介
Jaeger 是 Uber 开源的一款分布式是追踪系统,它本身是受到了 Dapper 和 OpenZipkin 的启发来演化而成的。
Jaeger 主要用于由微服务组成的分布式系统下的监控和故障定位等,包括:
- 分布式上下文传输
- 分布式事件监控
- 根因分析
- 服务依赖分析
- 辅助性能/延迟优化等
Uber 之前发布过一篇博客(Evolving Distributed Tracing at Uber),详细介绍了Jaeger 架构选型的前因后果。Jaeger 的作者 Yuri Shkuro 也曾发布过一本书 - Mastering Distributed Tracing,这个书涵盖了 Jaeger 的设计、功能使用等以及分布式追踪的一些通用概念。
功能介绍
Jaeger 具备如下一些优势:
- 与 OpenTracing 规范在数据模型、Lib库等方面完全兼容,支持 Go, Java, NodeJS, Python, C++, C# 等多语言。
- 针对每个服务/端点,使用一致的抽样率。
- 支持多种后端存储,包括:Cassandra, ElasticSearch, 内存存储等。
- 支持自动生成系统拓扑图。
- 支持自适应采样。
- 支持数据采集后的处理处理流水线。
关于 Jaeger 更多的功能,可以参考 Features 页面。
技术说明
关于 Jaeger 的一些技术说明如下:
- 后端模块基于 Go 语言开发。
- 前端页面基于 React + JavaScript 实现。
- 支持多种后端存储:
快速入门
参考:Jaeger 快速入门。
平台预览
下面,我们简单的来看一下 Jaeger 平台究竟是什么样的。
分布式链路图
分布式调用链详情图
附录资源
- Evolving Distributed Tracing at Uber,翻译版:Uber 中的分布式追踪系统。(文章)
- Mastering Distributed Tracing,翻译版:熟练掌握分布式追踪系统。(书籍)
- OpenTracing Tutorial (Java, Go, Python, Node.js, C#),翻译版:OpenTracing 入门手册(教程)
- IBM Garage Cloud Native Bootcamp - Distributed Tracing,翻译版:IBM 云原生分布式追踪系统(教程)
- Learning Distributed Tracing 101,翻译版:学习分布式追踪系统101(教程)
- Tracing HTTP request latency in Go with OpenTracing,翻译版:使用 OpenTracing 在 Go 项目中分析 HTTP 请求延迟(文章)
- Distributed Tracing with Jaeger & Prometheus on Kubernetes,翻译版:在 K8s 中使用 Jaeger 和 Prometheus 来实现分布式追踪(文章)
- Using Jaeger with Istio,翻译版:在 Istio 中使用 Jaeger(文档)
- Using Jaeger with Envoy,翻译版:在 Envoy 中使用 Jaeger(文档)