Spring Cloud Alibaba 实战(十三) - Sleuth调用链监控
本文概要:大白话剖析调用链监控原理,然后学习Sleuth,Zipkin,然后将Sleuth整合Zipkin,最后学习Zipkin数据持久化(Elasticsearch)以及Zipkin依赖关系图
- 实战至此,基本功能已经全部实现

1 剖析调用链监控原理
如果我们的项目出现异常了,怎么办呢?
1.1 问题定位需求
◆ 跨微服务的API调用发生异常,要求快速定位(比如5分钟以内)出问题出在哪里,该怎么办?
◆ 跨微服务的API调用发生性能瓶颈,要求迅速定位(比如5分钟以内)出系统瓶颈,该怎么办?
对于这两种情况,传统方式很难解决,需要调用链监控工具排查(有点类似于Linux内核的调用栈日志哦)
调用链监控工具可谓分布式项目维护的必备工具!
1.2 监控的基本原理
- 譬如说,对于本项目,监控如下请求

- 定义如下4个时间节点

- 在DB中维护了一张自关联型数据trace表: 唯一标识,父spanid,服务名称,调用的API,四个时间节点的阶段,数据发生的时间戳

如此一来,正常情况下,一次调用,DB会生成四条数据,即可知道哪个阶段发生问题!
2 优雅地使用 Sleuth
2.1 何为 Sleuth

- 官方定位 : Sleuth是一 个Spring Cloud的分布式跟踪解决方案
讲人话就是调用链监控工具的客户端
2.2 术语条目
Span (跨度)
Sleuth的基本工作单元,它用一个64位的id唯一标识。
除ID外,span还包含其他数据,例如描述、时间戳事件、键值对的注解(标签)、span ID、span父ID等。
前面我们DB中的一条数据就是一个span
trace (跟踪)
一组span组成的树状结构称为trace
即DB中完整的四条数据
Annotation (标注)
● CS ( Client Sent客户端发送)
客户端发起一一个请求,该annotation描述了span的开始。
●SR ( Server Received服务器端接收)
服务器端获得请求并准备处理它。
●SS( Server Sent服务器端发送)
该annotation表明完成请求处理(当响应发回客户端时)。
●CR( Client Received客户端接收)
span结束的标识。客户端成功接收到服务器端的响应。
2.3 为用户中心整合Sleuth
- 添加依赖


然后直接启动服务即可
3 Zipkin搭建与整合
3.1 何为Zipkin
Zipkin是Twitter开源的分布式跟踪系统,主要用来收集系统的时序数据,从而追踪系统的调用问题
3.2 搭建 Zipkin Server
Zipkin Server的 API兼容性(微服务通过集成reporter模块,从而Zipkin Server通信) 非常好,对于Spring Cloud Greenwich,Zipkin Server只需安装2.x即可。
- 下载 : Zipkin官方的Shell下载最新版本
curl -sSL https://zipkin.io/quickstart.sh | bash -s
之后 java -jar启动
可看到也是一个SpringBoot应用


- 查看9411端口
http://localhost:9411/zipkin/

- 添加依赖,由于zipkin已经包含sleuth,所以移除那个依赖



抽样是为了减少性能损失,默认是只上报0.1的trace数据
调用请求后,zipkin:



- 由于该请求客户端是浏览器,而其没有集成sleuth,不上报zipkin,所以不显示

4 整合Zipkin之后Nacos报错解决
5 为所有微服务整合Zipkin
对内容中心和网关都按照前面用户中心的步骤整合即可
6 Zipkin数据持久化(Elasticsearch)
Elasticsearch的下载安装参阅
Elasticsearch 实战(三) - Mac OS上安装和启动Elasticserch, KibanaZipkin提供了很多的环境变量

配置环境变量,即可把数据存入ES
STORAGE_TYPE=elasticsearch ES_HOSTS=localhost:9200
java -jar zipkin.jar

7 依赖关系图
- 一般情况下,是不会显示依赖图的

- 对此,官方有给出说明

- 使用了ES就需要使用zipkin-dependencies

- Zipkin Dependencies使用Elasticsearch的环境变量

- 开始下载
curl -sSL https://zipkin.io/quickstart.sh
| bash -s io.zipkin.dependencies:zipkin-dependencies:LATEST zipkin-dependencies.jar
- 启动
STORAGE_TYPE=elasticsearch ES_HOSTS=localhost:9200 java -jar zipkin-dependencies.jar

- 现在就展示依赖图了!实际可以配置定时任务

