链路跟踪——Sleuth+Zipkin

本文围绕Spring Cloud展开,介绍了Sleuth链路跟踪,可分析微服务调用链路中各节点执行情况;还阐述了Sleuth + Zipkin链路分析,Zipkin能收集数据并提供可视化分析;此外,说明了向Eureka注册正确ip地址的方法,避免注册主机名导致解析问题。

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

1.Sleuth 链路跟踪

  • 随着系统规模越来越大,微服务之间调用关系变得错综复杂,一条调用链路中可能调用多个微服务,任何一个微服务不可用都可能造整个调用过程失败;
  • spring cloud sleuth 可以跟踪调用链路,分析链路中每个节点的执行情况。

1.1微服务中添加 spring cloud sleuth 依赖

修改以下微服务的 pom.xml,添加 sleuth 依赖

  • sp02-item-service
  • sp03-user-service
  • sp04-order-service
  • sp11-zuul
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>

1.2在控制台查看链路跟踪日志

四个微服务的控制台日志中,可以看到以下信息:
[服务id,请求id,span id,是否发送到zipkin]

  • 请求id:请求到达第一个微服务时生成一个请求id,该id在调用链路中会一直向后面的微服务传递
  • span id:链路中每一步微服务调用,都生成一个新的id
    zuul:

    item:

    user:

    order:

2.Sleuth + Zipkin 链路分析

zipkin 可以收集链路跟踪数据,提供可视化的链路分析
链路数据抽样比例
默认 10% 的链路数据会被发送到 zipkin 服务。可以配置修改抽样比例:

spring:
  sleuth:
    sampler:
      probability: 0.1

2.1启动 Zipkin 时,连接到 RabbitMQ

java -jar zipkin-server-2.12.9-exec.jar --zipkin.collector.rabbitmq.uri=amqp://admin:admin@192.168.64.140:5672

在这里插入图片描述

2.2添加 zipkin、amqp 依赖

修改以下微服务

  • sp02-item-service
  • sp03-user-service
  • sp04-order-service
  • sp11-zuul
<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2.3 yml 添加RibbitMQ 的连接信息(修改配置中心)

spring:
  application:
    name: item-service
  #防止配置中心的配置,覆盖应用的本地配置
  cloud:
    config:
      override-none: true
  rabbitmq:
    host: 192.168.64.140
    username: admin
    password: admin
    zipkin:
      sender:
        type: rabbit

2.4启动并访问服务,访问 Zipkin 查看链路分析



3.向Eureka注册正确的ip地址

  • eureka客户端向eureka注册时, 会自动选择网卡, 并可能注册主机名而不是ip地址;
  • 下面配置可以选择正确网卡的ip向eureka进行注册。

3.1选择正确网卡

  • 服务器有多块网卡,要选择正确网卡的ip地址向eureka进行注册
  • 编辑 bootstrao.yml
spring:
  cloud:
    inetutils:
      ignored-interfaces: # 忽略的网卡
        - VM.+
      preferred-networks: # 要是用的网卡的网段
        - 10\.8\.29\..+

3.2注册ip地址,而不是主机名

  • 注册时,有可能自动选择主机名进行注册,而不使用ip地址. 主机名在局域网内有可能不会被正确的解析;
  • 最好使用ip地址进行注册,而不注册主机名;
    在应用配置 application.yml 中配置:
eureka:
  instance:
    prefer-ip-address: true # 使用ip进行注册
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port} # 界面列表中显示的格式也显示ip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值