SpringCloud(Finchley)整合sleuth、zipkin、kafka、es

本文介绍了如何在SpringCloud Finchley版本下,结合sleuth、zipkin、kafka和es实现微服务链路追踪。详细配置包括zipkin服务器启动、微服务依赖配置、接口测试以及依赖关系图的生成。在完成配置后,通过zipkin界面可以查看微服务间的调用详情和依赖关系。
摘要由CSDN通过智能技术生成

最近需要使用新版本做一套springcloud的链路追踪功能(springcloud+sleuth+zipkin),由于springcloud的Finchley版本发布以及springboot2.x的版本更新,很多配置都与以前大相径庭,搜索相关配置文档比较困难,甚至有些地方连官方文档都没有及时更新,于是决定自己总结一下,以方便后人寻觅。
本文所使用的各软件版本如下:
springcloud:Finchley.SR2
springboot:2.1.0.RELEASE
zipkin:zipkin-server-2.11.8-exec
zookeeper:3.4.13
kafka:2.12-2.0.0
elasticsearch:6.4.3

关于整个系统的数据流转,大致可以用下面这张图来表示:

为了简单方便,本文暂时以两个provider微服务作为示例,首先将两个provider注册至eureka,微服务通过sleuth收集数据,通过kafka传输给zipkin,最后zipkin将数据存储至es里做持久化,并使用es做查询统计。

以下是为新手准备,老司机请绕过

    首先进行服务搭建的准备工作,由于kafka是承前启后的传输层,需要先启动起来,而kafka依赖于zookeeper,可以从http://zookeeper.apache.org/releases.html下载最新版zookeeper,进入其中的conf文件夹,若无需其它配置可以建立一个zoo.cfg文件,内容与zoo_sample.cfg一致即可。之后双击执行bin文件里的zkServer.cmd(linux系统当然用zkServer.sh),启动服务,默认端口为2181。
    
    从http://kafka.apache.org/downloads下载新版kafka(当前为2.12-2.0.0),解压后进入config文件夹,编辑server.properties,修改log.dirs为实际需要的路径,以及zookeeper.connect为实际的地址。新手需要注意的是若本机上装的是jdk而不是jre,还需修改bin\windows里的kafka-run-class.bat(针对windows系统),将里边的set COMMAND后边的参数的%CLASSPATH%加上双引号,之后cmd进入kafka_2.12-2.0.0目录,执行 
    .\bin\windows\kafka-server-start.bat .\config\server.properties
    则启动成功,默认启动地址localhost:9092。
    接下来是es的准备工作,从https://www.elastic.co/cn/downloads/elasticsearch下载新版(当前为6.4.3),之后直接执行bin目录里的elasticsearch.bat即可,默认端口9200。

准备工作完成后,我们开始启动zipkin服务。由于springboot2.x以后,官方已经不建议自行搭建zipkin服务了,就连@EnableZipkinServer这个注解也被打上了@Deprecated,具体可去github上查看。所以这里我们直接在https://github.com/openzipkin/zipkin下载新版jar包(当前版本2.11.8),zipkin启动命令:

       java -DKAFKA_BOOTSTRAP_SERVERS=localhost:9092 -DSTORAGE_TYPE=elasticsearch -DES_HOSTS=localhost:9200 -jar zipkin-server-2.11.8-exec.jar --server.port=9005

顾名思义,KAFKA_BOOTSTRAP_SERVERS是kafka的服务端口,STORAGE_TYPE为存储方案,这里我们选择使用elasticsearch(其余还支持mysql以及cassandra,当然传输层插件还支持rabbitmq,这个可以在git上查看源码里的zipkin-storage包和zipkin-collector包看到),而我这里指定zipkin端口为9005的原因是springboot的自动化配置相当的智能,sleuth默认会把采集数据以http的形式提交到zipkin默认的端口9411,为避免其它误操作影响测试。启动成功后打开http://localhost:9005可以看到zipkin的界面。
在这里插入图片描述
环境准备就绪之后,下面就是我们作为生产数据给kafka的微服务了。下面介绍2个provider的配置,两个微服务都引入以下依赖:

  <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.1.0.RELEASE</version>
      <relativePath/> 
  </parent>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-dependencies</artifactId>
          <version>Finchley.SR2</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
    </dependencies>
  </dependencyManagement>

  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值