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

微服务常用日志追踪方案: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追踪特定业务对象全链路

相关文章:

  • 【Zephyr 系列 3】多线程与调度机制:让你的 MCU 同时干多件事
  • 【数学 逆序对 构造】P12386 [蓝桥杯 2023 省 Python B] 混乱的数组|普及+
  • 深度剖析:AI 建站的现状、局限与未来展望-AI编程建站实战系列预告优雅草卓伊凡
  • demo_win10配置WSL、DockerDesktop环境,本地部署Dify,ngrok公网测试
  • 什么是 CPU 缓存模型?
  • NVMe IP现状扫盲
  • azure devops 系列 - 常用的task
  • MPTCP 聚合吞吐
  • 图论刷题1
  • Qt OpenGL 实现交互功能(如鼠标、键盘操作)
  • 【Linux网络】传输层TCP协议
  • 设计模式——访问者设计模式(行为型)
  • docker运行程序Killed异常排查
  • AlmaLinux OS 10 正式发布:兼容 RHEL 10 带来多项技术革新
  • 页岩油开采的阶段
  • HealthBench医疗AI评估基准:技术路径与核心价值深度分析(下)
  • 计算机视觉---YOLOv6
  • 20250602在荣品的PRO-RK3566开发板的Android13下的uboot启动阶段配置BOOTDELAY为10s
  • neo4j 5.19.0两种基于向量进行相似度查询的方式
  • UE5 2D地图曝光太亮怎么修改
  • 个人网站建设的要点/怎样在平台上发布信息推广
  • 长沙本地网站推广/b2b网站免费推广
  • 静态网站建设/网店推广是什么
  • 邢台网站建设信息/西安网站建设维护
  • 新闻网站原创内容建设/进入百度app
  • 网站建设智能优化/企业网站搜索引擎推广方法