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

SpringCloudSleuth+Zipkin 整合及关键包汇总

背景

整合了一下 SpringCloudSleuth + Zipkin,本来是很简单的东西,但是最终导出依赖包时没注意,导致目标服务始终没有被纳入 Zipkin 的链路追踪中,本文记录这个过程及关键依赖包。

部署zipkin

官网下载最新的 zipkin 可执行包,重命名为 zipkin.jar ,然后编写一个启动脚本 start.sh ,内容如下:

nohup java -jar zipkin.jar >/dev/null 2>&1 &

以默认配置直接启动该组件。

整合过程

SpringCloud 项目中整合 Sleuth + Zipkin ,只需要添加两个依赖:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId><version>3.0.3</version>
</dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-sleuth-zipkin</artifactId><version>3.0.3</version>
</dependency>

sleuth 直接用默认配置,然后为 zipkin 配置 base-url 属性:

spring:zipkin:sender:type: webbase-url: http://IP:9411/

关键依赖包

目标服务是通过抽取公共 jar 的方式部署的,对本地应用打包后导出的第三方 jar 包进行分析,找出 sleuth + zipkin 依赖的文件列表:

admin@MyPc libdep % ll |awk '{print $NF}'|grep -E "sleuth|zipkin"
spring-cloud-sleuth-api-3.0.3.jar
spring-cloud-sleuth-autoconfigure-3.0.3.jar
spring-cloud-sleuth-brave-3.0.3.jar
spring-cloud-sleuth-instrumentation-3.0.3.jar
spring-cloud-sleuth-zipkin-3.0.3.jar
spring-cloud-starter-sleuth-3.0.3.jar
zipkin-2.23.0.jar
zipkin-reporter-2.16.1.jar
zipkin-reporter-brave-2.16.1.jar
zipkin-reporter-metrics-micrometer-2.16.1.jar
zipkin-sender-activemq-client-2.16.1.jar
zipkin-sender-amqp-client-2.16.1.jar
zipkin-sender-kafka-2.16.1.jar

因为 Sleuth 整合只引入了这两个依赖,以为就只需要上面这些 jar 包,将其他微服务的依赖路径加上上面文件所在的路径后,Zipkin 里面一直没有想过链路信息。纠结了好一会儿!为什么呢?

本地 IDEA 运行的服务有链路追踪,目标服务只引入第三方 jar ,没有。网络上介绍的用法确实很简单,只加入依赖、什么都是默认配置,就可以了。猜想还是依赖包的问题,用 maven 打开依赖试图发现有一堆 brave- 开头的 jar :
在这里插入图片描述

再用命令筛选出来:

admin@MyPc % ll |awk '{print $NF}'|grep -E "^brave-"      
brave-5.13.2.jar
brave-context-slf4j-5.13.2.jar
brave-instrumentation-http-5.13.2.jar
brave-instrumentation-httpasyncclient-5.13.2.jar
brave-instrumentation-httpclient-5.13.2.jar
brave-instrumentation-jms-5.13.2.jar
brave-instrumentation-kafka-clients-5.13.2.jar
brave-instrumentation-kafka-streams-5.13.2.jar
brave-instrumentation-messaging-5.13.2.jar
brave-instrumentation-mongodb-5.13.2.jar
brave-instrumentation-rpc-5.13.2.jar
brave-instrumentation-spring-rabbit-5.13.2.jar
brave-propagation-aws-0.21.3.jar

看后缀,筛掉没有用到的,最终确认了六个必须的:

brave-5.13.2.jar
brave-context-slf4j-5.13.2.jar
brave-instrumentation-http-5.13.2.jar
brave-instrumentation-httpasyncclient-5.13.2.jar
brave-instrumentation-httpclient-5.13.2.jar
brave-propagation-aws-0.21.3.jar

加上它们后目标服务都纳入了 Zipkin 管理了:
在这里插入图片描述

启示录

看似只加入两个依赖,其实还有很多其他依赖,没有细看导致很简单的一个整合问题,纠缠了好半天。

