sleuth — 链路跟踪
- 随着系统规模越来越大,微服务之间调用关系变得错综复杂,一条调用链路中可能调用多个微服务,任何一个微服务不可用都可能造整个调用过程失败
- spring cloud sleuth 可以跟踪调用链路,分析链路中每个节点的执行情况
在调用链路中每个服务上都会产生链路跟踪日志
- A --> B --> C --> D
项目添加 sleuth 依赖,自动配置
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
在控制台查看链路跟踪日志
- 通过 zuul 网关,访问 order-service
http://localhost:3001/order-service/112233
sleuth + zipkin 链路分析
- zipkin 可以收集链路跟踪数据,提供可视化的链路分析
链路数据抽样比例
默认 10% 的链路数据会被发送到 zipkin 服务。可以配置修改抽样比例
spring:
sleuth:
sampler:
probability: 0.1
两种发送方式
- 直接连接zipkin,向zipkin发送
- 通过消息服务中转发送
zipkin 服务
下载 zipkin 服务器
https://github.com/openzipkin/zipkin
启动 zipkin 时,连接到 rabbitmq
java -jar zipkin-server-2.12.9-exec.jar --zipkin.collector.rabbitmq.uri=amqp://admin:admin@192.168.64.140:5672
- http://localhost:9411/zipkin
2,3,4,11添加 rabbitmq 和 zipkin 配置
- 添加 rabbitmq 和 zipkin 客户端依赖
- 配置 rabbitmq 的连接信息
- 配置 zipkin 向 rabbitmq 发送日志
1. 添加 rabbitmq 和 zipkin 客户端依赖
修改以下微服务
- sp02-item-service
- sp03-user-service
- sp04-order-service
- sp11-zuul
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2. 配置 rabbitmq 的连接信息
spring:
application:
name: order-service
cloud:
config:
override-none: true
rabbitmq:
host: 192.168.64.140
port: 5672
username: admin
password: admin
zipkin:
sender:
type: rabbit
server:
port: 8201
eureka:
client:
service-url:
defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka
feign:
hystrix:
enabled: true
management:
endpoints:
web:
exposure:
include: hystrix.stream
3. 配置 zipkin 向 rabbitmq 发送日志
启动并访问服务,访问 zipkin 查看链路分析
-
http://localhost:3001/order-service/112233
刷新访问多次,链路跟踪数据中,默认只有 10% 会被收集到zipkin -
访问 zipkin
http://localhost:9411/zipkin