springcloud(4) Sleuth分布式链路追踪
Sleuth可以看到微服务间调用的链路,消耗时间,错误。Zipkin用来存储链路信息,并展示数据
一。代码
1.springcloud-eureka-server中
pom.xml
<!-- Zipkin --> <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>
application.yml
spring:
application:
name: springcloud-eureka-client
sleuth:
web:
client:
enabled: true #web开启sleuth功能;
sampler:
probability: 1.0 # 将采样比例设置为 1.0,也就是全部都需要。默认是 0.1
zipkin:
base-url: http://192.168.31.211:9411/ # 指定了 Zipkin 服务器的地址
sender:
type: web
2.springcloud-feign-client中pom.xml和application.yml增加相同修改
feign调用了eureka-client中的接口
二。Zipkin-server
docker命令安装
docker run -d -p 9411:9411 openzipkin/zipkin
访问http://192.168.31.211:9411/zipkin/
启动eureka-server, eureka-client, feign-client三个服务,然后多次访问http://localhost:9600/hello?name=123
就可以看到zipkin中有访问记录
双击访问记录,可以看到各个微服务消耗的时间
依赖页面可以看到,微服务间的依赖关系,调用
三,zipkin数据保存到Elasticsearch中 (我这有问题,没有链路数据。。。)
上面的是保存在zipkin内存中,重启后就没有了。可以将链路数据保存到ES中,
安装好ES和kibana后
docker中运行zipkin,连接ES
docker run -d --name zipkin_elasticsearch -p 9411:9411 -e STORAGE_TYPE=elasticsearch -e ES_HOSTS=192.168.31.211:9200 openzipkin/zipkin
访问http://localhost:9600/hello?name=123后zipkin没有链路数据?????
待解决??
参考:https://www.fangzhipeng.com/springcloud/2019/02/05/sc-sleuth-g.html
https://www.hangge.com/blog/cache/detail_2810.html