基于zipkin链路追踪中的问题排查(Parameter 2 of method reporter in org.springframework.cloud.sleuth.zipkin2.Zipki)

1.概述

最近在服务中添加链路追踪功能时,遇到了一个了一个kafka报错的问题,经过一番排查,最终确认了问题根源,予以解决。下面将阐述这一问题的排查过程。

2.问题排查

错误信息如下图所示:

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2020-10-20 17:00:52.090 |-ERROR [main] org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter [42] -| 

***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 2 of method reporter in org.springframework.cloud.sleuth.zipkin2.ZipkinAutoConfiguration required a bean of type 'zipkin2.reporter.Sender' that could not be found.
	- Bean method 'kafkaSender' not loaded because @ConditionalOnClass did not find required class 'org.apache.kafka.common.serialization.ByteArraySerializer'
	- Bean method 'rabbitSender' not loaded because ZipkinSender org.springframework.cloud.sleuth.zipkin2.sender.ZipkinRabbitSenderConfiguration kafka sender type
	- Bean method 'restTemplateSender' not loaded because ZipkinSender org.springframework.cloud.sleuth.zipkin2.sender.ZipkinRestTemplateSenderConfiguration kafka sender type
Action:
Consider revisiting the conditions above or defining a bean of type 'zipkin2.reporter.Sender' in your configuration.

从报错信息上来看,是因为在ZipkinAutoConfiguration 配置类启动时,需要配置zipkin2.reporter.Sender的参数,该参数只可传指定的三种类型rest、kafka、rabbitMQ,分别表示采集的链路请求信息以rest形式、kafka形式和rabbitMQ形式向服务器发送。于是便仔细查看了配置文件application.properties,关于zipkin部分的配置如下:

#zipkin配置  
spring.zipkin.sender.type=kafka  	  
# 采样率,模式0.1,也就是10%,为了便于观察效果,改为1.0,也就是100%。生产环境建议保持默认。  
spring.sleuth.sampler.percentage=1  
#使得调度任务切面无效,跳过定时任务的span生成  
spring.sleuth.scheduled.enabled=false  
#跳过consul健康检查的请求捕获  
spring.sleuth.web.skip-pattern=/health  
    
# ====kafka配置====  
spring.kafka.bootstrap-servers=localhost:9092
spring.zipkin.kafka.topic=zipkin.data

很明显已经配置了zipkin的链路消息以kafka形式向外发送,且配置了kafka的地址和主题,说明配置文件应该没问题。那么问题很可能出现在Kafka的版本上,于是赶紧查看了一下pom.xml配置文件,果然有两个kafka版本,便将pom文件中关于链路追踪的配置改成如下:

<dependency>  
	<groupId>org.springframework.cloud</groupId>  
	<artifactId>spring-cloud-starter-zipkin</artifactId>  
</dependency> 
	<!-- kafka -->  
<dependency>  
	<groupId>org.springframework.kafka</groupId>  
	<artifactId>spring-kafka</artifactId>  
</dependency> 

重新启动项目,正常运行。

3.小结

1.配置报错的信息,主要是由于Kafka版本问题,spring-kafka中集成了关于kafka相关的所有pom文件;
2.zipkin的版本与kafka的版本要对应。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值