Spring Boot 中的 Sleuth 是什么, 如何使用

67 篇文章 5 订阅
订阅专栏

Spring Boot 是一个非常流行的 Java Web 开发框架,它提供了许多方便的功能,其中之一就是 Sleuth。Sleuth 是一个分布式跟踪系统,用于跟踪应用程序中的请求和操作。在本文中,我们将探讨 Spring Boot 中的 Sleuth 是什么,以及如何使用它来跟踪应用程序中的请求和操作。

在这里插入图片描述

什么是 Sleuth?

Sleuth 是一个分布式跟踪系统,用于跟踪应用程序中的请求和操作。它可以帮助我们了解应用程序的结构和性能,并定位问题的根本原因。Sleuth 可以与 Zipkin 等分布式跟踪系统配合使用,从而提供更全面的应用程序跟踪和分析功能。

Sleuth 在 Spring Boot 中提供了一个便捷的集成方式。它可以轻松地跟踪应用程序中的请求和操作,并将跟踪信息记录到日志文件中。这使得我们可以更轻松地了解应用程序的结构和性能,并快速定位问题的根本原因。

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

要使用 Sleuth,我们需要将 Sleuth 依赖添加到项目中。在 Maven 项目中,可以在 pom.xml 文件中添加以下依赖:

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

在 Gradle 项目中,可以在 build.gradle 文件中添加以下依赖:

implementation 'org.springframework.cloud:spring-cloud-starter-sleuth'

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

默认情况下,Sleuth 会将 Trace ID 和 Span ID 添加到日志中,以便我们可以轻松地跟踪应用程序中的请求和操作。例如,下面是一个包含 Trace ID 和 Span ID 的日志:

2021-09-01 12:00:00.000 [my-service,0123456789abcdef,0123456789abcdef,true] TRACE [MyController] - Handling request

在上面的例子中,日志中包含了一个 Trace ID(0123456789abcdef)和一个 Span ID(0123456789abcdef),它们分别与一个名为 my-service 的服务相关联。

自定义 Sleuth 配置

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

配置 Trace 和 Span 的名称

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

spring.sleuth.sampler.probability=1.0
spring.application.name=my-custom-app-name
spring.sleuth.span-name-regex=(?<controller>MyController)

上面的配置将会将 Trace 的名称设置为 my-custom-app-name,将所有包含 MyController 的 Span 设置为 MyController。同时,spring.sleuth.sampler.probability=1.0 确保 Sleuth 对所有请求和操作进行跟踪。

配置 Sleuth 的 Sampler

在实际的生产环境中,我们可能需要对请求和操作进行采样,以避免 Sleuth 产生过多的跟踪数据。在 Sleuth 中,采样是通过 Sampler 实现的。默认情况下,Sleuth 使用一个随机采样器,它对 10% 的请求进行采样。

如果需要自定义采样器,可以在配置文件中添加以下配置:

spring.sleuth.sampler.type=RATE_LIMITED
spring.sleuth.sampler.rate=0.5

上面的配置将会将采样器设置为 RATE_LIMITED,它会根据请求速率限制采样率。具体而言,它将对 50% 的请求进行采样。

使用 MDC(Mapped Diagnostic Context)

在实际的生产环境中,我们可能需要将 Trace 和 Span 的信息传递给 Logback 或 Log4j2 等日志框架。为了实现这一点,Sleuth 提供了一个 MDC(Mapped Diagnostic Context)实现,它可以将 Trace 和 Span 的信息添加到日志中。

要使用 MDC,我们需要在 application.properties(或 application.yaml)文件中添加以下配置:

logging.pattern.level=%X{traceId} %X{spanId} %5p [${spring.zipkin.service.name:-},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] [%t] %logger{5} - %msg%n

上面的配置将在日志模式中添加 Trace 和 Span 的信息。这样,我们就可以轻松地跟踪应用程序中的请求和操作,并将跟踪信息添加到日志中。

总结

本文介绍了 Spring Boot 中的 Sleuth,它是一个分布式跟踪系统,用于跟踪应用程序中的请求和操作。我们了解了 Sleuth 的核心概念,包括 Trace、Span、Trace ID 和 Span ID,并探讨了如何使用 Sleuth。

