当前位置: 首页 > article >正文

微服务常用日志追踪方案:Sleuth + Zipkin + ELK

在微服务架构中,一个用户请求往往需要经过多个服务的协同处理。为了有效追踪请求的完整调用链路,需要一套完整的日志追踪方案。Sleuth + Zipkin + ELK 组合提供了完整的解决方案

  • Sleuth:生成和传播追踪ID
  • Zipkin:收集、存储和可视化追踪数据
  • ELK:集中存储和检索业务日志
  • MDC:实现日志与追踪上下文的关联

1.组件介绍

组件一:Spring Cloud Sleuth

自动生成唯一的TraceID和SpanID,通过HTTP头或消息中间件在服务间传播这些ID,与MDC集成,将追踪信息注入日志

spring:sleuth:sampler:probability: 1.0 # 采样率,1.0表示100%采样propagation:type: B3 # 使用Zipkin的B3传播协议

组件二:Zipkin

收集各服务上报的追踪数据,存储调用链路信息,提供可视化界面展示调用链路和耗时

服务 → 上报数据 → Zipkin Collector → Storage → Zipkin UI

存储选项:开发环境使用内存,正式环境推荐配置为Elasticsearch

spring:zipkin:base-url: http://zipkin-server:9411sender:type: web # 使用HTTP方式上报

组件三:ELK Stack (Elasticsearch + Logstash + Kibana)

Elasticsearch用于存储和索引日志数据,Logstash用于收集、过滤和转发日志,Kibana用于可视化查询和分析日志。确保日志中包含TraceID,便于通过TraceID关联业务日志和调用链路

2.完整请求链路示例

  • 用户请求到达服务A,生成TraceID: abc123,生成SpanID: def456

  • 服务A调用服务B,携带HTTP头: X-B3-TraceId=abc123, X-B3-ParentSpanId=def456,服务B生成新SpanID: ghi789

  • 日志输出

服务A日志: [abc123,def456,order-111] INFO ... 创建订单开始
服务B日志: [abc123,ghi789,order-111] INFO ... 库存扣减开始
  • 调用链路信息上报Zipkin,业务日志发送到ELK
  • 通过Zipkin发现异常服务,通过TraceID在ELK中查找相关日志,通过业务ID追踪特定业务对象全链路
http://www.lryc.cn/news/2402871.html

相关文章:

  • API是什么意思?如何实现开放API?
  • 12.6Swing控件4 JSplitPane JTabbedPane
  • Python训练第四十六天
  • C++编程——关于比较器的使用
  • 第2天:认识LSTM
  • 自动化提示生成框架(AutoPrompt)
  • 两轮自平衡机器人建模、LQR控制与仿真分析
  • 在NLP文本处理中,将字符映射到阿拉伯数字(构建词汇表vocab)的核心目的和意义
  • 中国首套1公里高分辨率大气湿度指数数据集(2003~2020)
  • 计算机视觉顶刊《International Journal of Computer Vision》2025年5月前沿热点可视化分析
  • python学习打卡day45
  • JAVA元编程
  • Verilog编程技巧01——如何编写三段式状态机
  • 智启未来:当知识库遇见莫奈的调色盘——API工作流重构企业服务美学
  • java教程笔记(十一)-泛型
  • JUnit​​ 和 ​​Mockito​​ 的详细说明及示例,涵盖核心概念、常用注解、测试场景和实战案例。
  • 【Go语言基础【7】】条件语句
  • 【Python 算法零基础 4.排序 ⑪ 十大排序算法总结】
  • 解决神经网络输出尺寸过小的实战方案
  • Python备忘
  • 如何在 Windows 11 中永久更改默认浏览器:阻止 Edge 占据主导地位
  • 量子比特实现方式
  • 智慧水务发展迅猛:从物联网架构到AIoT系统的跨越式升级
  • 1、cpp实现Python的print函数
  • 【Linux基础知识系列】第十四篇-系统监控与性能优化
  • 云原生思维重塑数字化基座:从理念到实践的深度剖析
  • Animate On Scroll 用于在用户滚动页面时实现元素的动画效果
  • Java高级 | 【实验五】Spring boot+mybatis操作数据库
  • [蓝桥杯]搭积木
  • 在MATLAB中使用自定义的ROS2消息