现用现学得玩了一下 Linux 命令,汇总如下

  1. grep -rl 目标字符串 目标目录l 参数只输出文件名称。
  2. 抽取 Sleuth 依赖包:ll |awk '{print $NF}'|grep -E "sleuth|zipkin"|xargs -I 参数别名 mv 参数别名 目标目录
  3. 批量编辑文件:sed -i s/old/new/g 文件名称,特殊字符 . \ 等都需要转义。
  4. if [ -z 变量 ] 括号两边必须有空格脚本才会正确。
  5. sleuth + zipkin 的核心包是 brave,我以为只是 sleuth 和 zipkin 的包呢。

最后还有一点,就是 Sleuth 之所以能跟踪链路,底层是 AOP 代理。有一个模块中使用了 @Scheduled 定时任务注解在一个 private 方法上导致启动报异常:

but cannot be delegated to target bean.Switch its visibility to package or protected.

解决办法是:

  1. 改为 public 、protected、package 修饰方法。
  2. spring.sleuth.scheduled.enabled=false,禁用系统的处理逻辑,这样就追踪不到后台任务的服务调用链了。

相关文章:

SpringCloudSleuth+Zipkin 整合及关键包汇总

背景 整合了一下 SpringCloudSleuth Zipkin&#xff0c;本来是很简单的东西&#xff0c;但是最终导出依赖包时没注意&#xff0c;导致目标服务始终没有被纳入 Zipkin 的链路追踪中&#xff0c;本文记录这个过程及关键依赖包。 部署zipkin 官网下载最新的 zipkin 可执行包&a…...

腾讯面试笔试题2023.11.30

给定一个由整数组成的非空数组所表示的非负整数如[1,2,3]&#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外&#xff0c;这个整数不会以零开头。 &#xff08;要求只能操作数组&#xff0c;不…...

cesium 融合视频

0 如果是文件&#xff0c;那相当的简单 和untiy 一样&#xff0c;可以添加材质后&#xff0c;将image 直接给材质赋值上&#xff0c;其中abcd 是四个点&#xff0c;这四个点要经过计算 <video id"video" style"display:none" controls loop autoplay&…...

微信小程序踩坑记录

一、引言 作者在开发微信小程序《目的地到了》的过程中遇到过许多问题&#xff0c;这里讲讲一些技术和经验问题。 基本目录机构&#xff1a; 二、问题 1、定位使用 获取定位一定要在app.json里面申明&#xff0c;不然是没办法获取定位信息的 "requiredPrivateInfos"…...

H5 uniapp 接入wx sdk

uniapp因为要兼容小程序等&#xff0c;会重写wx对象&#xff0c;导致引入的jweixin-1.6.0.js中对象不生效。 综合网络资料&#xff0c;有两种解决方案&#xff1a; 一&#xff0c;通过npm工具引入 npm install jweixin-module --save 实际上是借用了wx的另一个对象jWeixin …...

ubuntu离线安装包

方便快捷方式 查看依赖 apt-cache depends 包名(gcc或language-pack-zh-hans)下载deb及其依赖包 # 下载.deb包到指定目录 cd /var/cache/apt/archives apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-repl…...

电脑如何录音?适合初学者的详细教程

“电脑怎么录音呀&#xff1f;参加了一个学校举办的短视频大赛&#xff0c;视频拍摄都很顺利&#xff0c;音乐却出了问题&#xff0c;朋友说可以用电脑录制一段音乐应付一下&#xff0c;可是我不会操作&#xff0c;有哪位大佬教教我&#xff01;” 声音是一种强大的媒介&#…...

从零开始的C++(二十)

哈希&#xff1a; 用于unorder_map和unorder_set&#xff0c;其本身是一种思想&#xff0c;即通过一个值利用某种算法去映射到另一个值上。利用哈希思想具体实现的是哈希表。 哈希通常函数&#xff1a;插入和查找 1.插入&#xff1a;用某种算法算出插入值对应的插入下标。 …...

shell编程系列(8)-使用sed处理文本

文章目录 引言sed用法详解在文本中定位打印文本替换文本删除文本新增文本 结语 引言 在日常工作学习中我们都会遇到要编辑文本的场景&#xff0c;例如我们要用vim或者nano等命令去编辑代码&#xff0c;处理文本文件等&#xff0c;这些命令的特点都是需要我们进行交互式的实时处…...