在实际的生产环境中,我们可以通过自定义配置来使用 Sleuth。例如,我们可以配置 Trace 和 Span 的名称、采样器类型和速率,以及使用 MDC 将 Trace 和 Span 的信息添加到日志中。这些功能可以帮助我们更轻松地了解应用程序的结构和性能,并快速定位问题的根本原因。

Spring Cloud入门教程(七):分布式链路跟踪(Sleuth)
cd826_dong的博客
09-11 803
当我们进行微服务架构开发时,通常会根据业务来划分微服务,各业务之间通过REST进行调用。一个用户操作,可能需要很多微服务的协同才能完成,如果在业务调用链路上任何一个微服务出现问题或者网络超时,都会导致功能失败。随着业务越来越多,对于微服务之间的调用链的分析会越来越复杂。Spring Cloud Sleuth为服务之间调用提供链路追踪。通过Sleuth可以很清楚的了解到一个服务请求经过了哪些服务,每个
Spring Boot Sleuth 详解
JAVA领域优质创作者,基于分片网络查询方法专利发明者。
03-13 2399
Spring Boot Sleuth 是一个用于分布式追踪的库,它可以帮助你追踪和理解分布式系统的请求如何跨越多个服务和网络调用。通过使用 Sleuth,你可以收集关于请求路径、延迟、异常等的信息,从而更容易地诊断问题并进行性能优化。
如何在Java应用实现分布式追踪:使用Sleuth与Zipkin的最佳实践
技术研究中心
09-18 814
在微服务架构,分布式追踪是一项关键技术,它帮助我们跟踪请求在不同服务之间的流转,定位性能瓶颈和故障源。通过使用Spring Cloud Sleuth和Zipkin,我们能够轻松地跟踪请求在微服务的流转,分析性能瓶颈,定位故障。这样,我们就能在Zipkin查看完整的请求链路,了解请求如何在不同服务间流转,并监控服务之间的依赖关系。Zipkin是一个分布式追踪系统,能够收集来自不同微服务的追踪数据,并提供可视化的追踪信息,帮助我们分析请求的流转过程和性能问题。指定了Zipkin的服务地址,
10.Spring Cloud Sleuth:分布式请求链路跟踪
MissOfSpring的博客
11-07 434
Spring Cloud Sleuth:分布式请求链路跟踪 Spring Cloud Sleuth 是分布式系统跟踪服务间调用的工具,它可以直观地展示出一次请求的调用过程,本文将对其用法进行详细介绍。 1.Spring Cloud Sleuth 简介 随着我们的系统越来越庞大,各个服务间的调用关系也变得越来越复杂。当客户端发起一个请求时,这个请求经过多个服务后,最终返回了结果,经过的每一个服务都...
sleuth使用说明(入门)
weixin_33834628的博客
12-17 544
出发点:   微服务架构上通过业务来划分服务的,通过REST调用,对外暴露的一个接口,可能需要很多个服务协同才能完成这个接口功能,如果链路上任何一个服务出现问题或者网络超时,都会形成导致接口调用失败。随着业务的不断扩张,服务之间互相调用会越来越复杂,在项目引入sleuth可以方便程序进行调试。 sleuth的一些术语 Span:基本工作单元,例如,在一个新建的span发送一个RPC...
Spring Boot单体应用引入sleuth链路追踪
弹指天下
06-15 3327
单体应用引入链路追踪的好处,通过Sleuth实现链路追踪,并简单介绍底层原理
spring boot 集成sleuth
a18792721831的博客
03-14 2751
spring boot 集成sleuth1. 理论1.1 sleuth是什么1.2 sleuth有哪些1.3 链路追踪的一些基本概念2. zipkin 实例2.1 zipkin server2.2 zipkin client2.2.1 创建2.2.2 配置2.2.3 注解2.2.4 对外接口 controller2.2.5 启动2.3 gateway service2.3.1 创建2.3.2 配置...
spring-boot2-sleuth-integration-demo:Spring Cloud SleuthSpring Boot 2功能端点的集成
05-19
spring-boot2-sleuth集成演示 Spring Cloud SleuthSpring Boot 2功能端点的集成。 一个演示应用程序,用于显示Spring Boot 2 WebFulx应用程序的Spring Cloud Sleuth集成。 要运行该应用程序,请使用以下命令...
微服务架构下的全链路追踪:Spring BootSpring Cloud Sleuth集成实践
最新发布
09-22
为了解决这一问题,分布式追踪技术应运而生,其Spring Cloud SleuthSpring Cloud生态系统的一个关键组件,它与Zipkin等系统配合使用,可以提供强大的分布式追踪能力。本文将详细介绍如何在Spring Boot配置...
microservices-latency-analysis:使用Spring Cloud Sleuth和Zipkin测量Spring Boot应用程序的延迟
04-29
本项目"microservices-latency-analysis"专注于使用Spring Cloud Sleuth和Zipkin来分析Spring Boot应用程序的延迟,帮助开发者优化微服务性能。 **Spring Boot** Spring Boot是基于Spring框架的快速开发工具,它...
spring-boot-data-source-decorator:与p6spy,datasource-proxy,flexy-pool和spring-cloud-sleuth集成的Spring Boot
01-30
能够使用Spring Boot提供的@ConfigurationProperties ( spring.datasource.hikari.* , spring.datasource.dbcp2.* ) 通过部署属性decorator.datasource.enabled=true/false禁用装饰 通过spring属性applica
spring-cloud Sleuth使用方法
08-26
主要介绍了spring-cloud Sleuth使用方法,文通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Spring Boot入门(01):探索Spring Boot的学习历程、发展历程与成功之路
热门推荐
**My Coding Family**
03-09 3万+
Spring Boot是目前最流行的Java开发框架之一,它带来了前所未有的便利性和开发效率,同时也是Spring框架的一个重要组成部分。Spring Boot的出现不仅仅是为了简化Spring应用程序的开发过程,更是为了解决Spring框架的一些问题,比如依赖管理、配置管理等,从而使Spring应用程序更容易上手,更易于维护。通过这篇文章,你将了解到Spring Boot的历史背景、设计理念、特性和优点,以及如何使用它来快速开发高效的Java应用程序。
SpringBoot Sleuth Zipkin Log日志链路追踪完整流程(1)
流浪的喵的博客
02-07 4556
SpringBoot Sleuth Zipkin 链路追踪全流程 先拍砖,这个流程你跑不通,或者traceId找不到、Log4j2无法生成TraceId,直接来拍我,有一个我接一个!!!!!! 1.步骤 1)先下载Zipkin jar包 这样你可以在本地先启动Zipkin服务 2)启动项目 SpringBoot项目,引入相关的jar包,和Sleuth和Zipkin相关的只需要这两个就够了,注意版本、版本、版本,重要事情说三遍,这里只是一部分Pom,完整Pom在下面步骤详解 <properties&
使用Spring Boot集成Sleuth
技术研究中心
07-14 547
在分布式系统,跟踪请求的流转路径是非常重要的。通过Spring Boot集成Sleuth,我们可以轻松实现分布式追踪,跟踪请求在多个服务的流转路径,并使用Zipkin来收集和查看这些跟踪数据。下面,我们将创建一个简单的Spring Boot应用,包含两个服务,通过REST API进行调用,并使用Sleuth进行追踪。在这个示例,我们创建了一个新的Span,并添加了一个自定义标签。这些依赖将Sleuth和Zipkin集成到你的项目,Zipkin是一个分布式追踪系统,用于收集和查看跟踪数据。
Spring Cloud Sleuth 使用教程
weixin_33777877的博客
03-16 202
Spring Cloud Sleuth 使用案例 Span术语(Terminology) Span:基本工作单元,例如,在一个新建的span发送一个RPC等同于发送一个回应请求给RPC,span通过一个64位ID唯一标识,trace以另一个64位ID表示,span还有其他数据信息,比如摘要、时间戳事件、关键值注释(tags)、span的ID、以及进度ID(通常是IP地址) span在不断的...
springboot整合Sleuth链路追踪+Zipkin分析
呆萌很的博客
11-02 1194
Spring Cloud Sleuth对于分布式链路的跟踪仅仅是生成一些数据,这些数据不便于人类阅读,所以我们一般把这种跟踪数据上传给Zipkin Server,由Zipkin通过UI页面统一进行数据的展示。Zipkin是Twitter开源的分布式实时数据跟踪系统(Distributed Tracking System)。Annotation(标注)用来记录事件的存在,其,核心annotation用来定义请求的开始和结束。启动项目,测试功能。然后访问Zipkin服务地址默认端口9411。
Spring Boot Sleuth
xtzhou47的博客
02-17 297
Spring Cloud Sleuth IntroductionSpring Boot SleuthSpring官方提供的一个支持链路跟踪的API框架实现,相比于国内林林总总的各种跟踪实现,Spring SleuthSpring官方实现的一个生成TraceID和SpanID的方案。 ZipkinZipkin是一个可以解释Sleut...
sleuth入门
你好,我是小新,很高兴认识你!
07-12 506
sleuth入门
写文章

