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报错处理
- 推荐阅读
处理Spring Cloud Alibaba/Spring Cloud整合Zipkin之后的报错问题
5 为所有微服务整合Zipkin
对内容中心和网关都按照前面客户中心的步骤整合就可
6 Zipkin数据持久化(Elasticsearch)
Elasticsearch的下载安装参阅
Elasticsearch 实战(三) – Mac OS上安装和启动Elasticserch, KibanaZipkin提供了很多的环境变量

配置环境变量,就可把数据存入ES
STORAGE_TYPE=elasticsearch ES_HOSTS=localhost:9200 java -jar zipkin.jar
- Zipkin其余环境变量
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从入门到进阶]
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Spring Cloud Alibaba 实战(十三) – Sleuth调用链监控