SpringBoot 如何使用 Sleuth 进行分布式跟踪

news2024/11/19 21:27:28

使用Spring Boot Sleuth进行分布式跟踪

在现代分布式应用程序中,跟踪请求和了解应用程序的性能是至关重要的。Spring Boot Sleuth是一个分布式跟踪解决方案,它可以帮助您在分布式系统中跟踪请求并分析性能问题。本文将介绍如何在Spring Boot应用程序中使用Sleuth进行分布式跟踪。

在这里插入图片描述

什么是Spring Boot Sleuth?

Spring Boot Sleuth是Spring Cloud的一部分,它提供了分布式跟踪的功能。它允许您跟踪请求的流经,并记录每个请求的处理时间。Sleuth通过生成唯一的跟踪标识符(Trace ID)和跟踪片段标识符(Span ID)来跟踪请求的传播。这些标识符使您能够在分布式系统中了解请求的传播路径和性能。

Sleuth还支持将跟踪数据导出到不同的后端,如Zipkin、Jaeger等,以便进行跟踪数据的可视化和分析。

添加Sleuth依赖

要在Spring Boot应用程序中使用Sleuth,首先需要添加Sleuth的依赖。在pom.xml中添加以下依赖:

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

这将引入Sleuth和它的默认跟踪实现(通常是Brave)以及一些其他依赖项。

配置Sleuth

Sleuth的配置通常是非常简单的,因为它与Spring Boot无缝集成。默认情况下,Sleuth将生成一个唯一的Trace ID和Span ID,并将它们添加到每个HTTP请求的HTTP头中。

要开始使用Sleuth,您只需将Sleuth的依赖添加到您的项目中,不需要额外的配置。但是,如果您需要自定义Sleuth的行为,可以进行一些配置。

自定义Sleuth的标识符

您可以自定义Sleuth生成的Trace ID和Span ID。例如,您可以通过以下方式配置Sleuth使用UUID而不是默认的随机值:

spring.sleuth.trace-id128=true

这将使Sleuth生成128位的Trace ID。

导出跟踪数据

默认情况下,Sleuth会将跟踪数据导出到日志中。这对于开发和调试非常有用。但是,如果您希望将跟踪数据导出到远程跟踪系统(如Zipkin),您需要进行一些额外的配置。

导出到Zipkin

要将跟踪数据导出到Zipkin,您需要添加Zipkin的依赖并配置Zipkin的服务器地址。以下是一个示例配置:

spring.zipkin.base-url=http://your-zipkin-server:9411/

这将使Sleuth将跟踪数据发送到指定的Zipkin服务器。

自定义Span名称

默认情况下,Sleuth会使用HTTP请求的URL作为Span的名称。但是,您可以自定义Span的名称,以便更好地识别不同的Span。以下是一个示例,如何自定义Span的名称:

import brave.SpanCustomizer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class MyService {

    private final SpanCustomizer spanCustomizer;

    @Autowired
    public MyService(SpanCustomizer spanCustomizer) {
        this.spanCustomizer = spanCustomizer;
    }

    public void doSomething() {
        // 自定义Span名称
        spanCustomizer.name("custom-span-name");
        // 执行业务逻辑
    }
}

在上述示例中,我们注入了SpanCustomizer,并在doSomething方法中自定义了Span的名称。

进行分布式跟踪

一旦您配置好了Sleuth,它将开始自动跟踪请求。每个HTTP请求都将生成一个Span,Span包含Trace ID、Span ID和父Span ID等信息。这些信息将在请求的HTTP头中传播,以便在分布式系统中进行跟踪。

以下是一个示例HTTP请求的HTTP头,其中包含了Sleuth的跟踪信息:

GET /api/resource HTTP/1.1
Host: example.com
X-B3-TraceId: 72e2f79e07b2e2fb
X-B3-SpanId: 72e2f79e07b2e2fb
X-B3-ParentSpanId: 72e2f79e07b2e2fb

Sleuth还会自动记录Span的开始和结束时间,以便您可以查看每个Span的执行时间。

可视化和分析跟踪数据

一旦您开始跟踪请求,您可以使用Sleuth支持的后端来可视化和分析跟踪数据。以下是一些常见的后端:

Zipkin

Zipkin是一个流行的分布式跟踪系统,支持Sleuth。您可以在Zipkin的仪表板上查看跟踪数据,查看请求的传播路径和执行时间。

