zipkin是一种分布式调用追踪系统,通过该工具,我们可以清晰快速的定位问题,zipkin监控基础搭建过程可以参考笔者的另一篇博文https://blog.csdn.net/john1337/article/details/104178559,这篇文章主要集中mysql8.0的监控,之所以写这篇文章,一部分原因是现在搜索到的很多文章都是基于mysql-connector-java 8.x以前的老版本,现在开发使用的mysql java驱动版本一般都是mysql-connector-java 8.x了,其实实现对mysql的追踪很简单,只需两步即可:
1、引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave-instrumentation-mysql8</artifactId>
<version>5.9.3</version>
</dependency>
2、在mysql url配置上加入以下参数
queryInterceptors=brave.mysql8.TracingQueryInterceptor&zipkinServiceName=database
其中zipkinServiceName名字可以任意定义,做到见名知意即可,即知道用的哪个数据库,尤其是多数据源的情况下
效果图:
PS:
1、关系jpa默认事务后有些接口调用可能会报有关事务的问题,之所以会报异常是因为有些JPA接口使用了@Transactional注解,解决方法很简单,直接在最外层方法上添加@Transactional注解即可
参考文章:https://github.com/openzipkin/brave/tree/master/instrumentation/mysql8