1. 介绍
在分布式为服务系统中的相互调用,SOFATracer+zipkin可以将链路调用数据记录并展示出来,这些链路数据可用于故障的快速发现,服务治理等。
SOFATracer用来记录数据保存在log文件中,zipkin用来展示并可查询数据。
2. SpringBoot项目集成SOFATracer
2.1 引入SOFABoot
首先在pom文件中删除spring boot的parent,将parent改成sofaboot,这个SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等能力。在sofaBoot里面的parent还是引了springboot。
将
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${spring.boot.version}</version>
<relativePath/>
</parent>
替换为:
<parent>
<groupId>com.alipay.sofa</groupId>
<artifactId>sofaboot-dependencies</artifactId>
<version>${sofa.boot.version}</version>
</parent>
这样子可能会造成SpringBoot的大版本变化,如果项目引的依赖比较多,那么SpringBoot大版本变化以后产生冲突的可能性还是挺高的,所以在引入SOFABoot 的时候最好选择SOFABoot 中的parent引用的SpringBoot版本与项目本来引用的SpringBoot版本相近的。
如果还是避免不了冲突的话,那么只能一个个找到冲突,解决冲突,一般切换到合适的版本即可。
2.2 添加SOFATracer 依赖
其次,添加一个 SOFATracer 依赖:
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>tracer-sofa-boot-starter</artifactId>
<!-- SOFABoot 版本统一管控 -->
</dependency>
2.3 修改配置文件
在SpringBoot的配置文件中指定appname和log文件夹的路径
spring:
application:
name: ahhx-jcpt
logging:
path=: ./tracerlogs
这样SOFATracer收集的数据就会以log的形式保存在tracerlogs文件夹下
2.4 查看效果
启动项目,访问项目的任意路径,查看项目结构
点击查看log文件可以看到详细的内容
3. 配置Zipkin展示
3.1 安装
下载文件:
curl -sSL https://zipkin.io/quickstart.sh | bash -s
运行文件:
java -jar zipkin.jar
注意,这时运行的程序是运行在前台的,如果关闭了前台命令行,程序就会退出了。
后台启动jar包,并输出日志到某个目录
nohup java -jar zipkin.jar >logs/zipkin.log &
3.2 修改配置文件
com:
alipay:
sofa:
tracer:
zipkin:
enabled: true
baseUrl: http://ip:9411
3.3 查看效果
登陆:ip:9411
4. 远程调用埋点
可以支持RestTemplate、HttpClient。以RestTemplate为例。
4.1 添加依赖
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>sofa-tracer-resttmplate-plugin</artifactId>
</dependency>
4.2 修改代码
不再通过new RestTemplate()来创建RestTemplate实例了,而是用SOFATracer提供的SofaTracerRestTemplateBuilder.buildRestTemplate()来获取RestTemplate实例,其他代码不变。
4.3 启动项目并查看
启动SpringBoot项目,调用上述接口,查看log文件夹
可以看到有RestTemplate相关的log文件生成。
更多内容可参阅SOFATracer官方文档
https://www.sofastack.tech/sofa-tracer/docs/Home