Spring Cloud Sleuth+Zipkin实践
2017-08-23 21:49
525 查看
一个由微服务构成的应用系统通过服务来划分问题域,通过REST请求服务API来连接服务来完成完整业务。对于入口的一个调用可能需要有多个后台服务协同完成,链路上任何一个调用超时或出错都可能造成前端请求的失败。服务的调用链也会越来越长,并形成一个树形的调用链。随着服务的增多,对调用链的分析也会越来越复杂。
针对服务化应用全链路追踪的问题,Google发表了Dapper论文,介绍了他们如何进行服务追踪分析。其基本思路是在服务调用的请求和响应中加入ID,标明上下游请求的关系。利用这些信息,可以可视化地分析服务调用链路和服务间的依赖关系。
对应Dpper的开源实现是Zipkin,支持多种语言包括JavaScript,Python,Java, Scala, Ruby, C#, Go等。其中Java由多种不同的库来支持。
Spring Cloud Sleuth是对Zipkin的一个封装,对于Span、Trace等信息的生成、接入HTTP Request,以及向Zipkin Server发送采集信息等全部自动完成。
1. Server 端
1)pom.xml中引入
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-storage-mysql</artifactId>
</dependency>
2)主类开启监控:@EnableEurekaClient,@EnableZipkinServer
3)配置 eureka.instance.client.serviceUrl.defaultZone
4)创建zipkin的db实例,配置用户权限,创建相关表 zipkin_annotations,zipkin_dependencies,zipkin_spans
5)配置zipkin存储的db内容:
zipkin:
ui:
environment: zipkin
storage:
type: mysql
mysql:
host: localhost
port: 3306
db: zipkin
username: username
password: password
2. Client 端
1)pom.xml中引入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
2)配置连接的server端地址及采样率
spring:
zipkin:
enabled: true
base-url: http://localhost:9411 sleuth:
sampler:
#采样率, 默认0.1
percentage: 1.0
注意:
1. db实例,表,需手工创建,否则zipkin-server虽然不会报错,但无法采集数据
2. 每1次request生成一个traceId,中间有N个service层,则生成N个spanId,写入spans,annotaions
针对服务化应用全链路追踪的问题,Google发表了Dapper论文,介绍了他们如何进行服务追踪分析。其基本思路是在服务调用的请求和响应中加入ID,标明上下游请求的关系。利用这些信息,可以可视化地分析服务调用链路和服务间的依赖关系。
对应Dpper的开源实现是Zipkin,支持多种语言包括JavaScript,Python,Java, Scala, Ruby, C#, Go等。其中Java由多种不同的库来支持。
Spring Cloud Sleuth是对Zipkin的一个封装,对于Span、Trace等信息的生成、接入HTTP Request,以及向Zipkin Server发送采集信息等全部自动完成。
1. Server 端
1)pom.xml中引入
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-storage-mysql</artifactId>
</dependency>
2)主类开启监控:@EnableEurekaClient,@EnableZipkinServer
3)配置 eureka.instance.client.serviceUrl.defaultZone
4)创建zipkin的db实例,配置用户权限,创建相关表 zipkin_annotations,zipkin_dependencies,zipkin_spans
5)配置zipkin存储的db内容:
zipkin:
ui:
environment: zipkin
storage:
type: mysql
mysql:
host: localhost
port: 3306
db: zipkin
username: username
password: password
2. Client 端
1)pom.xml中引入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
2)配置连接的server端地址及采样率
spring:
zipkin:
enabled: true
base-url: http://localhost:9411 sleuth:
sampler:
#采样率, 默认0.1
percentage: 1.0
注意:
1. db实例,表,需手工创建,否则zipkin-server虽然不会报错,但无法采集数据
2. 每1次request生成一个traceId,中间有N个service层,则生成N个spanId,写入spans,annotaions
相关文章推荐
- Spring Cloud Sleuth+Zipkin实践
- SpringCloud学习之sleuth&zipkin【二】
- Spring Cloud Sleuth Zipkin 展示追踪数据
- spring-cloud-sleuth集成zipkin之spring-cloud-1.3.4(Dalston.SR3)-boot(1.5.6) 学习笔记
- spring cloud学习进阶篇:Spring Cloud Sleuth + Zipkin 实现分布式跟踪解决方案
- SpringCloud学习之sleuth&zipkin
- Spring Cloud Sleuth服务链路追踪(zipkin)(转)
- 全链路spring cloud sleuth+zipkin
- Spring Boot + Spring Cloud 构建微服务系统(八):分布式链路追踪(Sleuth、Zipkin)
- spring-cloud-sleuth+zipkin追踪服务实现
- springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin
- Spring Cloud(六):链路追踪Sleuth与Zipkin结合
- 疯狂Spring Cloud连载(30)Sleuth整合Zipkin
- Spring Cloud Sleuth Zipkin 升级使用
- Spring Cloud Sleuth与Zipkin整合时遇到的问题记录
- 疯狂Spring Cloud连载(30)Sleuth整合Zipkin
- springcloud 分布式服务跟踪sleuth+zipkin
- Spring Cloud Edgware新特性之九:Sleuth使用MQ方式整合Zipkin
- springcloud+sleuth+zipkin+kafka+es
- spring cloud 学习(8) - sleuth & zipkin 调用链跟踪