微服务集成sleuth+zipkin分布式链路追踪【保姆级教学】

前言

本篇文章只是jar方式集成部署,记录工作中的集成框架的心路历程。

废话不多说,先把官网文档贴出来,很多细节问题,都能在官网文档中找到答案

Spring Cloud Sleuth官方文档:

https://docs.spring.io/spring-cloud-sleuth/docs/2.2.7.RELEASE/reference/html/

Zipkin-server官网地址:

http://zipkin.io

GitHub地址 :

https://github.com/openzipkin/zipkin

一、架构图

1、一目了然架构图:这是我集成的架构图,没有集成kafka或者其他MQ

在这里插入图片描述

二、服务端下载部署

1、服务端到底该怎么构建?

首先,不要再自己引入依赖,构建spring boot服务了。

官网已经明确说明,高版本的zipkin建议也不支持自己构建,所以直接用官网提供的jar就可以了。

翻译一下:

不支持自定义服务器 通过自定义服务器,我们的意思是尝试使用/嵌入 zipkin 作为您打包的应用程序的一部分(例如,将 zipkin-server 依赖项添加到 Spring-boot 应用程序)而不是我们发布的打包应用程序。为了正确使用,请参阅下面的指南。

下载jar的几种方式:

第一种:

**注意:**这种方式只适合自己测试看看,不适合生产。

最简单的方式,linux执行,从官网下载jar直接内存执行:

curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar

第二种:

**注意:**如果要生产,最好用下面方式下载的jar包

下载Zipkin官网的可执行的最新版本的 jar 包,下载地址
https://search.maven.org/remote_content?g=io.zipkin&a=zipkin-server&v=LATEST&c=exec

或者

点击 Quick-start 的 latest released server 这个需要可能科学上网

下载后jar是这样:

在这里插入图片描述

**注意:**服务端使用jar包去官网下载,最好下载指定版本的,如果下载zipkin.jar这种,你从服务器上下载下来,压缩交付以后,执行会报错,因为压缩出了问题。

2、启动服务端的几种方式

第一种:内存启动

在服务器上直接启动

java -jar zipkin-server-2.24.0-exec.jar

或后台启动

nohup java -jar zipkin-server-2.24.0-exec.jar > server.log 2>&1 &

第二种:连接ES启动

前提,ES已经部署好了

# ES_HOSTS的值请配置为真实的es地址(如有多个地址,请用英文逗号分开)
STORAGE_TYPE=elasticsearch ES_HOSTS=http://ip:port nohup java -jar zipkin-server-2.24.0-exec.jar > server.log 2>&1 &

注意:

采用ES启动,需要另外启动一个包zipkin-dependencies-2.6.4.jar,不然依赖页面没有数据

官网下载:

进入https://github.com/openzipkin/zipkin-dependencies,找到Quick-start

点击: latest released job 即可下载

启动:

# ES_HOSTS的值请配置为真实的es地址(如有多个地址,请用英文逗号分开)
STORAGE_TYPE=elasticsearch ES_HOSTS=http://ip:port nohup java -jar zipkin-dependencies-2.6.4.jar > dependencies.log 2>&1 &

**注意:**这个依赖包启动之后,执行一次任务会自动停止,生产需要设置一个定时任务定时启动,这里下期再写一篇文章介绍

第三种:mysql或者其他存储方式,这里不再赘述

三、客户端集成

1、引入依赖

每个spring boot服务都要引入客户端依赖,以便于收集数据,这里不需要指定版本

        <!-- sleuth zipkin依赖 -->
        <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>
            <version>2.2.7.RELEASE</version>
		</dependency>
2、spring boot服务配置:

在配置文件application.yml添加配置:

spring:
  sleuth:
    # 是否开启sleuth功能
    enabled: true
    sampler:
      # 采样率值介于0到1.0之间,1.0表示全部采集,生产环境不建议配置1.0
      probability: 1.0
    scheduled:
      # 如果不希望对@Scheduled方法进行追踪,可以指定 enable: false,默认true
      enable: false
      # 指定不需要追踪的@Scheduled方法的Class全名称,采用正则匹配的格式
      skipPattern: ^cn.com.*.*Schedule$
  zipkin:
    #zipkin server的请求地址,请配置真实部署地址
    base-url: http://127.0.0.1:9411

或者简化配置:

spring:
  sleuth:
    sampler:
      # 采样率值介于0到1.0之间,1.0表示全部采集,生产环境不建议配置1.0
      probability: 1.0
  zipkin:
    #zipkin server的请求地址,请配置真实部署地址
    base-url: http://127.0.0.1:9411

3、配置log4j2.xml

需要在业务日志中打印出traceId的,可以做这个配置,这里只管配置打印就行

原理:是利用了日志框架中的MDC(相当于一个和当前线程绑定的map),spring cloud sleuth生成traceId的时候,会自动放到MDC中

在这里插入图片描述

注意:在配置文件中的Console(控制台打印),info,warn,error几个级别都要配置,博主就忘了在Console中配置了,然后本地起项目,控制台一直看不到打印traceId,把我气的啊,受不鸟!

最后客户端各个服务启动成功以后,访问平台以后就会有数据产生,发送到zipkin服务端

四、zipkin数据页面展示

启动之后访问地址:http://ip:port/zipkin/,(ip为部署服务器ip,端口默认9411),点击RUN QUERY按钮,可以查看请求列表数据,如果看到数据就算大功告成了!

在这里插入图片描述

依赖页面:

在这里插入图片描述

五、总结

集成过程中,坑比较多,网上的博客也参差不齐,最好多阅读官网文档,注意版本的兼容和不同版本的集成方式。

工作中有问题的小伙伴,可关注私信我,一起交流学习!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值