1 引言
在整个微服务架构中,微服务很多,一个请求可能需要调用很多很多的服务,最终才能完成一个功能,如果说,整个功能出现了问题,在这么多的服务中,如何去定位到问题的所在点,出现问题的原因是什么。
- Sleuth可以获得到整个服务链路的信息。
- Zipkin通过图形化界面去看到信息。
- Sleuth将日志信息存储到数据库中。
2 Sleuth的使用
导入依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId></dependency>
编写配置文件
logging:level:org.springframework.web.servlet.DispatcherServlet: DEBUG
[OPEN-USER-v1,ebb3cc2e66f86a7a,bd37765364975051,true]
SEARCH:服务名称ebb:总链路idbd3:当前服务的链路idfalse:不会将当前的日志信息,输出其他系统中
3 Zipkin的使用
搭建Zipkin的web工程 https://zipkin.io/
version: "3.1"services:zipkin:image: daocloud.io/daocloud/zipkin:latestrestart: alwayscontainer_name: zipkinports:- 9411:9411
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zipkin</artifactId></dependency>
编写配置文件
#指定服务的名称spring:sleuth:sampler:probability: 1 # 百分之多少的sleuth信息需要输出到zipkin中(0.5 0.01)zipkin:base-url: http://192.168.199.109:9411/ # 指定zipkin的地址
测试
4 整合RabbitMQ
导入RabbitMQ依赖
修改配置文件
spring:zipkin:sender:type: rabbit
修改Zipkin的信息
version: "3.1"services:zipkin:image: daocloud.io/daocloud/zipkin:latestrestart: alwayscontainer_name: zipkinports:- 9411:9411environment:- RABBIT_ADDRESSES=192.168.199.109:5672- RABBIT_USER=test- RABBIT_PASSWORD=test- RABBIT_VIRTUAL_HOST=/test
5 Zipkin存储数据到ES
重新修改zipkin的yml文件
version: "3.1"services:zipkin:image: daocloud.io/daocloud/zipkin:latestrestart: alwayscontainer_name: zipkinports:- 9411:9411environment:- RABBIT_ADDRESSES=192.168.199.109:5672- RABBIT_USER=test- RABBIT_PASSWORD=test- RABBIT_VIRTUAL_HOST=/test- STORAGE_TYPE=elasticsearch- ES_HOSTS=http://192.168.199.109:9200
