前言
本篇文章只是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按钮,可以查看请求列表数据,如果看到数据就算大功告成了!
依赖页面:
五、总结
集成过程中,坑比较多,网上的博客也参差不齐,最好多阅读官网文档,注意版本的兼容和不同版本的集成方式。