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:总链路id
bd3:当前服务的链路id
false:不会将当前的日志信息,输出其他系统中
3 Zipkin的使用
搭建Zipkin的web工程 https://zipkin.io/
version: "3.1"
services:
zipkin:
image: daocloud.io/daocloud/zipkin:latest
restart: always
container_name: zipkin
ports:
- 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:latest
restart: always
container_name: zipkin
ports:
- 9411:9411
environment:
- 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:latest
restart: always
container_name: zipkin
ports:
- 9411:9411
environment:
- 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