基于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 '
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的版本要对应。
更多推荐
所有评论(0)