知识养成了思想,思想同时又在融化知识。这篇文章主要讲述微服务架构 | 10.3 使用 Zipkin 可视化日志追踪 #yyds干货盘点#相关的知识,希望能为你提供帮助。
【微服务架构 | 10.3 使用 Zipkin 可视化日志追踪 #yyds干货盘点#】@[TOC](10.3 使用 Zipkin 可视化日志追踪)
前言参考资料:
《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 服务器2.2 启动 Zipkin Server
- 使用命令启动 Zipkin Server:
java -jar zipkin-server-2.12.9-exec.jar
;
文章图片
- 默认端口为:9411;
- 访问 Zipkin Server 的管理后台:http://localhost:9411;
docker run -d -p 9411:9411 openzipkin/zipkin
;
<
!-- 用于创建 Zipkin 服务器所需的核心类 -->
<
dependency>
<
groupId>
io.zipkin.java<
/groupId>
<
artifactId>
zipkin-server<
/artifactId>
<
/dependency>
<
!-- 用于运行 Zipkin 服务器的 UI 部分所需的核心类 -->
<
dependency>
<
groupId>
io.zipkin.java<
/groupId>
<
artifactId>
zipkin-autoconfigure-ui<
/artifactId>
<
/dependency>
3.2 在主程序类上添加注解
- @EnableZipkinServer:创建相对简单。缺点是 Zipkin 服务器不可用时数据会丢失;
- 注意:该注解不是 Spring Cloud 提供的,是 Zipkin 提供的;
- @EnableZipkinStreamServer:需要创建和配置正在跟踪的服务以发布消息到 RabbitMQ 或 Kafka。优点是即使 Zipkin 服务器不可用,也可以继续收集跟踪数据,直到 Zipkin 服务器可用于处理消息记录;
- 该注解是 Spring Cloud 提供的;
- Zipkin 支持四种不同的后端数据存储,如下:
- 内存数据;
- mysql;
- Cassandra;
- Elasticsearch;
- 默认情况下 Zipkin 使用内存数据来存储跟踪数据,可以进行配置到其他存储方式;
<
!-- 包含在服务中启用 sleuth 的基本库 -->
<
dependency>
<
groupId>
org.springframework.cloud<
/groupId>
<
artifactId>
spring-cloud-starter-sleuth<
/artifactId>
<
/dependency>
<
!-- 【可选】当开发人员需要以编程方式与 sleuth 交互时添加 -->
<
dependency>
<
groupId>
org.springframework.cloud<
/groupId>
<
artifactId>
spring-cloud-sleuth-core<
/artifactId>
<
/dependency>
<
!-- 与 Zipkin 集成 -->
<
dependency>
<
groupId>
org.springframework.cloud<
/groupId>
<
artifactId>
spring-cloud-sleuth-zipkin<
/artifactId>
<
/dependency>
4.2 修改 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 界面可以查询一些基本的信息:
文章图片
文章图片
- 点击事务后可以查看更详细的信息:
文章图片
文章图片
- 点击组织服务跨度,可以查看调用中的额外细节:
文章图片
- 点击依赖,可以查看依赖关系:
文章图片
最后::: hljs-center
新人制作,如有错误,欢迎指出,感激不尽!
:::
::: hljs-center
欢迎关注公众号,会分享一些更日常的东西!
:::
::: hljs-center
如需转载,请标注出处!
:::
::: hljs-center
文章图片
:::
推荐阅读
- 简单的JS鸿蒙小游戏——记忆翻牌之游戏逻辑详解
- #yyds干货盘点# springboot整合Actuator监控
- #yyds干货盘点#SpringBoot + MyBatis + MySQL 实现读写分离!
- C++学习之旅第二站(类和对象进阶)
- 微服务架构 | 10.2 使用 Papertrail 实现日志聚合
- Python 汽车之家 全系车型参数(包含历史停售车型) 最全
- 盘点下近几年退役的顶级 Apache 大数据项目 - 继 Sentry,Sqoop 之后,Ambari 正式退役
- 3结构型模式(设计模式)
- MQTT 服务器安全性测试