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, Kibana - Zipkin提供了很多的环境变量
配置环境变量,即可把数据存入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
参考
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
仅1年GitHub Star数翻倍,Flink 做了什么?
作者:王峰(莫问) Apache Flink 是公认的新一代开源大数据计算引擎,其流水线运行系统既可以执行批处理程序也可以执行流处理程序。目前,Flink 已成为 Apache 基金会和 GitHub 社区最为活跃的项目之一。在 Flink Forward Asia 2019 上,阿里巴巴资深技术专家,实时计算负责人王峰 (莫问)总结了 2019 年 Flink 在中国的发展和演进,阿里对 Flink 社区的贡献以及未来 Flink 的最新发展方向。 GitHub 地址: https://github.com/apache/flink 欢迎一起GitHub点Star~ Flink:最活跃 Apache 项目之一 首先,简单总结一下 Flink 社区的发展情况。自 2014 年 Flink 贡献给开源社区之后,其发展非常迅速。目前,Flink 可以称之为 Apache 基金会中最为活跃的项目之一,在 GitHub 上其访问量在 Apache 项目中位居前三。从 Star 数量上看,仅仅是 2019 年一年的时间,Flink 在 GitHub 上的 Star 数量就翻了一倍,Contrib...
- 下一篇
12月17日云栖号头条:支付巨头不怕“刷脸”遇冷?
云栖号:https://www.aliyun.com/#module-yedOfott8第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 今日最新云头条快讯:2019年已是国内智能手机市场连续下滑的第三个年头,而5G的发展增速或将会给整个手机行业带来不同的改变;AI现在已经开始在孕期护理中发挥作用了,未来 AI 或许就是你专属的孕期医师,协助你完成胎儿的检查;尽管很多商家都换上了刷脸支付,但实际应用的过程中,刷脸支付却遭遇冷落,商家能够赚取的奖励也非常有限,但是两大支付巨头会因此“灰心泄气”吗?一起来看最新的资讯: IDC发布中国智能手机市场2020十大预测,全行业拥抱5G IDC发布中国智能手机市场2020十大预测,IDC认为,5G确如冬日暖阳,是帮助国内手机市场走出严冬的重要契机,但真正驱使市场前行,走出低谷的动力,应当来自于全体行业参与者基于新的技术趋势所做出的主动的变革和创新,进而在此过程中,创造并激发消费者的需求。 2019年全球私有AI投资超过700亿美元 根据《斯坦福2019全球AI报告》显示,2019年,全球私有AI投...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装Docker,最新的服务器搭配容器使用
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7安装Docker,走上虚拟化容器引擎之路