热门文章

  • Spring Boot 中的 @PostMapping 注解,如何使用 38029
  • Clion 下载、安装、使用教程,附详细图文(2023年亲测可用) 15487
  • ChatGpt 从入门到精通 9153
  • 2023年 WebStorm 下载、安装教程、附详细图文教程,亲测有效 9150
  • Spring Boot 中的 @PutMapping 注解是什么,原理,如何使用 8958

分类专栏

  • 常用软件 1篇
  • Java大学生实战项目 48篇
  • 小程序毕业设计 33篇
  • Python 项目 12篇
  • Java 教程 67篇
  • Vue教程 24篇
  • Android 教程 1篇

最新评论

  • (2024年最新)Python下载安装教程,附详细图文,建议收藏

    泡芙萝莉酱: 博主的这篇文章真的是太有帮助了!我以前对Python的下载安装一直感觉比较迷茫,但通过博主的详细图文教程,我终于明白了整个过程。文字清晰易懂,配图直观生动,让我一目了然。感谢博主用心的分享,让我受益匪浅。希望未来能够看到更多关于Python相关教程的分享,同时也期待继续得到博主的指导,共同进步。再次感谢博主的分享和支持!

  • Java基于微信小程序的美食推荐小程序,附源码

    喜欢足球的菜鸡: 开源吗

  • Spring Boot 中的 @PostMapping 注解,如何使用

    Humble769: 啊?为什么没有?你写过嘛

  • 2022 年Java面试题及答案大全(持续更新)

    天蓝999: 可以的,我看的另一篇,我面试时90%以上的题目在下边这个博客里:https://knife.blog.csdn.net/article/details/121219272

  • Vue中如何进行音频可视化与音频频谱展示

    MynameisSir: 不生效

