分布式追踪系统Jaeger初探

Jaeger介绍

什么是Jaeger

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

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

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

特性

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

这里查看更多细节

技术

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

系统截图

跟踪界面

在这里插入图片描述

追踪细节

在这里插入图片描述

特性详情

高扩展性

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 operatorKubernetes templatesHelm chart的方式部署到Kubernetes集群中。

观测

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

向下兼容Zipkin

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

参考资料

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值