SpringCloud系统设计与开发

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.png

4、测试

假设 我们的微服务项目中,有 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
上一篇下一篇

猜你喜欢

热点阅读