Zipkin无法记录Gateway的调用链记录

来源:13-5 为所有微服务整合Zipkin

Giiber

2024-10-16

大目老师,我按照课程操作整合Zipkin,发现内容中心和用户中心的日志调用链可以正常发送到zipkin,但是gateway的调用链记录在zipkin中查询不到,我用的spring boot版本是 2.6.13,spring cloud版本是2021.0.8,spring cloud alibaba版本是2021.0.5.0,引用的spring-cloud-starter-zipkin依赖包是2.2.8.RELEASE,同样的配置,在内容中心和用户中心都是可以记录到的,我查看了 yml的设置也已经设置好了

写回答

2回答

Giiber

提问者

2024-10-17

大目老师,我用docker运行了lastest版本的  zipkin server后,就可以正常看到调用链了,不知道是不是zipkin-server-2.12.9版本不支持 webclient请求,只能支持 RestTemplate,所以在reactive应用上上 webclient请求时,就不行了, 我换成  lastest版本之后,就可以看到所有的调用链记录了

也提醒一下如果是使用新版本学习的同学,我看到课程是2019年的,很多知识在新版本都是没问题的,个别问题确实会比较坑,特别是像我这种刚接触spring的人,无法判断是自己的代码问题,还是版本兼容的问题,还是要多查多看

https://img1.sycdn.imooc.com/szimg/6710b81309e41d7322390681.jpg


1
0

Giiber

提问者

2024-10-17

大目老师,关于zipkin无法收集到 sleuth日志的问题,我跟到了这个配置类ZipkinHttpSenderConfiguration,这个类里面配置了请求的对象 ,您在课堂上用到的版本,注入的发送post请求的客户端为 RestTemplateSender,而2.2.8.release版本注入的发送请求的用的Sender对象为 webClientSender.  用了onconditional注解,判断的依据是

(type = reactive)

若是 reactive,则注入的就是webClientSender,此时通过webClientSender发送post请求到 就报404错误

而内容中中心和用户中心,注入的发送请求用的对象是RestTemplateSender,此时发送post请求到zipkin就是成功的。

根据我的理解,引用 spring-cloud-starter-gateway的  gateway应用

(type = reactive)

此条件是真的,而内容中心和用户中心 这个条件是不成立,所以他们初始化出来的对象不一样,还请老师指点一下,如何解决这个问题,是否这就是因为版本不兼容?

还请大目老师指导一下


截图为两个版本对于 sender对象的注入代码

https://img1.sycdn.imooc.com/szimg/671084da0984bae522541414.jpg

https://img1.sycdn.imooc.com/szimg/671084da0901169122241393.jpg


0
0

Spring Cloud Alibaba微服务从入门到进阶

面向未来微服务:熟练掌握Spring Cloud Alibaba

3085 学习 · 1324 问题

查看课程