分布式追踪系统Jaeger初探

目录

  • Jaeger介绍
    • 什么是Jaeger
    • 特性
    • 技术
    • 系统截图
      • 跟踪界面
      • 追踪细节
  • 特性详情
    • 高扩展性
    • 对OpenTracing原生支持
    • 多种存储后端
    • 现代化Web UI
    • 云原生部署
    • 观测
    • 向下兼容Zipkin
  • 参考资料

Jaeger介绍

什么是Jaeger

Jaeger是Uber发布的一个开源系统,受到Dapper和OpenZipkin启发,用来监控和排查微服务的分布式系统。包括:

  • 分布式上下文传递
  • 分布式事务监控
  • 自顶向下的原因分析
  • 服务依赖分析
  • 性能优化

Uber发布了一篇博客,讲述了分布式追踪系统在其内部的发展过程,以及Jaeger选用当前架构的原因。

特性

  • 兼容OpenTracing数据模型和相关开发库,现在已经有Go,Java,NodeJs,Python,C++的实现。
  • 对服务进行持续的采样
  • 支持多种存储系统:Cassandra,Elasticsearch,内存
  • 自适应采样(开发中)
  • 数据处理管道(pipeline)(开发中)

在这里查看更多细节

技术

  • 后端使用Go语言实现
  • React/Javascript UI
  • 支持的后端存储:Cassandra 3.4+,Elasticsearch 5.x, 6.x,Kafka,内存

系统截图

跟踪界面

分布式追踪系统Jaeger初探_第1张图片

追踪细节

分布式追踪系统Jaeger初探_第2张图片

特性详情

高扩展性

Jaeger的后端设计旨在不会出现单点故障,并且会随着业务扩容。

对OpenTracing原生支持

Jaeger的后端,前端UI,开发库都是一开始就被设计为支持OpenTracing标准的。

  • 通过span的概念,使用痕迹线(traces)表示有向非循环图,
  • 支持强类型span标记(tags)和结构化日志
  • 通过baggage支持通用的分布式上下文的传递机制

多种存储后端

Jaeger支持两种流行的开源NoSql数据库作为trace存储后端,分别是Cassandra 3.4+ 和 Elasticsearch 5.x/6.x。社区也正在实验使用其他的数据库,例如ScyllaDB, InfluxDB, Amazon DynamoDB。Jaeger同样也提供了基于内存的存储,作为测试使用。

现代化Web UI

Jaeger Web UI使用流行的开源框架(如React),在1.0版本以后有了性能上的改进,可以处理大量的数据。

云原生部署

Jaeger的后端是分布式的,可以用Docker镜像部署,并支持多种配置模式,包括命令行,环境变量,多种格式的配置文件(yaml、toml等)。可以通过Kubernetes operator、Kubernetes templates、Helm chart的方式部署到Kubernetes集群中。

观测

所有的Jaeger后端组件都会默认暴露Prometheus监控指标(其他的监控后端也支持),使用结构化日志后端zap来记录日志。

向下兼容Zipkin

如果你已经使用了Zipkin相关的库,那么不需要重写所有的代码。从Zipkin后端切换只需要将流量路由到Jaeger后端。

参考资料

https://www.jaegertracing.io/docs/1.13/

你可能感兴趣的:(Jaeger)