NDK是什么?有什么用?需要掌握什么技术栈?

文章目录 NDK使用NDK的优点使用NDK需要掌握的知识C/C的编译原理C/C基本语法和编写能力原生共享库&#xff1a;原生静态库&#xff1a;Java 原生接口 (JNI)&#xff1a;应用二进制接口 (ABI)&#xff1a; CMakeLLDB参考 NDK NDK&#xff08;Native Development Kit&#xff0c;…...

《代码长寿经:程序员养生指南》

嘿&#xff0c;代码海洋的航行者们&#xff01;你们是否有过熬夜加班后&#xff0c;头发渐渐稀疏、眼镜度数直线上升&#xff0c;还不小心多了几斤“编码赘肉”的经历&#xff1f;程序员这个行业&#xff0c;似乎人均亚健康&#xff0c;有人戏称程序员的职业发展路径是&#xf…...

统计素数并求和(Python)

题目描述 统计素数并求和 本题要求统计给定整数 M M M 和 N N N 区间内素数的个数并对它们求和。 输入格式: 输入在一行中给出两个正整数 M M M 和 N ( 1 ≤ M ≤ N ≤ 500 ) N(1≤M≤N≤500) N(1≤M≤N≤500)。 输出格式: 在一行中顺序输出 M M M 和 N N N 区间内…...

新建的springboot项目中application.xml没有绿色小叶子(不可用)

经常有朋友会遇到新建了一个springboot项目&#xff0c;发现为啥我创建的application.xml配置文件不是绿色的&#xff1f;&#xff1f;&#xff1f; 下面教大家如何解决&#xff0c;这也是博主在做测试的时候遇到的&#xff1a; 将当前位置application.xml删掉&#xff0c;重新…...

powershell获取微软o365 21v日志

0x00 背景 o365 21v为o365的大陆版本&#xff0c;主要给国内用户使用。微软提供了powershell工具和接口获取云上日志。微软o365国内的代理目前是世纪互联。本文介绍如何用powershell和配置证书拉取云上日志。 0x01 实践 第一步&#xff0c;ip权限开通&#xff1a; 由世纪互联…...

整体迁移SVN仓库到新的windows服务器

一、背景 公司原有的SVN服务器年代比较久远经常出现重启情况&#xff0c;需要把SVN仓库重新迁移到新的服务器上&#xff0c;在网上也搜到过拷贝Repositories文件直接在新服务器覆盖的迁移方案&#xff0c;但考虑到原有的操作系统和现有的操作系统版本不一致&#xff0c;SVN版本…...

D365 CRM Power Platform 后端开发概览

博主十年前写的后端技术文章大部分都out-of-date啦&#xff0c;有些东西还能在PP系统中继续沿用&#xff0c;大部分东西都变成old fashion了。 博主后续争取多找些时间&#xff0c;将之前的后端开发文档都翻新一遍&#xff0c;争取与时俱进&#xff0c;让它们还能继续使用下个…...

【Java 并发编程】进程线程、lock、设计模式、线程池...

博主&#xff1a;_LJaXi Or 東方幻想郷 专栏&#xff1a; Java | 从入门到入坟 Java 并发编程 并发编程多线程的入门类和接口线程组和线程优先级线程的状态及主要转化方法线程间的通信重排序和 happens-beforevolatilesynchronized 与锁CAS 与原子操作AQS计划任务Stream 并行计…...

【axios】拦截器:axios.interceptors.request.use|axios.interceptors.response.use

文章目录 概述设置拦截器Axios 拦截器的实现任务注册任务编排任务调度 来源 概述 axios有请求拦截器&#xff08;request&#xff09;、响应拦截器&#xff08;response&#xff09;、axios自定义回调处理&#xff08;这里就是我们常用的地方&#xff0c;会将成功和失败的回调…...

webrtc兼容android4.x的一次探索

背景是我们有一个四年前的应用&#xff0c;该应用TargetVersion设定为16&#xff0c;这个应用四年前用了m70版本的webrtc。最近我升级到webrtc-m110&#xff0c;发现各种崩溃&#xff0c;把崩溃修好之后&#xff0c;发现黑屏了。为了处理黑屏&#xff0c;故有本文。 黑屏问题表…...