Zipkin Dependencies指定分析日期
#分析昨天的数据 (OS/X下的命令)
STORAGE_ TYPE=elasticsearch java -jar zipkin-dependencies.jar
`date -uv-ld +%F`
#分析昨天的数据 (Linux下的命令)
STORAGE_ TYPE=elasticsearch java -jar zipkin-dependencies.jar
`date -u -d '1 day ago' +%F`
#分析指定日期的数据
STORAGE TYPE=elasticsearch java -jar zipkin-dependencies.jar 2019-12-25
参考
- spring-cloud-sleuth
- [Spring Cloud Alibaba从入门到进阶]
Spring Cloud Alibaba 实战(十三) - Sleuth调用链监控的更多相关文章
- 【Spring Cloud & Alibaba 实战 | 总结篇】Spring Cloud Gateway + Spring Security OAuth2 + JWT 实现微服务统一认证授权和鉴权
一. 前言 hi,大家好~ 好久没更文了,期间主要致力于项目的功能升级和问题修复中,经过一年时间的打磨,[有来]终于迎来v2.0版本,相较于v1.x版本主要完善了OAuth2认证授权.鉴权的逻辑,结合 ...
- Spring Cloud & Alibaba 实战 | 第十二篇: 微服务整合Sentinel的流控、熔断降级,赋能拥有降级功能的Feign新技能熔断,实现熔断降级双剑合璧(JMeter模拟测试)
目录 一. Sentinel概念 1. 什么是Sentinel? 2. Sentinel功能特性 3. Sentinel VS Hystrix 二. Docker部署Sentinel Dashboar ...
- Spring Cloud Alibaba(8)---Feign服务调用
Feign服务调用 有关Spring Cloud Alibaba之前写过五篇文章,这篇也是在上面项目的基础上进行开发. Spring Cloud Alibaba(1)---入门篇 Spring Clo ...
- Spring Cloud Alibaba 实战 之 Nacos 服务注册和发现
服务注册与发现,服务发现主要用于实现各个微服务实例的自动化注册与发现,是微服务治理的核心,学习 Spring Cloud Alibaba,首先要了解框架中的服务注册和发现组件——Nacos. 一.Sp ...
- Spring Cloud Alibaba 实战(十二) - Nacos配置管理
本章主要内容是:使用Nacos管理配置以及实现配置管理的原因,配置如何管理以及动态刷新和最佳实现总结,最后是Nacos配置刷新原理解读 该技术类似于Spring Cloud Config 1 配置管理 ...
- Spring Cloud Alibaba 实战(十一) - Spring Cloud认证授权
欢迎关注全是干货的技术公众号:JavaEdge 本文主要内容: 如何实现用户认证与授权? 实现的三种方案,全部是通过画图的方式讲解.以及三种方案的对比 最后根据方案改造Gateway和扩展Feign ...
- Spring Cloud 微服务六:调用链跟踪Spring cloud sleuth +zipkin
前言:随着微服务系统的增加,服务之间的调用关系变得会非常复杂,这给运维以及排查问题带来了很大的麻烦,这时服务调用监控就显得非常重要了.spring cloud sleuth实现了对分布式服务的监控解决 ...
- Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵基础实战
Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵基础实战 Springboot: 2.1.8.RELEASE SpringCloud: Greenwich.SR2 ...
- Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵进阶实战
Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵进阶实战 在阅读本文前,建议先阅读<Spring Cloud Alibaba | Sentinel:分布式系 ...
随机推荐
- 小胖求学系列之-文档生成利器(下)-smart-doc
叮叮叮....一阵铃声响起,大家都陆续来到了课堂,看老师没来,小张和小胖又闲聊起来,小张问:怎么样,smart-doc好用吧.小胖笑着说:挺好用的,不过? 小张看卖关子,问到:不过什么,有什么新发现? ...
- webpack打包出现WARNING in configuration The 'mode' option has not been set, webpack will fallback to 'production' for this value. 错误
打包运行的时候出现以下错误 WARNING in configurationThe 'mode' option has not been set, webpack will fallback to ' ...
- C#线程学习笔记十:async & await入门三
一.Task.Yield Task.Yield简单来说就是创建时就已经完成的Task,或者说执行时间为0的Task,或者说是空任务,也就是在创建时就将Task的IsCompeted值设置为0. 我们知 ...
- Redis集群与分布式介绍以及搭建Redis-Cluster
1 Redis集群 1.1 什么是集群 集群就是很多服务器组成的一个网络.指的是将多台服务器集中在一起,实现同一业务. 1.2 为什么要集群 一台服务器不能满足开发需要的时候,需要多台服务器来支持.这 ...
- MongoDB(五):更新文档、删除文档
1. 更新文档 MongoDB的uptade()和save()方法用于将集合中的文档更新.update()方法更新现有文档中的值,而save()方法是传递文档数据替换现有文档.从3.2版本开始,Mon ...
- 6.1 自定义abp拦截器示例
一个简单.基于AbpInterceptor的拦截器示例: using Microsoft.Extensions.DependencyInjection; using System; using Sys ...
- vue 中 px转vw的用法
下面介绍最简单的用法 1 下载依赖 npm install postcss-import postcss-loader postcss-px-to-viewport --save-dev 2 在项目根 ...
- 二维码生成插件qrious
1.qrious是基于canvas的纯JS二维码生成插件 1.1什么是二维码 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的B ...
- ORA-27140: attach to post/wait facility failed
Errors in file /home/u01/app/oracle/diag/rdbms/hnybdb21/hnybdb211/trace/hnybdb211_j000_143099.trc:OR ...
- 基于H7的串口WIFI模块ESP8266的TCP客户端例子和操作说明(AP兼STA模式)
说明: 1.如果不熟悉网络的话,等我这几天更新V7用户手册的ESP8266章节,如果熟悉的话,直接操作即可,这里将操作说明发出来. 2.串口WIFI是采用的AT指令操作,简单易用,指令手册在这个帖子里 ...