ICSESEIP21 - MicroHECL - MicroHECL High-Efficient Root Cause Localization in Large-Scale Microservice Systems
针对大规模微服务系统的高效根因定位
www.fireknight.tech 个人博客,欢迎访问,CSDN不定期更新
-
也是一篇复旦彭鑫组的工作
-
总结
-
作者认为现有方法不行
- 现有基于图(服务依赖图)的方法,检测不准确,效率低
- 现有基于trace分析的方法,需要大量计算,做不到
-
提出一种动态图构建的方法,从可观测异常服务起,根据三种异常,扩展构建异常相关图。对图节点遍历排序,找出相关根因
-
-
摘要
- 现有方法对异常检测不准确以及对服务依赖图遍历低效
- 基于动态构造的服务调用图,分析可能的异常传播链,基于相关性分析对根因进行排序
- 结合机器学习和统计方法,设计定制模型检测不同类型的服务异常(性能、可靠性、流量)设计剪枝消除异常传播中不相干的服务调用
-
Intro
-
微服务系统特点
-
动态+复杂
- 服务有众多实例调用链异步交互
-
异常沿着调用链传播,最终导致业务问题
-
-
过去的工作
- 基于trace分析:基于跟踪分析的方法需要昂贵的跟踪数据收集和处理,因此不能有效地用于大规模系统。
- 基于依赖图分析:基于服务依赖图的方法基于服务调用和因果关系(例如,服务位于同一台机器上)构建服务依赖图。这些方法通过遍历服务依赖关系图并通过服务的质量度量(例如,响应时间)检测可能的异常来定位根本原因。这些方法的局限性在于,它们对服务异常的检测不准确,对服务依赖关系图的遍历效率低下,尤其是当系统有许多服务和依赖关系时。
-
-
背景
-
三种异常
- 性能异常:RT-响应时间
- 可用性异常:EC-error counts
- 流量异常:QPS-queries per second
-
-
整体流程
-
构建服务调用图
重点为图结构以及数据如何存储
-
异常传播链分析
分析方法是沿着异常服务调用边缘遍历服务调用图,从初始异常服务开始,沿着可能异常传播方向的相反方向进行。
用了一个剪枝方法
-
候选根因排序
初始异常:业务异常(订单若干次不成功)
根因异常:RT, EC, QPS
使用皮尔逊相关系数计算异常之间的相关性,并排序
-
-
异常传播链分析(上文第二点)
-
性能异常、可靠性异常:下游->上游流量异常: 上游->下游
-
流程
- 入口点分析,对每种异常分析
- 异常节点扩展,上下游检测
- 得到候选根因
-
节点异常检测 - 检测节点是否存在异常
-
性能异常-RT:
有周期性波动,选择OCSVM(一种支持向量机)
-
可靠性异常-EC:
EC可能随着流量变化(流量大就G,流量小又恢复),所以选择随机森林
-
流量异常
3-sigma原则
-
-
剪枝
- 两个连续的边在对应的度量中有相似的变化趋势
- 使用相关系数判断,如果相关系数低于阈值,则新边不被加入
-