Spring Cloud Sleuth与Zipkin整合时遇到的问题记录
2017-08-28 20:23
1866 查看
在《spring cloud 微服务实战》第402页-----将spring cloud sleuth的跟踪信息通过消息中间件收集发送到zipkin这一部分,在之前你已经按照第一种方式(http方式)将跟踪信息收集到了zipkin上,现在又跟着书上用消息中间件来收集。紧接着书上说只要对之前的trace-1和trace-2以及zipkin-server这三个项目做一些改造就可以实现,书上分两步来完成改造。你按照书上的进行改造发现有可能运行不成功。
首先第一步:修改客户端trace-1和trace-2,书上说除了引入spring-cloud-starter-sleuth依赖外,还要引入一下两个
但是你启动项目时会报如下错,根本启动不成功:
Parameter 0 of method sleuthStreamSpanReporter in org.springframework.cloud.sleuth.stream.SleuthStreamAutoConfiguration required a bean of type 'org.springframework.cloud.sleuth.stream.HostLocator' that could not
be found.
- Bean method 'zipkinEndpointLocator' not loaded because @ConditionalOnProperty (spring.zipkin.locator.discovery.enabled=true) did not find property 'spring.zipkin.locator.discovery.enabled'
Action:
Consider revisiting the conditions above or defining a bean of type 'org.springframework.cloud.sleuth.stream.HostLocator' in your configuration.
原因是你如果直接在前面创建的trace-1和trace-2上修改,仅仅添加上面那两个依赖是不够的,你还要将之前用http方式实现收集的依赖去掉,否则会冲突,项目起不来
把这个注掉以后项目能运行了(trace-1和trace-2都要注掉),一切都看似正常;但是当你不断的发送http:/localhost:9101/trace-1调试的时候,你明明看到rabbitmq消息队列里面已经有消息进入了,但是打开zipkin的ui界面却什么信息都没有。这不正常啊,后来到作者的git仓库看随书代码示例,才发现zipkin-server的改造除了要加书上提的依赖以外,还要将主类上的注解修改为如下:
刚开始用http方式收集用的是@EnableZipkinServer注解,后来用消息代理收集,就要改成@EnableZipkinStreamServer注解,为什么书上改造的时候不说要改这个,害得我纳闷半天,就是没有反应;书上内容真不严谨,太坑了。另外zipkin-server这边的application.properties中也要加入rabbitmq的配置信息(书上没说),修改完后,再发送请求,打开zipkin的UI界面,如愿看到了跟踪信息
最后一个问题是在将服务跟踪信息持久化到mysql时,我按照书上第416页采用在application.properties添加mysql的配置信息这种方式来初始化表信息的方式,启动项目的时候一直报com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'zipkin',后来才明白不管你是采用手动建表还是这种配置的方式自动初始化表,都要先手动创建数据库zipkin,要不然就会一直报那个错,我以为它会还会帮你初始化数据库,看来理解错了
首先第一步:修改客户端trace-1和trace-2,书上说除了引入spring-cloud-starter-sleuth依赖外,还要引入一下两个
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sleuth-stream</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-stream-rabbit</artifactId> </dependency>
但是你启动项目时会报如下错,根本启动不成功:
Parameter 0 of method sleuthStreamSpanReporter in org.springframework.cloud.sleuth.stream.SleuthStreamAutoConfiguration required a bean of type 'org.springframework.cloud.sleuth.stream.HostLocator' that could not
be found.
- Bean method 'zipkinEndpointLocator' not loaded because @ConditionalOnProperty (spring.zipkin.locator.discovery.enabled=true) did not find property 'spring.zipkin.locator.discovery.enabled'
Action:
Consider revisiting the conditions above or defining a bean of type 'org.springframework.cloud.sleuth.stream.HostLocator' in your configuration.
原因是你如果直接在前面创建的trace-1和trace-2上修改,仅仅添加上面那两个依赖是不够的,你还要将之前用http方式实现收集的依赖去掉,否则会冲突,项目起不来
<!--<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sleuth-zipkin</artifactId> </dependency>-->
把这个注掉以后项目能运行了(trace-1和trace-2都要注掉),一切都看似正常;但是当你不断的发送http:/localhost:9101/trace-1调试的时候,你明明看到rabbitmq消息队列里面已经有消息进入了,但是打开zipkin的ui界面却什么信息都没有。这不正常啊,后来到作者的git仓库看随书代码示例,才发现zipkin-server的改造除了要加书上提的依赖以外,还要将主类上的注解修改为如下:
@EnableZipkinStreamServer @SpringBootApplication public class ZipkinServerApplication { public static void main(String[] args) { SpringApplication.run(ZipkinServerApplication.class, args); } }
刚开始用http方式收集用的是@EnableZipkinServer注解,后来用消息代理收集,就要改成@EnableZipkinStreamServer注解,为什么书上改造的时候不说要改这个,害得我纳闷半天,就是没有反应;书上内容真不严谨,太坑了。另外zipkin-server这边的application.properties中也要加入rabbitmq的配置信息(书上没说),修改完后,再发送请求,打开zipkin的UI界面,如愿看到了跟踪信息
最后一个问题是在将服务跟踪信息持久化到mysql时,我按照书上第416页采用在application.properties添加mysql的配置信息这种方式来初始化表信息的方式,启动项目的时候一直报com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'zipkin',后来才明白不管你是采用手动建表还是这种配置的方式自动初始化表,都要先手动创建数据库zipkin,要不然就会一直报那个错,我以为它会还会帮你初始化数据库,看来理解错了
相关文章推荐
- SpringCloud sleuth一直为false,zipkin没有记录显示
- Spring 5.0+Spring Boot+security+spring cloud oauth2+Redis整合详情,记录那些遇到的一些坑
- 疯狂Spring Cloud连载(30)Sleuth整合Zipkin
- Spring Cloud Edgware新特性之九:Sleuth使用MQ方式整合Zipkin
- spring 3与jbpm4.3在整合所遇到的问题,记录
- 疯狂Spring Cloud连载(30)Sleuth整合Zipkin
- flex 整合spring,hibernate遇到的一些问题
- SpringCloud学习之sleuth&zipkin
- spring整合ibatis中遇到的问题
- 记录:遇到的问题Spring跳转也页面报错404
- spring整合mybatis遇到的问题
- Spring 整合mybatis时遇到的问题
- hibernate整合spring开发的时候遇到的一些小问题
- springboot中整合activiti流程设计器时遇到访问项目需要输入tomcat用户名和密码的问题
- springcloud(十二):使用Spring Cloud Sleuth和Zipkin进行分布式链路跟踪
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十二):链路追踪(Sleuth、Zipkin)
- 整合Spring和Struts时遇到的问题解决办法
- spring2.5整合ibatis2.3事务管理时遇到的问题以及需要的jar包
- (10)Spring和Hibernate整合过程中遇到的问题
- Spring整合Quartz遇到内存泄露问题