Spring Boot 中的 Sleuth 详解

Spring Boot 中的 Sleuth 是一个用于分布式追踪的库,它可以帮助你追踪和理解分布式系统中的请求如何跨越多个服务和网络调用。通过使用 Sleuth,你可以收集关于请求路径、延迟、异常等的信息,从而更容易地诊断问题并进行性能优化。

一、下面是关于 Spring Boot 中 Sleuth 的详细解释

1. 基本概念

  • Span:代表一个基本的工作单元,例如一个 HTTP 请求或一个数据库调用。每个 Span 都有一个唯一的 ID 和一个可选的父 Span ID。
  • Trace:一系列相互关联的 Span,通常表示一个完整的请求或操作。每个 Trace 都有一个唯一的 ID。

2. 如何在 Spring Boot 中使用 Sleuth

2.1 添加依赖

在你的 pom.xml 或 build.gradle 文件中添加 Spring Cloud Sleuth 的依赖。

2.2 启用 Sleuth

在 Spring Boot 应用程序中,只需添加依赖即可启用 Sleuth。默认情况下,它会自动为你的应用程序添加跟踪和跨度信息。

2.3 自定义配置

你可以通过 application.properties 或 application.yml 文件来配置 Sleuth,例如设置采样率、日志级别等。

3. 集成其他系统

  • Zipkin:Sleuth 可以与 Zipkin 集成,将跟踪数据发送到 Zipkin 服务器进行存储和查询。Zipkin 提供了一个用户界面,允许你查看和分析跟踪数据。
  • 其他跟踪系统:除了 Zipkin,Sleuth 还可以与其他跟踪系统集成,如 Jaeger。

4. 注意事项

  • 性能开销:由于 Sleuth 需要收集和处理跟踪数据,因此可能会引入一定的性能开销。在生产环境中,你可能需要仔细配置采样率以平衡性能和诊断需求。
  • 安全性:确保跟踪数据的安全性和隐私性。不要记录敏感信息,如密码、令牌等。

5. 诊断和调优

通过查看和分析 Sleuth 收集的跟踪数据,你可以识别和解决分布式系统中的问题,例如延迟、瓶颈、错误等。你还可以使用这些数据来优化你的应用程序和服务。

Sleuth 的核心概念
在使用 Sleuth 之前,我们需要了解一些核心概念:

Trace(跟踪):一个 Trace 表示一个请求或操作的完整的调用链,从客户端发起请求开始,到服务端响应请求结束。
Span(跨度):一个 Span 表示一个请求或操作的一部分,它包含了一些有用的信息,如开始时间、结束时间、操作名称等。
Trace ID(跟踪 ID):一个 Trace ID 是一个唯一的标识符,它用于将一组 Span 关联在一起,形成一个完整的 Trace。
Span ID(跨度 ID):一个 Span ID 是一个唯一的标识符,它用于标识一个 Span。
在 Sleuth 中,每个请求或操作都会生成一个 Trace,并且每个 Trace 包含多个 Span。每个 Span 包含一个唯一的 Span ID,并与一个 Trace ID 相关联。通过 Trace ID 和 Span ID,我们可以将多个 Span 关联在一起,形成一个完整的 Trace。 

 

二、Sleuth在springboot中的使用

pom文件

<dependency>  <groupId>org.springframework.cloud</groupId>  <artifactId>spring-cloud-starter-sleuth</artifactId>  
</dependency>

 添加依赖后,Sleuth 就会自动启用,并开始跟踪应用程序中的请求和操作。Sleuth 会自动为每个请求或操作生成一个 Trace,并为每个 Trace 中的每个 Span 生成一个唯一的 Span ID。

Sleuth就想一个更完整的日志生成器。

自定义 Sleuth 配置
在使用 Sleuth 时,我们可以通过配置文件或编程方式进行自定义配置。以下是一些常用的自定义配置方式:

配置 Trace 和 Span 的名称
默认情况下,Sleuth 会为每个 Trace 和Span 分别使用应用程序的名称和随机生成的 ID。如果需要自定义 Trace 和 Span 的名称,可以在 application.properties(或 application.yaml)文件中添加以下配置:
 

spring.sleuth.enabled=true
  1. 创建服务:创建一个简单的 Spring Boot 应用程序,例如一个 REST 服务。在这个服务中,添加一些请求处理逻辑,并启动应用程序。Sleuth 将自动为这些请求添加跟踪信息。

  2. 集成 Zipkin:如果要使用 Zipkin 来收集和展示跟踪数据,还需要集成 Zipkin。首先,下载并启动 Zipkin 服务。然后,在 Sleuth 的配置中指定 Zipkin 的地址,以便 Sleuth 将跟踪数据发送到 Zipkin。

在 application.properties 文件中添加以下配置以集成 Zipkin:

spring.zipkin.base-url=http://localhost:9411/  
spring.sleuth.sampler.probability=1.0 # 设置采样率为 1.0,即所有请求都被跟踪

