本文为博主原创,转载请注明出处

1.Zipkin 与 Sleuth 简介

  zipkin 的官网地址:

https://zipkin.io/

  Zipkin 和 Sleuth 都是由 Twitter 开源的一套用于分布式系统的应用监控工具,它们的主要用途是帮助开发者理解系统的行为,以便更好地优化系统。

Zipkin是一个分布式追踪系统,它可以帮助开发者理解服务之间的调用关系,以及每个服务的性能。Zipkin的基础架构包括四个核心组件:

  • Collector:收集器组件,主要用于处理从外部系统发送过来的跟踪信息,将这些信息转换为Zipkin内部处理的Span格式,以支持后续的存储、分析、展示等功能。

  • Storage:存储组件,主要对处理收集器接收到的跟踪信息,默认会将这些信息存储在内存中,我们也可以修改此存储策略,通过使用其他存储组件将跟踪信息存储到数据库中。

  • RESTful API:API组件,主要用来提供外部访问接口。比如给客户端展示跟踪信息,或是外接系统访问以实现监控等。

  • UI:基于API组件实现的上层应用。通过UI组件用户可以方便而有直观地查询和分析跟踪信息。

Zipkin的信息默认是存储在内存中,服务端一旦重启信息将会丢失,但是Zipkin提供了可插拔式的存储。Zipkin支持以下四种存储方式:

  • 内存:服务重启将会失效,不推荐

  • MySQL:数据量越大性能较低

  • Elasticsearch:主流的解决方案,推荐使用

  • Cassandra:技术太牛批,用的人少,自己选择,不过官方推荐

Sleuth是一个用于在基于Spring Cloud的应用中实现分布式追踪的库。Sleuth可以自动收集应用的调用链数据,并将这些数据发送给Zipkin

  在Spring Cloud中,我们可以采用SleuthZipkin来实现全链路追踪,Sleuth负责采集链路信息,Zipkin负责处理展示这些信息。

2.spring cloud项目使用

  在Java项目中使用ZipkinSleuth,需要在项目中添加SleuthZipkin的依赖,然后在配置文件中启用SleuthZipkin。以下是一个使用Maven添加SleuthZipkin依赖的例子:

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

  在配置文件中,需要启用 Sleuth 和 Zipkin ,并指定 Zipkin 的服务地址。以下是一个使用 application.properties配置文件启用 Sleuth 和 Zipkin 的例子:

spring.zipkin.baseUrl=http://localhost:9411/
spring.sleuth.sampler.probability=1.0

  在这个配置中,spring.zipkin.baseUrlZipkin服务的地址,spring.sleuth.sampler.probability是采样率,用于控制Sleuth收集跟踪信息的频率。

  在Spring Cloud中,SleuthZipkin可以帮助我们实现全链路追踪。在使用这两个工具的过程中,我们不需要在代码中写链路追踪相关的功能接入,这是因为Sleuth会自动收集应用的调用链数据,并将这些数据发送给Zipkin

3.zipkin 接入 Elasticsearch

  在结合Elasticsearch使用时,你需要在Zipkin的配置文件中指定存储类型为Elasticsearch,并提供Elasticsearch的连接信息。以下是一个使用Elasticsearch作为存储的Zipkin配置文件的例子:

  1.Zipkin 启动时只需要指定好 Elasticsearch 连接信息即可。如果是通过 jar 包运行,则执行如下命令:

java -jar zipkin-server-2.19.3-exec.jar --STORAGE_TYPE=elasticsearch --ES_HOSTS=192.168.60.133:9200

  2. 如果通过 Docker 镜像运行,则执行如下命令:

docker run --name zipkin -d -p 9411:9411 -e STORAGE_TYPE=elasticsearch -e ES_HOSTS=192.168.60.133:9200 openzipkin/zipkin

  3. Docker Compose 进行启动

services:
zipkin:
image: openzipkin/zipkin
container_name: zipkin
environment:
- STORAGE_TYPE=elasticsearch
- ES_HOSTS=192.168.60.133:9200
#- RABBIT_ADDRESSES=192.168.60.133:5672
#- RABBIT_USER=hangge
#- RABBIT_PASSWORD=123
ports:
- 9411:9411

4.链路追踪过程  

  以下是SleuthZipkin的工作过程:

  1. 当一个请求到达系统的入口时,Sleuth会创建一个唯一ID(traceId),这个traceId会在服务之间传递,直到请求的返回,那么就可以使用这个traceId将整个请求串联起来,形成一条完整的链路。

  2. Sleuth会记录每个服务调用的开始时间(cs,Client Send)和结束时间(cr,Client Received),以及服务端接受请求的时间(sr,Server Received)和服务端处理完毕准备发送到客户端的时间(ss,Server Send)。通过这些时间戳,我们可以统计服务调用的耗时。

  3. Sleuth会将这些数据作为Span(基本的工作单元)发送给Zipkin

  4. Zipkin会接收到Sleuth发送过来的Span,然后将这些Span按照traceId进行排序,形成一个完整的调用链。

  5. 我们可以通过Zipkin的Web界面查看这个调用链,以及每个服务的耗时等信息。

5.启动zipkin

  zipkin-server最新版本下载地址:

https://repo1.maven.org/maven2/io/zipkin/zipkin-server/2.23.2/zipkin-server-2.23.2-exec.jar

  Zipkin server是一个java1.8+服务,打包为一个可执行jar。

java -jar zipkin-server-2.23.2-exec.jar

  浏览器打开地址进入到Zipkin监控页面:

http://127.0.0.1:9411/

