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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,726评论 0 3
  • 在各大厂分布式链路跟踪系统架构对比中已经介绍了几大框架的对比,如果想用免费的可以用zipkin和pinpoint还...
    欢醉阅读 1,910评论 2 2
  • 1. 什么是调用链 一个业务功能可能需要多个服务协作才能实现,一个请求到达服务A,服务A需要依赖服务B,服务B又依...
    匆匆岁月阅读 1,158评论 0 7
  • 这是一部变迁仪式型的电影。 开始画面里,一位年轻的母亲乔安娜 正在哄儿子比利睡觉,从她隐忍的表情中能猜出...
    快乐平行线阅读 941评论 0 2
  • 毛香莲 深圳市幸福缘文化礼品有限公司总经理,湖南人,定居深圳,从事礼品行业十余年,服务客户有中国移动、王老吉、都市...
    程程百合阅读 183评论 0 0