Jaeger

Jaeger是另一个流行的分布式跟踪系统,也支持Sleuth。它提供了类似于Zipkin的功能,允许您查看和分析跟踪数据。

Prometheus和Grafana

如果您使用Prometheus和Grafana来监控应用程序,您也可以使用它们来可视化和分析Sleuth的跟踪数据。将Sleuth的跟踪数据导出到Prometheus,并使用Grafana创建仪表板

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python深度学习】目标检测和语义分割的区别

在计算机视觉领域&#xff0c;语义分割和目标检测是两个关键的任务&#xff0c;它们都是对图像和视频进行分析&#xff0c;但它们之间存在着明显的区别。本文将通过图像示例&#xff0c;详细阐述语义分割和目标检测之间的差异。 一、基本概念 1.1 语义分割&#xff08;Semantic…

Git【入门】从安装到会用(千字总结)

Git使用 一、Git介绍 1.1 版本控制(理解) 无论是代码编写&#xff0c;还是文档编写&#xff0c;我们都会遇到对文档内容反复修改的情况 但我们不能只保留最后一次修改的文件&#xff0c;其余版本也要保留&#xff0c;有可能老板想要的就是你的上一个版本的 1.2 开发中存在的…

基于YOLOv5、YOLOv8的火灾检测(超实用毕业设计项目)

yolo系列文章目录 摘要&#xff1a;基于YOLOV5模型的火灾检测系统用于日常生活中检测与定位火灾目标&#xff0c;包括建筑火灾、森林火灾等。利用深度学习算法可实现图片、视频、摄像头等方式的火灾目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导…

云安全之信息内容安全

内容安全产生背景 随着互联网、智能设备及各种新生业务的飞速发展&#xff0c;互联网上的数据呈现爆炸式增长&#xff0c;图片、视频、发文、聊天等互动内容已经成为人们表达感情、记录事件和日常工作不可或缺的部分。每天&#xff0c;通过互联网上传的视频、图片数量超过10亿…

在工业机器视觉领域中应用钡铼技术有限公司的EtherCAT网关

钡铼技术有限公司作为一家专注于业物联网关、工业智能网关、边缘计算网关、ARM嵌入式工业计算机、PLC远程采集网关、Modbus转MQTT网关、OPC UA网关、BACnet网关路由器、Lora网关、工业4G边缘路由器、4G无线远程数据采集模块、4G DTU RTU、以太网远程IO模块、工业总线分布式I/O模…

R语言实现向量自回归和误差修正模型——附实战代码

大家好&#xff0c;我是带我去滑雪&#xff01; 向量自回归&#xff08;VAR&#xff09;模型和误差修正模型&#xff08;ECM&#xff09;是时间序列分析中常用的两种模型&#xff0c;它们用于研究多个变量之间的动态关系。VAR 模型适用于研究多个相关变量之间的相互影响和动态关…

总结CRM客户管理系统实施失败的主要原因

实施CRM系统相对于ERP等大型软件要更加容易&#xff0c;但不是每一家企业都能成功实施CRM系统&#xff0c;实施CRM销售管理系统失败的原因有很多比如准备工作不足、与现有应用无法集成做到数据互通、销售人员不容易操作系统。 准备工作不足 部署方式是本地化还云服务主要取决…

除了console.log(),很多人不知道的其他方法console.table,console.dir,console.time等

console.dir 可以对象化输出 dom <script>setTimeout(() > {let d document.querySelector(.box);console.log(d);console.dir(d);}, 500);</script>输出结果 这个对象展开之后的内容太多了就不截图了 console.table能够以表格形式展现对象/数组 <scrip…

如何在 PyTorch 中冻结模型权重以进行迁移学习:分步教程

一、说明 迁移学习是一种机器学习技术&#xff0c;其中预先训练的模型适用于新的但类似的问题。迁移学习的关键步骤之一是能够冻结预训练模型的层&#xff0c;以便在训练期间仅更新网络的某些部分。当您想要保留预训练模型已经学习的特征时&#xff0c;冻结至关重要。在本教程中…

回馈式负载箱的应用