zipkin 与 sleuth 实现链路追踪的更多相关文章

  1. Springboot+Dubbo使用Zipkin进行接口调用链路追踪

    Zipkin介绍: Zipkin是一个分布式链路跟踪系统,可以采集时序数据来协助定位延迟等相关问题.数据可以存储在cassandra,MySQL,ES,mem中.分布式链路跟踪是个老话题,国内也有类似 ...

  2. Spring Cloud Sleuth服务链路追踪(zipkin)(转)

    这篇文章主要讲述服务追踪组件zipkin,Spring Cloud Sleuth集成了zipkin组件. 一.简介 Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案, ...

  3. Spring Cloud(十三):Spring Cloud Sleuth服务链路追踪(zipkin)(转)

    这篇文章主要讲述服务追踪组件zipkin,Spring Cloud Sleuth集成了zipkin组件. 一.简介 Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案, ...

  4. spring cloud 2.x版本 Sleuth+Zipkin分布式链路追踪

    前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 本文基于前两篇文章eureka-server.eureka-client.eureka ...

  5. springCloud的使用08-----服务链路追踪(sleuth+zipkin)

    sleuth主要功能是在分布式系统中提供追踪解决方案,并且兼容支持了zipkin(提供了链路追踪的可视化功能) zipkin原理:在服务调用的请求和响应中加入ID,表明上下游请求的关系. 利用这些信息 ...

  6. 分布式链路追踪之Spring Cloud Sleuth+Zipkin最全教程!

    大家好,我是不才陈某~ 这是<Spring Cloud 进阶>第九篇文章,往期文章如下: 五十五张图告诉你微服务的灵魂摆渡者Nacos究竟有多强? openFeign夺命连环9问,这谁受得 ...

  7. 带入gRPC:分布式链路追踪 gRPC + Opentracing + Zipkin

    在实际应用中,你做了那么多 Server 端,写了 N 个 RPC 方法.想看看方法的指标,却无处下手? 本文将通过 gRPC + Opentracing + Zipkin 搭建一个分布式链路追踪系统 ...

  8. 个推基于 Zipkin 的分布式链路追踪实践

    作者:个推应用平台基础架构高级研发工程师 阿飞   01业务背景   随着微服务架构的流行,系统变得越来越复杂,单体的系统被拆成很多个模块,各个模块通过轻量级的通信协议进行通讯,相互协作,共同实现系统 ...

  9. 带你十天轻松搞定 Go 微服务系列(九、链路追踪)

    序言 我们通过一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下: 环境搭建 服务拆分 用户服务 产品服务 订单服务 支付服务 RPC 服务 Auth 验证 ...

  10. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十二):链路追踪(Sleuth、Zipkin)

    在线演示 演示地址:http://139.196.87.48:9002/kitty 用户名:admin 密码:admin 技术背景 在微服务架构中,随着业务发展,系统拆分导致系统调用链路愈发复杂,一个 ...

随机推荐

  1. Selenium浏览器属性、提取数据

    浏览器属性 在使用selenium过程中,实例化driver对象后,driver对象有一些常用的属性和方法 driver.page_source 当前标签页浏览器渲染之后的网页源代码. driver. ...

  2. Android WebView 缓存处理

    加载html时,会在data/应用下生成database和cache两个文件夹:请求的url存在webviewcache.db下面,url的内容保存在webviewCache下面, Webview的两 ...

  3. minio集群部署

    minio集群部署 1.说明: 安装前需要再添加一个磁盘后将磁盘挂载到/opt/minio目录,minio集群部署需要独占磁盘分区,不能使用文件夹代替. 运行分布式 MinIO 实例的服务器时间差不应 ...

  4. 2023.3 Idea配置Tomcat环境

    tomcat配置 下载tomcat 先到官网(按住Ctrl再左键点击直接打开官网)下载64位的tomcat,网速慢就用魔法下 创建项目.模块 打开idea(我用的是最新的idea的专业版,ui有点变化 ...

  5. 单位换算详解:bit、Byte、bps、Bps、pps、Gbps的单位详细说明及换算

    当谈论计算机存储和数据传输时,"bit"(比特)和"Byte"(字节)是两个常见的术语,它们具有不同的含义和用途. 位(bit):"位"来自 ...

  6. .net Core中间件实战

    新建一个ASP.NET Core Web Application 项目选中空模板 然后为项目添加一个Microsoft.Extensions.Logging.Console 由于我用的.net cor ...

  7. 前世今生:Kubernete 是如何火起来的?

    本课时,我们就开始正式进入 Kubernetes 的学习,或许你已经听过或简单了解过 Kubernetes,它是一款由 Google 开源的容器编排管理工具,而我们想要深入地掌握 Kubernetes ...

  8. [西湖论剑2023-Misc] 复现

    MISC mp3 题目 我的解答: 010发现mp3藏有png图片 卡里分离得到图片 foremost cipher.mp3 zsteg发现里面有压缩包 提取出来 zsteg -e b1,r,lsb, ...

  9. nginx在代理到upstream时转换http1.1为http1.0,长连接转为短连接

    nginx在代理到upstream时的默认行为 最近准备用openresty替换nginx,替换的效果当然是需要保证效果和nginx一致,不然可能就会导致线上在用的服务出现问题. 替换成openres ...

  10. 【福利活动】华为云“上云之路”征文大赛开启,FreeBuds3无线耳机等重磅好礼送不停

    各位关注华为云的开发者们,达嘎猴啊~ 今天带给你们一个好消息,大家心心念念的华为云"上云之路"征文大赛已经正式开启啦. 举办本次华为云"上云之路"征文大赛的目的 ...