由于工作需要使用到微服务链路追踪,于是到网上找资料,然而发现大部分使用zipkin做链路追踪使用的是Spring Cloud D版本系列,而zipkin在Spring Cloud E版本后开始做了很大的改动,本篇博客不阐述链路追踪概念,直接上配置。
环境
- jdk 1.8
- springboot 1.5.13.RELEASE
- springcloud Edgware.SR3
- kafka_2.11-2.1.1
- zookeeper-3.4.12
前置启动
- 启动zookeeper 在zookeeper bin目录下进入cmd
zkServer
- 启动kafka 在kafka windows目录进入cmd
kafka-server-start ../../config/server/properties
创建zipkinServer服务
1. 引入依赖
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-collector-kafka</artifactId>
<version>2.6.1</version>
</dependency>
2. 配置文件
server:
port: 9411
spring:
sleuth:
enabled: false
sampler:
percentage: 1.0
zipkin:
storage:
type: mem #可以使用mysql es 等数据库
collector:
kafka:
zookeeper: localhost:2181
bootstrap-servers: localhost:9092
3.启动服务配置
@SpringBootApplication
//@EnableZipkinStreamServer//配置可以作为zipkinserver、
@EnableZipkinServer //此配置为E版本配置,既可以接受https传输,也可以是消息中间件传输
public class ZipkinServerApplication {
public static void main(String[] args) {
SpringApplication.run(ZipkinServerApplication.class,args);
}
}
创建zipkinclient-01、zipkinclient-02服务。zipkinclient-02与创建zipkinclient-01服务配置一致,修改端口即可
1. 引入依赖
<!-- E及之后版本 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
2.配置文件
server:
port: 8081
spring:
# zipkin:
# base-url: http://127.0.0.1:9411 #默认http通信的配置方式
zipkin:
sender:
type: kafka # 支持三种 方式 RABBIT, KAFKA, WEB
service:
name: ZipkinClient_8081_App #可以和 application.name 同名 但是必须设置
sleuth:
sampler:
percentage: 1.0
kafka:
bootstrap-servers: localhost:9092
3.启动服务配置
@SpringBootApplication
@RestController
public class ZipkinClient_8081_App {
public static void main(String[] args) {
SpringApplication.run(ZipkinClient_8081_App.class,args);
}
@RequestMapping("/hi")
@ResponseBody
public String getMsg() {
return "123 this is client 8081";
}
演示
1. 启动zipkinServer,访问localhost:9411
2.依次启动zipkincilent-01、zipkinclient-02, 访问localhost:8081/hi, localhost:8082/router
3. 刷新9411地址界面
即可看到追踪信息,点击列表span可到到详细调用信息
源码地址 :
zipklin源码分析可参考:
墨竹大神 http://blog.mozhu.org/2017/11/16/zipkin/zipkin-8.html
D版本搭建 https://blog.csdn.net/u012394095/article/details/82493628