美文网首页
SOFATracer+zipkin记录多服务系统的链路调用

SOFATracer+zipkin记录多服务系统的链路调用

作者: 虫儿飞ZLEI | 来源:发表于2019-04-16 16:14 被阅读0次

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文件

点击查看log文件可以看到详细的内容


image.png

3. 配置Zipkin展示

官网:https://zipkin.io/

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

相关文章

网友评论

      本文标题:SOFATracer+zipkin记录多服务系统的链路调用

      本文链接:https://www.haomeiwen.com/subject/mpybwqtx.html