SpringBoot 单体服务集成 Zipkin 实现链路追踪

在现代微服务或单体应用中,了解请求的执行路径和耗时非常重要。本文介绍如何在 Spring Boot 单体服务中快速集成 Zipkin,实现链路追踪和可视化分析。

一、准备工作

1. 下载 Zipkin Server

复制代码
wget https://repo1.maven.org/maven2/io/zipkin/java/zipkin-server/2.24.3/zipkin-server-2.24.3-exec.jar

2. 启动 Zipkin Server

复制代码
java -jar zipkin-server-2.24.3-exec.jar --server.port=9411

后台启动

复制代码
nohup java -jar zipkin-server-2.24.3-exec.jar --server.port=9411 &

访问 http://localhost:9411/zipkin 可以看到 Zipkin 首页。

二、Spring Boot 项目依赖

pom.xml 中添加 Sleuth 和 Zipkin 依赖:

复制代码
<!-- Zipkin: 生成和收集追踪数据 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
    <version>3.1.8</version> <!-- 与 Spring Boot 2.7.x 兼容 -->
</dependency>

<!-- Zipkin: 将追踪数据发送到 Zipkin Server -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-sleuth-zipkin</artifactId>
    <version>3.1.8</version>
</dependency>

三、配置 Zipkin 和 Sleuth

application.yml 中添加链路追踪配置:

复制代码
spring:
  application:
    name: yudao-server
  profiles:
    active: local

  # Zipkin 链路追踪配置
  zipkin:
    base-url: http://localhost:9411
    sender:
      type: web
  sleuth:
    sampler:
      probability: 1.0  # 采样率:1.0=100%,生产环境可调整为0.1

这样,每个请求都会生成一个 Trace ID 并发送到 Zipkin。

四、启动 Spring Boot 服务

复制代码
java -jar yudao-server.jar

五、查看链路追踪数据

  1. 打开 Zipkin 页面 http://localhost:9411/zipkin

  2. 在首页点击 "找到一个痕迹"

  3. 搜索条件填写:

  • Service Name : yudao-server

  • 时间范围: 最近 1 小时或自定义

  1. 点击 查找,即可查看请求的执行链路。

六、追踪详情解析

每个 Trace 记录包含:

  • 时间线视图:显示每个 Span 的执行时间和顺序

  • 层级结构:展示父子调用关系

  • 关键字段

    • Trace ID:整个请求链路唯一标识

    • Span ID:每个操作唯一标识

    • 标签信息:HTTP 方法、路径、状态码等

七、查看服务依赖

点击顶部菜单 "依赖",可看到服务调用关系图,包括:

  • yudao-server 与数据库、Redis 等服务依赖

  • 调用频率与错误率

八、生成测试流量

为了让 Zipkin 捕获数据,可以调用服务接口:

复制代码
curl http://localhost:48080/admin-api/system/auth/sms-login

刷新 Zipkin 页面,即可看到新的追踪记录。

九、总结

通过以上步骤,Spring Boot 单体服务就能快速接入 Zipkin 链路追踪:

  • 快速定位慢请求和性能瓶颈

  • 可视化调用关系

  • 支持分布式和单体应用

对于生产环境,可以调整采样率和 Zipkin 存储方式(如 MySQL、Elasticsearch),以满足性能和存储需求。

相关推荐
艾莉丝努力练剑10 小时前
【AI大模型接入SDK】Gemini模型接入知识体系
java·开发语言·网络·人工智能·网络协议·学习·http
云运维笔记10 小时前
Zabbix 分布式监控搭建实战:基于 Proxy 实现 MySQL、Java、Nginx 监控
java·mysql·zabbix
IT毕设实战小研10 小时前
基于大数据的WTA职业网球赛事演变与竞技格局数据可视化分析
大数据·后端·爬虫·python·信息可视化·课程设计
zhanghaha131410 小时前
Python进阶教程:28_queue 队列模块 零基础超详细教程
java·开发语言·python
司小豆10 小时前
第七课:DeepSeek Harness 服务与依赖注入
java·服务器·开发语言·github·ai编程
IT_陈寒10 小时前
Java字符串判等踩坑记:==和equals真的不能乱用
前端·人工智能·后端
许彰午10 小时前
24-MyBatisHelper与autoCount
java·低代码·架构
CRMEB系统商城10 小时前
汽车养护连锁的数字化底座CRMEB 多门店系统实战方案
java·开发语言·小程序·开源·汽车
小马过河R10 小时前
微信小程序自定义登录态维护:从入门到生产级落地
后端·微信小程序·小程序·架构·登录态
学编程就要猛11 小时前
使用Spring AI配置聊天大模型实现人机交互(初阶)
java·spring ai·advisor·chatclient·chatmodel