回馈式负载箱通过用来模拟负载来测量电源的性能和稳定性&#xff0c;由可编程电子负载、控制电路和测量电路组成&#xff0c;回馈式负载箱的应用非常广泛&#xff0c;它用于电源系统的研发和测试。通过连接回馈式负载箱到待测电源上&#xff0c;可以模拟不同的负载情况&#xf…

LuaRadio介绍

介绍 LuaRadio是一个用于构建信号处理流程图的框架 在软件定义的无线电流图中&#xff0c;源和接收块倾向于实现某种I/O&#xff0c;如从SDR加密狗读取样本&#xff0c;或将样本写入IQ文件&#xff0c;而处理块倾向于计算&#xff0c;如滤波器和乘法器。 数据类型说明 LuaRadio…

ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的问题解决

winR打开窗口输入 services.msc 停止mysql 找到data文件&#xff0c;清空其中全部文件。没有data文件&#xff0c;手动创建 ​ 输入 mysqld --remove mysql 移除服务&#xff1b; 注册服务&#xff0c;mysqld -install&#xff1b; 并开始初始化&#xff0c;mysqld --initi…

【FreeRTOS】【STM32】03 FreeRTOSConfig.h头文件简介与修改

基于[野火]《FreeRTOS%20内核实现与应用开发实战—基于STM32》.pdf FreeRTOSConfig.h头文件是FreeRTOS各项功能的打开与关闭 FreeRTOSConfig.h头文件简介 之前也说过了&#xff0c;FreeRTOSConfig.h文件可以添加在工程中任意文件夹&#xff0c;只需要在路径中添加好了就行。…

修炼k8s+flink+hdfs+dlink(四:k8s概念)

一&#xff1a;概念 1. 概述 1.1 kubernetes对象. k8s对象包含俩个嵌套对象字段。 spec&#xff08;规约&#xff09;&#xff1a;期望状态 status&#xff08;状态&#xff09;&#xff1a;当前状态 当创建对象的时候&#xff0c;会按照spec的状态进行创建&#xff0c;如果…

某省医保局:强化医保信息化高质量建设,提升数字医疗保障服务能力

自2018年起&#xff0c;国家医保信息化工作启动&#xff0c;2020年10月完成了国家医保信息平台主体建设&#xff0c;随后国家医保信息化工作重点转向地方落地应用。在国家医保局的指导下&#xff0c;全国各地省市级医保部门制定了医疗保障信息化工作目标。 东北某省作为医保信息…

java日志框架详解-Log4j2

一、概述 Apache Log4j 2 &#xff08;Log4j – Apache Log4j 2&#xff09;是对Log4j的升级&#xff0c;它比其前身Log4j 1.x提供了重大改进&#xff0c;并参考了Logback中优秀的设计&#xff0c;同时修复了Logback架构中的一些问题。被誉为是目前最优秀的Java日志框架&#x…

【智慧燃气】智慧燃气解决方案总体概述--终端层、网络层

关键词&#xff1a;智慧燃气、智慧燃气系统、智慧燃气平台、智慧燃气解决方案、智慧燃气应用、智能燃气 智慧燃气解决方案是基于物联网、大数据、云计算、移动互联网等先进技术&#xff0c;结合燃气行业特征&#xff0c;通过智能设备全面感知企业生产、环境、状态等信息的全方…

合并单元格,并且动态合并单元格,合并相同值的单元格,vue2项目

element-ui 合并行或列 table :span-method&#xff08;行合并&#xff09;_elementui合并列_Take^that的博客-CSDN博客 <script>export default {data(){return {spanArr:[],pos:null,tableData:[},mounted(){this.getSpanArr(this.tableData)},methods:{objectSpanMeth…

基于若依ruoyi-nbcio支持flowable流程增加自定义业务表单(二)

之前讲了自定义业务表单&#xff0c;现在讲如何与流程进行关联 1、后端部分 WfCustomFormMapper.xml <update id"updateCustom" parameterType"Object">update wf_custom_form set deploy_id #{customFormVo.deployId}, flow_name#{customFormVo.…

MovieLens:一个常用的电影推荐系统领域的数据集

MovieLens是一个常用的电影推荐系统领域的数据集&#xff0c;用于研究和开发推荐算法和机器学习模型。该数据集包含了用户对电影的评分、电影的信息以及用户的信息。以下是MovieLens数据集的完整介绍&#xff1a; MovieLens数据集版本&#xff1a; MovieLens数据集有多个版本…