调用链监控 Sleuth+Zipkin

本文深入解析调用链监控原理,介绍SpringCloud Sleuth与Zipkin的整合方法,探讨微服务间API调用异常及性能瓶颈的快速定位策略,并提供Zipkin数据持久化方案。

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

一、剖析调用链监控原理

1. 需求

  • 跨微服务的API调用发生异常,要求快速定位出问题出在哪里;
  • 跨微服务的API调用发生性能瓶颈,要求迅速定位出性能瓶颈。

2. 调用链监控原理

在这里插入图片描述

3. 常用调用链监控工具

  • Spring Cloud Sleuth + Zipkin
  • Skywalking、Pinponit

二、整合Sleuth

1.什么是Sleuth

Sleuth是一个Spring Cloud的分布式跟踪解决方案。

2. Sleuth

  • **Span(跨度):**Sleuth的基本工作单元,它用一个64位的ID唯一标识。除ID外,span还包含其他数据,如描述、时间戳事件、键值对的注解(标签)、span ID、Span父ID等。
  • **trace(跟踪):**一组span组成的树状结构称为trace。
  • Annotation(标注):
    • **CS(Client Sent 客户端发送):**客户端发起一个请求,该annotation描述了一个span的开始;
    • **SR(Server Received 服务器端接收):**服务器端获得请求并准备处理它;
    • **SS(Server Send 服务器端发送):**该annotation表明完成请求处理(当响应发回客户端时);
    • **CR(Client Received 客户端接收):**span结束的标识。客户端成功接收到服务器端的响应。

3. 整合Sleuth

  1. pom.xml

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>
    
  2. 应用报异常时,控制台日志
    在这里插入图片描述


三、Zipkin搭建与整合

1. 什么是Zipkin

Zipkin是Twitter开源的分布式跟踪系统,主要用来收集系统的时序数据,从而追踪系统的调用问题。

2. 搭建Zipkin Server

搭建Zipkin Server

3. Zipkin控制台

访问http://localhost:9411
在这里插入图片描述

4. 整合Zipkin

  1. pom.xml

    当使用spring-cloud-starter-zipkin之后,就不需要spring-cloud-starter-sleuth这个坐标了,因为spring-cloud-starter-zipkin已经包含了spring-cloud-starter-sleuth

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zipkin</artifactId>
    </dependency>
    
  2. 写配置

    spring:
      zipkin:
        base-url: http://localhost:9411/
      sleuth:
        sampler:
          # 抽样率,默认是0.1(10%,表示90%的数据都会丢弃)
          #1.0表示100%,表示所有数据都会上报给zipkin
          probability: 1.0
    
  3. 控制台显示调用详情
    在这里插入图片描述

5. 整合Zipkin后Nacos报错解决

整合zipkin后控制台一直报nacos的异常,原因是Nacos把Zipkin Server地址当成了一个微服务,而Zipkin Server并不是一个微服务,且官方也不允许把Zipkin Server注册成一个微服务。
在这里插入图片描述

**解决方法:**设置 discovery-client-enabled: false

spring:
  zipkin:
    base-url: http://localhost:9411/
# 是否把zipkin注册为微服务
    discovery-client-enabled: false
  sleuth:
    sampler:
      # 抽样率,默认是0.1(10%,表示90%的数据都会丢弃)
      #1.0表示100%,表示所有数据都会上报给zipkin
      probability: 1.0

6. 为所有微服务整合Zipkin

为每一个微服务添加相同的坐标与配置即可,在控制台就能查询到微服务之间的调用情况
在这里插入图片描述

7. Zipkin数据持久化

  1. 支持的数据持久化方式:

    • MySQL
    • ElasticSearch
    • Cassandra
  2. 数据持久化的官方文档

    Zipkin数据持久化文档

  3. 使用ElasticSearch对Zipkin数据持久化

    1. 搭建ElasticSearch

      ES7.0以后的版本需要jdk11的支持

      ElasticSearch下载

      根据系统选择下载对应版本:
      在这里插入图片描述

      下载后解压,进入bin目录:

      然后 ./elasticsearch就可以启动ES了

      ./elasticsearch –d 表示后台运行

      访问http://localhost:9200,能够看到以下界面,说明ES已经启动成功
      在这里插入图片描述

    2. 让Zipkin使用ES存储数据

      Zipkin提供了很多的环境变量,配置这些环境变量就可以把数据存入ES了
      在这里插入图片描述

      如:
      在这里插入图片描述

      Zipkin环境变量查询

  4. 关系依赖图的显示

    尽管使用ES实现了对Zipkin的数据持久化,但其关系依赖图却没有展示出来

    官方文档解释:
    在这里插入图片描述

    点击spark job,其实就是Zipkin-dependencies:

    Zipkin-dependencies

    Zipkin-dependencies使用ElasticSearch的环境变量:
    在这里插入图片描述

    Zipkin-dependencies的其他环境变量

    Zipkin-dependencies指定分析日期的数据:
    在这里插入图片描述


四、其他的微服务监控

1. Spring Boot Admin

为Spring Boot量身打造的一个简单易用的监控数据管理工具

GitHub

2. Jvm监控

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值