微服务架构 | 10.3 使用 Zipkin 可视化日志追踪
目录
新人制作,如有错误,欢迎指出,感激不尽!
欢迎关注公众号,会分享一些更日常的东西!
如需转载,请标注出处!
 
    
						  
					  
						
							
						
						
						
						
						
					- 前言
 - 1. Zipkin 基础知识
- 1.1 Zipkin 链路监控的原理
 
 - 2.  下载 Zipkin 服务器
- 2.1 下载 zipkin-server-2.12.9-exec.jar 包
 - 2.2 启动 Zipkin Server
 - 2.3 *Docker 部署方式
 
 - 3. 手动安装和配置 Zipkin 服务器
- 3.1 引入 pom.xml 依赖文件
 - 3.2 在主程序类上添加注解
 - 3.3 配置跟踪数据存储方式
 
 - 4. 使用 Zipkin 进行分布式跟踪
- 4.1 添加 pom.xml 依赖文件
 - 4.2 修改 application.yml 配置文件
 - 4.3 访问 9411 端口查看可视化日志
 
 - 最后
 
前言
参考资料:
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服务原理与实战》
《B站 尚硅谷 SpringCloud 框架开发教程 周阳》
Zipkin 允许开发人员以图形方式查看事务占用的时间量,并分解在调用中涉及的每个微服务所用的时间。在微服务架构中,Zipkin 是识别性能问题的宝贵工具;
1. Zipkin 基础知识
1.1 Zipkin 链路监控的原理

- 上图表示一请求链路,一条链路通过 
Trace Id唯一标识,Span 标识发起的请求信息,各 Span 通过Parent id关联起来; - Span 表示调用链路来源,通俗的理解 Span 就是一次请求信息;
 - 简略理解图如下:
 


2. 下载 Zipkin 服务器
Spring Cloud 从 F 版起不需要自己构建 Zipkin Server 了,只需调用 jar 包即可;
2.1 下载 zipkin-server-2.12.9-exec.jar 包
- 访问官网下载 Zipkin 的 Web UI:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/
 
2.2 启动 Zipkin Server
- 使用命令启动 Zipkin Server:
java -jar zipkin-server-2.12.9-exec.jar; 

- 默认端口为:9411;
 - 访问 Zipkin Server 的管理后台:http://localhost:9411;
 
2.3 *Docker 部署方式
也可以使用 Docker 部署省去下载的麻烦;
docker run -d -p 9411:9411 openzipkin/zipkin;
3. 手动安装和配置 Zipkin 服务器
虽然 Spring Cloud 从 F 版起不需要自己构建 Zipkin Server,但这里还是提供手动构建的方法;
3.1 引入 pom.xml 依赖文件
  io.zipkin.java 
  zipkin-server 
 
    io.zipkin.java 
    zipkin-autoconfigure-ui 
 
3.2 在主程序类上添加注解
- @EnableZipkinServer:创建相对简单。缺点是 Zipkin 服务器不可用时数据会丢失;
- 注意:该注解不是 Spring Cloud 提供的,是 Zipkin 提供的;
 
 - @EnableZipkinStreamServer:需要创建和配置正在跟踪的服务以发布消息到 RabbitMQ 或 Kafka。优点是即使 Zipkin 服务器不可用,也可以继续收集跟踪数据,直到 Zipkin 服务器可用于处理消息记录;
- 该注解是 Spring Cloud 提供的;
 
 
3.3 配置跟踪数据存储方式
- Zipkin 支持四种不同的后端数据存储,如下:
- 内存数据;
 - MySQL;
 - Cassandra;
 - Elasticsearch;
 
 - 默认情况下 Zipkin 使用内存数据来存储跟踪数据,可以进行配置到其他存储方式;
 
4. 使用 Zipkin 进行分布式跟踪
4.1 添加 pom.xml 依赖文件
需要给 Zuul 网关服务、消费者服务、提供者服务等所有服务添加依赖;
    org.springframework.cloud 
    spring-cloud-starter-sleuth 
 
    org.springframework.cloud 
    spring-cloud-sleuth-core 
 
  org.springframework.cloud 
  spring-cloud-sleuth-zipkin 
 
4.2 修改 application.yml 配置文件
在每个想与 Zipkin 进行通信的服务的 application.yml 配置文件中进行修改;
spring:
  zipkin:
    baseUrl: http://localhost:9411  #Zipkin 服务器的地址
  sleuth:
    sampler:
      percentage: 1 #设置跟踪级别,也即定义每个服务应该向 Zipkin 写入数据的频率,默认 10%
spring.sleuth.sampler.percentage = 0表示不发送任何事物数据;- 上述 
spring.sleuth.sampler.percentage = 1属性也可用下面的代码替代。表示为所有服务发送跟踪信息; 
@Bean
public Sampler defaultSampler() {
    return new AlwaysSampler();
}
4.3 访问 9411 端口查看可视化日志
- 先调用服务 API;
 - 再进入:http://localhost:9411;
 - 即可查看 Zipkin 的日志捕获跟踪结果;
 - Zipkin 界面可以查询一些基本的信息:
 


- 点击事务后可以查看更详细的信息:
 


- 点击组织服务跨度,可以查看调用中的额外细节:
 

- 点击依赖,可以查看依赖关系:
 

最后
