专栏首页CodeSheep的技术分享利用Zipkin追踪Mysql数据库调用链

利用Zipkin追踪Mysql数据库调用链

在前面:微服务调用链追踪中心搭建 一文中我们利用Zipkin搭建了一个微服务调用链的追踪中心,并且模拟了微服务调用的实验场景。利用Zipkin的库Brave,我们可以收集一个客户端请求从发出到被响应 经历了哪些组件、哪些微服务、请求总时长、每个组件所花时长 等信息。本文将讲述如何利用Zipkin对Mysql数据库的调用进行追踪,这里同样借助OpenZipkin库Brave来完成。


概述

在前面:微服务调用链追踪中心搭建 一文中我们利用Zipkin搭建了一个微服务调用链的追踪中心,并且模拟了微服务调用的实验场景。利用Zipkin的库Brave,我们可以收集一个客户端请求从发出到被响应 经历了哪些组件哪些微服务请求总时长每个组件所花时长 等信息。

本文将讲述如何利用Zipkin对Mysql数据库的调用进行追踪,这里同样借助OpenZipkin库Brave来完成。


扩展ZipkinTool组件

ZipkinTool是在《微服务调用链追踪中心搭建》一文中编写的与Zipkin通信的工具组件,利用其追踪微服务调用链的,现在我们想追踪Mysql数据库调用链的话,可以扩展一下其功能。

  • pom.xml添加依赖:
  • 在ZipkinConfiguration类中添加MySQLStatementInterceptorManagementBean

添加Mysql数据库访问的微服务

依然继承前文:《微服务调用链追踪中心搭建》,我们改造一下文中的ServiceC这个微服务,在其中添加与Mysql数据库的交互。

  • pom.xml中添加JDBC和Mysql依赖
  • application.properties中添加Mysql连接的配置
  • Controller中添加JdbcTemplate访问数据库的代码

启动Mysql数据库服务

1. 启动Mysql容器

2. 再启动一个Mysql容器,接入其中做一些设置

  • 首先进入mysql命令行
  • 接下来创建数据库zipkin: 用于存放Zipkin所收集的数据

这里创建了三个数据表。

该Sql文件可以从以下链接获得:https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql/src/main/resources/mysql.sql

Sql脚本执行完成后,可以看到zipkin相关的三个表已经建成:

  • 创建数据库test:用作测试数据库

这里插入了一条数据用于实验。


启动zipkin服务


启动Mysql数据库访问的微服务(即ServiceC)

在浏览器中输入:localhost:8883/mysqltest,如果看到以下输出,就可以证明数据库调用操作已经成功了!


Zipkin追踪数据库调用实际实验

打开Zipkin Web UI,点击服务名下拉列表能看见已经成功识别了Mysql数据库调用服务

  • 选中mysqlservice后,点击Find Traces

可以看到 首次查询 Mysql的调用链追踪信息,有很多

随便点开某一个查看:

  • 接下来浏览器中再次输入:localhost:8883/mysqltest

目的是再次触发Mysql的调用,然后再次Find Traces,可以看到追踪数据类似下图:包含两次Mysql的query动作:

点开第一个query查看,其实际上是在 尝试连接Mysql数据库

点开第二个query查看,发现这里才是 实际查询业务

从图形化界面上可以清楚地知道每个阶段的详细步骤与耗时,因此可以用来分析哪个SQL语句执行相对较慢。


后记

本文实验所用源码已经开源,需要的话请 自取

作者一些其他容器化、微服务化方面的文章:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微服务调用链追踪中心搭建

    CodeSheep
  • RPC框架实践之:Apache_Thrift

    CodeSheep
  • 利用K8S技术栈打造个人私有云(连载之:初章)

    最近在学习Docker技术,相信Docker技术大家都有所了解,Docker类似于虚拟机(但与虚拟机又有本质不同),提供进程级别的隔离。我们可以利用Docker...

    CodeSheep
  • 从头到尾彻底理解KMP(2014年8月22日版)

    作者:July 时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进。

    bear_fish
  • 【译文连载】 理解Istio服务网格(第六章 可观测性)

    微服务架构管理中最大的挑战之一是如何通过简单方法就能了解系统各个组件之间的关系。终端用户的一次会话可能会流经多个甚至几十个独立部署的微服务,因此,发现哪里有性能...

    SammyLiu
  • 全国博物馆陈列展览公开课上线首日 超6000人同时在腾讯课堂观看

    ? 3月31日,由中国文物交流中心主办、文博圈承办的“全国博物馆陈列展览线上培训班网络公开课”在腾讯课堂正式开启。该系列课程共6节,将于3月31日-4月5日每...

    鹅老师
  • .Net项目中NLog的配置与使用

      因为之前在项目开发中一直都是使用的Log4Net作为项目的日志记录框架,最近忽然感觉对它已经有点腻了,所以尝试着使用了NLog作为新项目的日志记录框架(当然...

    追逐时光
  • [Centos7]安装rrdtool模块

    1.环境:Centos7+Python3.6 rrdtool(round robin database)工具为环状数据库的存储格式,round robin是一种...

    贰叁壹小窝
  • 9寒假专辑:六、指针

    (*p)++ 这个本身的数值为1。由于有个++表示数值会增加,指针不移动,但数值1由于自加了一次变成了2。

    用户6755376
  • 轻松应对Java试题,这是一份大数据分析工程师面试指南

    导语:经过这一段时间与读者的互动与沟通,本文作者发现很多小伙伴会咨询面试相关的问题,特别是即将毕业的小伙伴,所以决定输出一系列面试相关的文章。本文Java篇,介...

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券