最新文章

  • 如何下载Chrome浏览器历史版本
  • Java基于微信小程序的大学生兼职系统的设计与实现,附源码
  • 基于Python flask的豆瓣电影可视化系统,豆瓣电影爬虫系统
2024
10月 3篇
09月 6篇
07月 2篇
04月 4篇
03月 12篇
02月 24篇
01月 6篇
2023年129篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java徐师兄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家长宁玻璃钢雕塑陈设平凉动物玻璃钢雕塑价格玻璃钢雕塑哪儿有卖的十堰玻璃钢考拉雕塑厂商佛山玻璃钢糖果雕塑呼伦贝尔玻璃钢卡通雕塑冰雪古代玻璃钢雕塑规格四川喷泉雕塑玻璃钢重庆江北玻璃钢仿铜雕塑玻璃钢雕塑工厂多在哪里新余学校玻璃钢雕塑定做价格太原玻璃钢广场雕塑厂家玻璃钢树脂雕塑神像厂家桂平玻璃钢雕塑厂家附近玻璃钢卡通雕塑报价电镀玻璃钢雕塑饰品广东主题商场美陈生产景洪市玻璃钢雕塑设计订做户内玻璃钢雕塑定做价格紫红色玻璃钢花盆玻璃钢雕塑奶牛商场挑空美陈安庆玻璃钢南瓜屋雕塑上海玻璃钢雕塑茶几商场美陈的案例太原火烈鸟玻璃钢雕塑制作福建步行街玻璃钢雕塑生产厂家商场玻璃钢花盆怎么浇水新密广场标识校园玻璃钢雕塑西藏玻璃钢雕塑厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化