Sleuth
Sleuth的作用
在整个微服务的请求链路中,为了方便查询整个链路的日志信息,可以采用Sleuth去收集日志信息,并且在配合Zipkin去以图形化界面站式,方便定位问题所在。
Sleuth入门(入门即结束)
导入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency>
编写配置文件
logging: level: org.springframework.web.servlet.DispatcherServlet: DEBUG
查看日志
- [SEARCH,d59da7a303b25c09,525df895291cea9e,false]
- SEARCH:服务名
- d59da7a303b25c09:总链路id
- 525df895291cea9e:子链路id
- false:没有输出日志信息
Zipkin入门
安装Zipkin
version: "3.1" services: zipkin: image: 10.0.134.175:5000/zipkin:latest restart: always container_name: zipkin ports: - 9411:9411
修改服务信息
导入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
编写配置文件
spring: zipkin: base-url: http://10.0.131.23:9411 # 指定zipkin的地址信息 sender: type: web # 指定发送日志信息的方式是Http方式(坑) sleuth: sampler: probability: 1 # 指定Sleuth收集日志的比例 1 - 100%
Sleuth整合RabbitMQ和ES
服务发送Sleuth的信息给Zipkin时的效率问题:
- 默认情况下,通过Http的请求方式,将日志信息发送给Zipkin。
- 可以采用消息队列的方式,将消息发送给Zipkin。
实现:- 服务:只需要修改配置文件,将sender.type修改成rabbit。
- zipkin:给zipkin的docker-compose.yml添加RabbitMQ的信息。
Zipkin无法持久化日志信息问题:- 默认情况下,Zipkin会将数据存储在容器内部,容器挂掉,数据会丢失。
- 可以将日志信息数据存储到其他的持久化数据库中,如:MySQL,ES。
实现:- zipkin:修改zipkin的docker-compose.yml,添加持久化方式配置和ES的地址信息。
配置文件
spring: zipkin: sender: type: rabbit
docker-compose.yml
version: "3.1" services: zipkin: image: daocloud.io/daocloud/zipkin:latest restart: always container_name: zipkin ports: - 9411:9411 environment: - TZ=Asia/Shanghai # 时区 - RABBIT_ADDRESSES=10.0.131.23:5672 # RabbitMQ的信息 - RABBIT_USER=openapi-admin # RabbitMQ的信息 - RABBIT_PASSWORD=openapi-admin # RabbitMQ的信息 - RABBIT_VIRTUAL_HOST=openapi-admin # RabbitMQ的信息 - STORAGE_TYPE=elasticsearch # 持久化方式 - ES_HOSTS=http://10.0.131.23:9200 # ES的地址信息