微服务常用日志追踪方案: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.pswp.cn/pingmian/83375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R语言基础| 创建数据集

在R语言中,有多种数据类型,用以存储和处理数据。每种数据类型都有其特定的用途和操作函数,使得R语言在处理各种数据分析任务时非常灵活和强大: 向量(Vector): 向量是R语言中最基本的数据类型,它…

nssctf第二题[SWPUCTF 2021 新生赛]简简单单的逻辑

这是题目&#xff0c;下载后得到一个python文件,打开 解读代码&#xff1a; for i in range(len(list)):key (list[i]>>4)((list[i] & 0xf)<<4)result str(hex(ord(flag[i])^key))[2:].zfill(2)list[i]>>4&#xff1a;从列表中取数字同时高4位向右位…

mysql(十五)

目录 子查询 1.准备工作 2--创建表格 3--插入数据 2.where 子查询单列单个数据 格式 查询 3.where 子查询单列多个数据(in) 格式 查询 使用子查询 4.from 多行多数据 格式 查询 子查询 将select的查询的返回结果 当成另外一个selet语句的内容去使用。 子查询放在()里面 注意…

【HarmonyOS 5】鸿蒙Taro跨端框架

‌Taro跨端框架‌ 支持React语法开发鸿蒙应用&#xff0c;架构分为三层&#xff1a; ArkVM层运行业务代码和React核心TaroElement树处理节点创建和属性绑定TaroRenderNode虚拟节点树与上屏节点一一对应 import { Component } from tarojs/taro export default class MyCompon…

