Zipkin链路监控实践

发布时间 2023-07-18 17:44:34作者: 天晴修屋顶

Zipkin是一种开源的分布式链路追踪系统,可以用于监控和跟踪微服务架构中的请求调用链。它可以帮助定位和解决分布式系统中的延迟问题,提供对请求的可视化跟踪和监控。

一、引入依赖

       使用项目来启动Zipkin,创建一个springboot web项目添加zipkin依赖

 1     <groupId>com.mike.study</groupId>
 2   <artifactId>zipkin</artifactId>
 3   <version>0.0.1-SNAPSHOT</version>
 4   <name>zipkin</name>
 5   <description>Demo project for zipkin</description>
 6   <dependencies>
 7     <dependency>
 8       <groupId>org.springframework.boot</groupId>
 9       <artifactId>spring-boot-starter-web</artifactId>
10     </dependency>
11 
12     <!--引入的zipkinServer依赖-->
13     <dependency>
14       <groupId>io.zipkin.java</groupId>
15       <artifactId>zipkin-server</artifactId>
16       <version>${zipkin.version}</version>
17     </dependency>
18     <dependency>
19       <groupId>io.zipkin.java</groupId>
20       <artifactId>zipkin-autoconfigure-ui</artifactId>
21       <version>${zipkin.version}</version>
22     </dependency>
23   </dependencies>

配置application.yml

1 management:
2   metrics:
3     web:
4       server:
5         auto-time-requests: false
6 server:
7   port: 9411

二、启动zipkin

在监控项目中使用@EnableZipkinServer注解启动zipkin

 1 import org.springframework.boot.SpringApplication;
 2 import org.springframework.boot.autoconfigure.SpringBootApplication;
 3 import zipkin.server.internal.EnableZipkinServer;
 4 
 5 @SpringBootApplication
 6 @EnableZipkinServer
 7 public class ZipkinApplication {
 8 
 9   public static void main(String[] args) {
10     SpringApplication.run(ZipkinApplication.class, args);
11   }
12 
13 }

至此,zipkin监控项目也就搭建好了,只需要把需要监控的项目注册上来,即可跟踪链路了。

三、测试

创建3个微服务项目,分别是consumer,gateway,provider。consumer 通过gateway请求provider的服务。

3.1provider server

首先是provider,提供api查询用户信息

 要把provider注册到zipkin,需要添加依赖

1     <dependency>
2       <groupId>org.springframework.cloud</groupId>
3       <artifactId>spring-cloud-starter-zipkin</artifactId>
4     </dependency>

再配置application.yml,告诉provider注册到那个zipkin

1 spring:
2   zipkin:
3     base-url: http://localhost:9411 # zipkin服务地址
4     sleuth:
5       sampler:
6         probability: 1 # 抽样百分比(0~1)
7     sender:
8       type: web # 链路类型(kafka,rabbitmq)

如法炮制,将gateway, consumer同样注册到zipkin,然后分别启动provider,gateway和consumer,然后请求consumer的controller。

访问http://localhost:7000/warp/user/2.1/5?token=13

 再访问链路服务http://localhost:9411/zipkin/

 

 

 

通过链路分析,可以清晰看到每个服务的耗时,以及项目之间的依赖关系