【真会玩】- SpringCloud Netflix 实战笔记 -【Sleuth & Zipkin】

本文介绍了如何在SpringCloud项目中集成Sleuth和Zipkin进行分布式追踪。Sleuth用于跟踪每个请求的路径、耗时等信息,而Zipkin则收集这些信息并提供友好的界面展示。通过在服务中添加相关依赖,配置Zipkin的基础URL和采样率,并下载Zipkin的jar包独立运行,实现了系统延时问题的追踪。在遇到调用链路错误时,Zipkin能清晰展示调用信息和耗时所在,方便定位问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在这里插入图片描述

友情提醒

  • 文末获取【真会玩】- SpringCloud Netflix 实战系列Postman在线脚本Github仓库实战源码
  • 【真会玩】- SpringCloud Netflix 实战系列有概念有实战,考验动手能力,如果实战中有操作没有达到与本文同等效果的请先仔细检查个人操作与文中相关内容是否一致,如检查无误请私信或评论区留言~

在这里插入图片描述

Sleuth

Sleuth是Spring cloud的分布式追踪解决方案,跟踪每个请求,中间请求经过哪些微服务,请求耗时,网络延迟,业务逻辑耗时等。我们就能更好地分析系统瓶颈、解决系统问题

集成案例

在每个需要监控的服务中添加一下依赖,我们这里就在Feign-ConsumerFeign-Provider服务中添加相关依赖, - Feign-ConsumerFeign-Provider相关代码请参考【真会玩】- SpringCloud Netflix 实战笔记 -【OpenFeign代替Feign】

  • sleuth是Spring cloud的分布式追踪解决方案
  • zipkin是twitter开源的分布式跟踪系统,收集系统的时序数据,从而追踪微服务架构中系统延时等问题,可以通过界面更加友好的展现给用户
    • 收集系统的时序数据,从而追踪微服务架构中系统延时等问题
    • 由Collector、Storage、Restful API、Web UI(采集器,存储器,接口,UI)四个部分组成
    • sleuth 收集跟踪信息通过http请求发送给zipkin 服务,zipkin将跟踪信息存储(默认内存存储,可以用mysql,ES等存储)
    • 提供RESTful API接口,zipkin ui通过调用api进行数据展示
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

在上述两个服务application.yml中添加配置

spring:
  #zipkin
  zipkin:
  	#微服务会收集信息上报到这个地址
    base-url: http://localhost:9411/
  #采样比例1
  sleuth:
    sampler:
      rate: 1

到这里代码层面的已经简单配置好了,我们还需要去下载一个zipkinjar包,因为Zipkin的管理界面不是跑在我们微服务应用中的,是需要他官网的zipkin.jar独立运行在服务器中的

zipkin下载
  • 如果是Linux系统的也可以用他官网的curl -sSL https://zipkin.io/quickstart.sh | bash -s脚本在命令行执行即可下载
  • jar包我已经下载下来传到优快云了,点击此处跳转进行下载(免积分)

启动Zipkin

java -jar zipkin.jar

在这里插入图片描述

然后再重启我们的Feign-ConsumerFeign-Provider服务调用localhost:8888/api/v1/testFC/testOpenFeign接口,这个接口是走的Zuul网关别搞错了

  • 会在被调用控制台看到多出以下信息出来,那这个一串信息代表什么呢?
  • 【服务名,traceId,spanId,是否向zipkin上报信息】

在这里插入图片描述

调用完成后我们可以访问Zipkin来查看调用链路了

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

再看看调用出错是什么样子的,我们把Feign-Provider服务的FeignProviderController/pingFeignProvider接口模拟超时的代码放开

public String pingFeignProvider() {
    try {
        System.out.println("开始模拟超时");
        TimeUnit.MILLISECONDS.sleep(5000);
    } catch (InterruptedException e) {
        throw new RuntimeException();
    }
    return "Ping Feign Provider Port:" + port + " Success Count:"+requestCount.incrementAndGet();
}

重启Feign-Provider服务再次调用localhost:8888/api/v1/testFC/testOpenFeign接口

image-20220927195324220

可以清晰看到调用信息和耗时所在

在这里插入图片描述

在这里插入图片描述

源码&脚本获取地址

  • Postman脚本https://www.getpostman.com/collections/8a0954746646f0dee9a6
    • 脚本可直接复制到Postman使用Link方式导入
  • 实战源码仓库https://github.com/RhysNi/SpringCloudFamilyMeals.git

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

倪倪N

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

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

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

打赏作者

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

抵扣说明:

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

余额充值