华为OD机试真题——会议接待 /代表团坐车(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 200分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 本文收录于专栏:《2025华为OD真题目录+全流程解析/备考攻略/经验分享》 华为OD机试真题《会议…

C语言---动态内存管理、柔性数组

一、malloc和free 1、变长数组 变长数组是指数组的大小可以通过变量来指定。 在c99以及之后的标准中&#xff1a; #include<stdio.h> int main() { int n0; scanf("%d",&n); } 2、malloc和free 这个函数向内存申请一块连续可用的空间&#xff0c;并返…

WEBSTORM前端 —— 第3章:移动 Web —— 第4节:移动适配-VM

目录 一、适配方案 二、VM布局 ​编辑 三、vh布局 四、案例—酷我音乐 一、适配方案 二、VM布局 三、vh布局 四、案例—酷我音乐

Dynamics 365 Business Central AI Sales Order Agent Copilot

#AI Copilot# #D365 BC 26 Wave# 最近很多客户都陆续升级到 Dynamics 365 Business Central 26 wave, Microsoft 提供一个基于Copilot 的Sales Order Agent&#xff0c;此文将此功能做个介绍. Explorer: 可以看到26版本上面增加了这样一个新图标。 Configuration: 配置过程…

【harbor】--配置https

使用自建的 CA 证书来自签署和启用 HTTPS 通信。 &#xff08;1&#xff09;生成 CA认证 使用 OpenSSL 生成一个 2048位的私钥这是 自建 CA&#xff08;证书颁发机构&#xff09; 的私钥&#xff0c;后续会用它来签发证书。 # 1创建CA认证 cd 到harbor [rootlocalhost harbo…

Selenium基础操作方法详解

Selenium基础操作方法详解&#xff1a;从零开始编写自动化脚本&#xff08;附完整代码&#xff09; 引言 Selenium是自动化测试和网页操作的利器&#xff0c;但对于新手来说&#xff0c;掌握基础操作是成功的第一步。本文将手把手教你使用Selenium完成浏览器初始化、元素定位、…

python同步mysql数据

python写了一个简单的mysql数据同步脚本,只作为学习练习,大佬勿喷 # -*- coding: utf-8 -*- """ Time:2025/5/29 14:38 Auth:HEhandsome """ import pymysql from pymysql import Connectclass Mysql:def __init__(self):#源数据库self.sou_hos…

手撕Java+硅基流动实现MCP服务器教程

手撕Java硅基流动实现MCP服务器教程 一、MCP协议核心概念 MCP是什么 MCP 是 Anthropic (Claude) 主导发布的一个开放的、通用的、有共识的协议标准。 ● MCP 是一个标准协议&#xff0c;就像给 AI 大模型装了一个 “万能接口”&#xff0c;让 AI 模型能够与不同的数据源和工…

.net consul服务注册与发现

.NET中Consul服务注册与发现的技术实践 在微服务架构中&#xff0c;服务的注册与发现是至关重要的环节&#xff0c;它能帮助各个服务之间实现高效的通信和协作。Consul作为一款功能强大的工具&#xff0c;为我们提供了优秀的服务注册与发现解决方案。今天&#xff0c;我们就来…

大数据量下的数据修复与回写Spark on Hive 的大数据量主键冲突排查:COUNT(DISTINCT) 的陷阱

背景与问题概述 这一周&#xff08;2025-05-26-2026-05-30&#xff09;我在搞数据拟合修复优化的任务&#xff0c;有大量的数据需要进行数据处理及回写&#xff0c;大概一个表一天一分区有五六千万数据&#xff0c;大约一百多列的字段。 具体是这样的我先取档案&#x…

基于 AUTOSAR 的域控产品软件开发:从 CP 到 AP 的跨越

基于 AUTOSAR 的域控产品软件开发&#xff1a;从 CP 到 AP 的跨越 一、AUTOSAR AP 架构解析&#xff1a;面向智能汽车的自适应框架 &#xff08;一&#xff09;引言 随着汽车智能化向 L3 演进&#xff0c;传统 AUTOSAR CP&#xff08;经典平台&#xff09;在实时性、动态性和…

Nacos 配置管理案例:nacos-spring-cloud-config-example详解

一、结构说明&#xff1a;基于Spring Cloud Alibaba的微服务示例 nacos-spring-cloud-config-example : 服务提供者 二、技术栈&#xff1a;Spring BootSpring CloudSpring Cloud Alibaba Nacos Actuator&#xff08;可选&#xff1a;监控&#xff09; 三、使用环境 安装…

BUUCTF[ACTF2020 新生赛]Include 1题解

BUUCTF[ACTF2020 新生赛]Include 1题解 题目分析&#xff1a;知识准备&#xff1a;php://filter 过滤器参数说明常用过滤器功能对照表 开始解题&#xff1a;原理解析构造payload 总结 题目分析&#xff1a; 生成靶机&#xff0c;打开网址&#xff0c;查看源码&#xff0c;抓包…

vscode + cmake + ninja+ gcc 搭建MCU开发环境

vscode cmake ninja gcc 搭建MCU开发环境 文章目录 vscode cmake ninja gcc 搭建MCU开发环境1. 前言2. 工具安装及介绍2.1 gcc2.1.1 gcc 介绍2.1.2 gcc 下载及安装 2.2 ninja2.2.1 ninja 介绍2.2 ninja 安装 2.3 cmake2.3.1 cmake 介绍2.3.2 cmake 安装 2.4 VScode 3. 上手…

九(1). 引用作为函数参数的使用

引用作为参数使用 在 C 中&#xff0c;引用作为函数参数是一种高效且灵活的参数传递方式&#xff0c;它避免了拷贝开销&#xff0c;同时允许函数直接操作原始数据。 以下是关于引用作为参数的详细使用指南和最佳实践&#xff1a; 1. 引用作为参数的基本用法 (1) 普通引用&…

Linux多路TTS混音播放:让多个语音同时清晰可听

Linux多路TTS混音播放:让多个语音同时清晰可听 为什么需要多路混音播放?技术原理概述第一步:配置ALSA dmix混音插件为什么需要dmix?具体配置步骤第二步:生成TTS语音文件为什么需要格式转换?Python生成脚本第三步:实现多路同时播放播放器设计原理Python实现代码多路同时播…