确保 Zipkin 服务正在运行,并且 URL 是正确的。

  1. 发送请求并查看跟踪:现在,当向你的 Spring Boot 应用程序发送请求时,Sleuth 将生成跟踪数据。如果启用了 Zipkin 集成,这些数据将被发送到 Zipkin 服务器。你可以通过访问 Zipkin 的 Web 界面(通常是 http://localhost:9411)来查看和分析跟踪数据。

  2. 分析跟踪数据:在 Zipkin 的 Web 界面上,你可以看到每个请求的详细信息,包括请求的链路图、时间戳、延迟等。这些信息可以帮助你分析性能瓶颈、错误和延迟问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/536556.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

源聚达科技:抖音今年开店有没有什么新政策

随着电商行业的蓬勃发展&#xff0c;抖音平台作为新兴的社交电商平台&#xff0c;近年来推出了多项新政策以吸引商家入驻&#xff0c;提升用户体验。今年&#xff0c;抖音在开店政策上又有了新的调整和优化&#xff0c;这些变化对于商家来说无疑是重要的风向标。 最新的政策中&…

海豚调度系列之:任务类型——Apache SeaTunnel

海豚调度系列之&#xff1a;任务类型——Apache SeaTunnel 一、Apache SeaTunnel二、创建任务三、任务参数四、任务样例1.在 DolphinScheduler 中配置 SeaTunnel 环境2.配置 SeaTunnel 任务节点 一、Apache SeaTunnel SeaTunnel 任务类型&#xff0c;用于创建并执行 SeaTunnel…

每天五分钟计算机视觉:图像数据不足带来的问题和解决办法

本文重点 在当今的数字时代,图像数据的应用已经渗透到各个领域,包括但不限于计算机视觉、机器学习、自动驾驶、医疗诊断等。然而,当图像数据不足时,会引发一系列问题,对相关应用产生负面影响。 尤其是计算机视觉领域,图像数据尤为珍贵和稀缺,如果计算机视觉的任务中,如…

算法的渐进时间复杂度

T(n) = O(F(n)) T(n):Time 渐进时间复杂度 O:正比例关系 F(n):代码执行次数 只要代码执行的次数越来越多 所耗费的时间也就越来越高 常见的5种: O(n^2) O(n logn) O(n) O(logn) O(1):不管重复多少次1次也是这个时间,10次也是这个时间。 时间复杂度排序:由小到…

【快捷部署】002_Flink(1.17.2)

Flink一键安装&#xff08;本地模式&#xff09; install-flink.sh 脚本内容 #!/bin/bash ####变量 ###执行脚本的当前目录 mydir$(cd "$(dirname "$0")";pwd) echo $mydir #flink安装目录 flink/flink #检查点目录 cp$flink/checkpoints/ #保留点目录 sp…

Java学习笔记(11)

面向对象进阶 Static 静态变量 所有对象一起共享&#xff0c;就用static修饰 不属于对象&#xff0c;属于类的 可以用 类名.静态变量 “”&#xff1b;赋值 但是 对象.静态变量也可以访问到内容 Static内存图 Student这个类的字节码文件加载到方法区&#xff0c;并在内…

计算机网络期末98+冲刺笔记

一、计算机网络基础 1.1计算机网络的概述 计算机网络的定义&#xff1a;利用通信设备和线路&#xff0c;将地理位置不同的具有独立功能的多台计算机机器外部设备连接起来&#xff0c;在网络操作系统、网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息…

springboot整合swagger,postman,接口规范

一、postman介绍 1.1概述 工具下载 Postman&#xff08;发送 http 请求的工具&#xff09; 官网&#xff08;下载速度比较慢&#xff09;&#xff1a;Download Postman | Get Started for Free 网盘下载&#xff1a;百度网盘 请输入提取码 1.2Http 请求格式 请求地址请求方法状…

数据结构入门篇 之 【双链表】的实现讲解(附完整实现代码及顺序表与线性表的优缺点对比)

一日读书一日功&#xff0c;一日不读十日空 书中自有颜如玉&#xff0c;书中自有黄金屋 一、双链表 1、双链表的结构 2、双链表的实现 1&#xff09;、双向链表中节点的结构定义 2&#xff09;、初始化函数 LTInit 3&#xff09;、尾插函数 LTPushBack 4&#xff09;、头…

01-java入门了解--cmd命令、jdk、java的认识

cmd常用命令 java入门需要安装的环境 jdk。&#xff08;下载好jdk&#xff0c;并配置好环境&#xff09;idea。&#xff08;或者其他的编程工具&#xff09; jdk安装目录介绍 第一步&#xff1a;编写程序&#xff08;程序员写.java后缀的文件&#xff09; 第二步&#xff1a;…

学生时期学习资源同步-1 第一学期结业考试题1

原创作者&#xff1a;田超凡&#xff08;程序员田宝宝&#xff09; 版权所有&#xff0c;引用请注明原作者&#xff0c;严禁复制转载

使用CrossOver 在Mac 运行Windows 软件|D3DMetal是什么技术,

CrossOver Mac 使用特点 • 免费试用 14 天&#xff0c;可使用 CrossOver Mac 全部功能&#xff0c;• 试用过期会保留之前安装的 Windows 软件• 使 Mac 运行 Windows 程序 使用CrossOver在Mac上运行Windows软件是一个方便且无需安装完整Windows操作系统的解决方案。CrossOve…