sleuth
分布式跟踪解决方案
- 日志打印图示
参数分析
日志的格式为:[applicationName, tracedspanld, export], Sleuth可以在发起每个请求时生成traceld、spanld,同一个请求链路的traceid是一样的,每次调用生成的spanid的值是不一样的。
- applicationName
应用的名称,也就是application.properties中的spring.application.name属
性的值.
- traceId
一个请求分配的ID号,用来标识一条请求链路.
- spanid
表示一个基本的工作单元,一个请求可以包含多个步骤,每个步骤都拥有自己的
spanld
- export
表示是否要将该信息输出到类似Zipkin这样的追踪服务端进行收集和展示。
- 相关依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
- 配置项
#是否开启sleuth
spring.sleuth.enabled=true
Zipkin
Zipkin是Twitter的一个开源项目,它致力于收集服务的实时数据,以解决微服务架构中的延迟问题,
包括数据的收集、存储、查找和展现。我们可以使用它来收集各个服务器上请求链路的追踪数据,并通过
它提供的REST API接口来辅助我们查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系
统中出现的延迟升高问题并找出系统性能瓶颈的根源。除了面向开发的API接口之外,它也提供了方便
的UI组件来帮助我们直观的搜索跟踪信息和分析请求链路明细,比如:可以查询某段时间内各用户请
求的处理时间等。Zipkin提供了可插拔数据存储方式:In-Memory、MySqL Cassandra以及
Elasticsearch.
zipkin-server 安装
Zipkin&Elasticsearch 集成
Zipkin默认是将监控数据存储在内存的,如果Zipkin服务挂掉或重启的话,那么监控数据就会丢失。如
果想要搭建生产环境下可用的Zipkin,就需要实现监控数据的持久化。前面提到过,Zipkin提供了可插
拔数据存储方式,如In-Memory、MySql、Cassandra以及Elasticsearch,接下来演示如何使用
Elasticsearch作为Zipkin的持久化方案。