ELK+Kafka 和 Sleuth和Zipkin 链路追踪依赖冲突
最近在写项目中遇到了,记录下
SpringCloud链路追踪依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!--链路追踪 zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<!--分布式配置中心:健康检查和统计监控工具-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
因为需要用ELK+kafka做日志收集时,需要kafka的依赖
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
处理流程: 应用程序发布日志到kafka,Logstash订阅并实时获取消息并将日志转换JSON格式数据输入到Logstash中,Logstash会再将日志以JSON格式输出到Elasticsearch服务器中存放,Kibana会以图形化方式展示Elasticsearch中的日志信息
向Kafka发送消息工具类
在send的时候会产生异常 Magic v1 does not support record headers
会和上面的依赖冲突需要禁止sleuth的kafka-clients依赖传递
解决方案
修改依赖
<!--链路追踪 sleuth依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
<exclusions>
<exclusion>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave-instrumentation-kafka-clients</artifactId>
</exclusion>
</exclusions>
</dependency>
在启动类加入以下,否则启动报错
至此ELK+kafka 和 sleuth链路追踪 会双向兼容,问题得以解决
第一次发文章,可能描述不太清楚,望见谅
Date:2021/6/30
Author: 南风