Kafka的存储机制和可靠性

文章目录 前言一、Kafka 存储选择二、Kafka 存储方案剖析三、Kafka 存储架构设计四、Kafka 日志系统架构设计4.1、Kafka日志目录布局4.2、Kafka磁盘数据存储 五、Kafka 可靠性5.1、Producer的可靠性保证5.1.1、kafka 配置为 CP(Consistency & Partition tolerance)系统5.1.…...

数据库时间类型之间的转换魔法

解锁时间数据的魔法 时间&#xff0c;是数据库中一个充满魔法的复杂表现形式。在这篇博客中&#xff0c;我们将探讨在数据库中时间戳&#xff08;timestamp&#xff09;、日期&#xff08;date&#xff09;、日期时间&#xff08;datetime&#xff09;和字符串之间的转换技巧&…...

conda和pip常用命令整理

文章目录 一、conda常用指令1. 更新2 .环境管理3. 包管理 二、pip常用命令1. 常用命令2. 国内镜像 一、conda常用指令 1. 更新 conda --version 或 conda -V #查看conda版本 conda update conda # 基本升级 conda update anaconda # 大的升级 conda upd…...

英语翻译小软件 ← Python实现

【程序描述】 利用Python实现一个英语翻译小软件。 ★ 当输入一个英文单词后&#xff0c;输出对应的中文意思。 ★ 当输入 q 时&#xff0c;退出程序。 ★ 当输入一个不存在的词条时&#xff0c;捕获异常&#xff0c;提示“No finding!”。【程序代码】 dict{&quo…...

将项目放到gitee上

参考 将IDEA中的项目上传到Gitee仓库中_哔哩哔哩_bilibili 如果cmd运行ssh不行的话&#xff0c;要换成git bash 如果初始化后的命令用不了&#xff0c;直接用idea项放右键&#xff0c;用git工具操作...

【机器视觉技术】:开创人工智能新时代

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; IT杂谈 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1; 前言&#x1f324;️ 机器视觉技术的实现☁️ 图像采集☁️ 图像处理☁️ 数据建模☁️应用展示…...

网易区块链,网易区块链赋能赣州脐橙数字藏品,数字指纹解决方案

目录 网易区块链 网易区块链赋能赣州脐橙数字藏品,助力革命老区三农之路 数字指纹解决方案 网易区块链 网易区块链成立于2017年,致力于Web3.0区块链技术的研发和应用。自主研发的区块链“天玄”引擎,在单链场景下支持每秒最高30万笔交易,单日可处理上链数据超10亿。 与…...

程序员如何兼职?

首先&#xff0c;写博客和制作短视频是一个好方法。想象一下&#xff0c;你是一个资深的程序员&#xff0c;而你的博客就像是一个个人课堂&#xff0c;帮助那些初入编程领域的人理解各种编程概念和技巧。你可以分享你的工作经验、解决问题的过程&#xff0c;甚至可以分享一些有…...

教育企业CRM选择技巧

教育行业的发展一波三折&#xff0c;要想在激烈的赛道脱颖而出&#xff0c;就需要有一套有效的CRM系统&#xff0c;来帮助教育机构提升招生效率、增加学员留存、提高教学质量。下面说说&#xff0c;教育企业选择CRM系统要具备的四大功能。 1、招生管理功能 教育机构的首要目标…...

算法:Java计算二叉树从根节点到叶子结点的最大路径和

要求从根节点到叶子结点的最大路径和&#xff0c;可以通过递归遍历二叉树来实现。对于二叉树中的每个节点&#xff0c;我们都可以考虑包含该节点的最大路径和。在递归的过程中&#xff0c;我们需要不断更新全局最大路径和。 具体的思路 递归函数设计&#xff1a; 设计一个递归函…...

袖珍可穿戴手持气象仪是什么?

随着科技的不断发展&#xff0c;我们身边的世界正在变得越来越智能化。近日&#xff0c;一款名为WX-SQ12可穿戴手持气象仪的科技新品引起了人们的广泛关注。这款气象仪不仅具有创新性的可穿戴设计&#xff0c;还具备强大的气象数据监测功能&#xff0c;让用户可以随时掌握天气变…...