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的人,无法判断是自己的代码问题,还是版本兼容的问题,还是要多查多看
10 -
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对象的注入代码
00