14. SpringCloud之Sleuth+Zipkin链路追
2022-04-17 本文已影响0人
天还下着毛毛雨
image.png
1、链路追踪简介
其实链路追踪就是日志追踪,微服务下日志跟踪,微服务系统之间的调用变得非常复杂,往往一个功能的调用要涉及到多台微服务主机的调用,那么日志追踪也就要在多台主机之间进行,人为的去每台主机查看日志这种工作几乎是不能完成的工作,所以需要有专门的日志监控工具,这里讲的就是sleuth + zipkin 工具。
sleuth组件会记录下一条完整的链路 :通过Trace Id唯一标识,Span标识发起的请求信息,各span通过parent id关联起来。
然后把链路信息 输出到 zipkin应用上,就可以 在zipkin应用上 看到可视化的 链路信息。
2、 zipkin服务端搭建
zipkin服务端的搭建方式分为两种,一种是 直接用官方提供的jar启动项目, 一种是自己建一个zipkin-server项目。
2.1、第一种方式 - 官方下载jar包
wget 'https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec'
然后启动 java -jar 下载下来的jar包, 默认端口为9411。
浏览器输入以下地址,打开界面。
http://localhost:9411/
image.png
2.2、第二种方式 : 自己创建 zipkin-server工程
1、新建一个Springboot子工程,
2、引入pom依赖
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
<version>2.10.4</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
<version>2.10.4</version>
<scope>runtime</scope>
</dependency>
3、启动类
加上@EnableZipkinServer注解
@SpringBootApplication
@EnableZipkinServer
public class ZipkinServerApplication {
public static void main(String[] args) {
SpringApplication.run(ZipkinServerApplication.class, args);
}
}
4、启动项目,浏览器输入以下链接,打开界面
http://localhost:9411/
image.png
3、zipkin客户端改造
在原有的服务下,进行以下改造,让其成为zipkin客户端,记录链路信息,输出到zipkin服务端。
3.1、新增pom依赖
引入 sleuth和zipkin启动器
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
3.2、配置文件
#收集日志的百分比发送给zipkin,默认是0.1
spring.sleuth.sampler.probability=1.0
#若在同一个注册中心的话可以启用自动发现,省略 base-url
#spring.zipkin.locator.discovery.enabled=true
# 输入刚才启动的 zipkin服务端的端口
spring.zipkin.base-url=http://localhost:9082/
# RABBIT,KAFKA,WEB; web就是用http的方式 传输链路信息 到 zipkin服务端
spring.zipkin.sender.type=web
3.3、日志变化
项目启动后,可以看到 日志的格式已经发生变化
image.png4、测试
假设 我们的微服务项目中,有 zuul网关,micro-user用户服务,micro-order订单服务
我们用 zuul官网路由到 micro-user的 /user/orderList,
micro-user的 /user/orderList 里发起对 micro-order服务的 /order/list接口的远程调用
接口调用 成功后,zipkin服务端界面已经 采集到了 调用信息。
image.png image.png image.png