Uber Jaeger介绍
Jaeger加入CNCF
Jaeger是 Uber开源的 OpenTracing实现,包括客户端和服务端。
Jaeger项目4月14日开源,9月13日被 CNCF接受成为第12个托管项目, CNCF Hosts Jaeger。CNCF托管的其他11个项目是:
- Kubernetes
- Prometheus
- OpenTracing
- Fluentd
- Linkerd
- gRPC
- CoreDNS
- containerd
- rkt
- CNI
- Envoy
Jaeger架构
Jaeger的架构如下图所示:
图片来自http://jaeger.readthedocs.io/en/latest/architecture/
Jaeger的架构很简洁:
- 在每个服务器上运行 jaeger-agent,用于收集本服务器的信息,然后发送给 jaeger-collector。
- 每个服务都嵌入 jaeger-client,这是一个客户端,会把服务的请求处理的tracing信息发送给 jaeger-agent。
- jaeger-collector是一个中心化的服务端,用于收集 jaeger-agent发送过来的tracing信息进行处理后存储到数据库中(目前只支持Cassandra)。
- jaeger-query是一个查询服务,对外保护tracing信息的查询API。
- jaeger-ui是一个浏览器客户端。
Jaeger的demo
Jaeger项目的leader写了一篇很好的文章来介绍Jaeger的使用 Take OpenTracing for a HotROD ride。
文中演示了查看服务的架构,查看请求的详细构成,定位延迟原因等基本用法。还介绍了span,基于上下文的log,tag,OpenTracing baggage等概念。要了解 Jaeger能做什么,可以从这篇文章开始。
这个demo项目是用了 Uber的 TChannel来实现微服务的RPC,它已经和OpenTracing做了集成,用起来很方便。另外一个流行的rpc框架 gRPC也已经和OpenTracing进行了集成。
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。