MicroRCA: Root Cause Localization of Performance Issues in Microservices
MicroRCA: 微服务性能问题根因定位
www.fireknight.tech 个人博客,欢迎访问,CSDN不定期更新
-
总结
-
使用属性图来模拟微服务系统的异常传播
-
使用图和权重、PageRank的方法来定位问题
- 已知的性能问题表现在权重上(异常症状和资源关联)
- PageRank对可能的问题节点进行排序,很新颖
- 能够更准确得定位问题,能够从症状明显的服务和症状不明显的服务中准确得找出根因,这是别的方法做不到的地方(作者言)
-
权重、图的数据来源仍然是默认的调用信息、调用结构、时间等
-
MicroRCA: 将性能症状于相关资源利用率相关联,推断出根本原因
-
-
Intro:
-
微服务挑战
- 1. 复杂的依赖(很多服务)2. 大量的监控数据 3. 异构的服务 4. 频繁的更新
-
提出MicroRCA
-
- 收集应用(响应时间)和系统层级(cpu、内存)的数据,检测服务级别(service)的异常
-
- 一旦检测到,构造包含服务和host的属性图(不仅包含异常路径,还包含host上的所有服务)
-
- MRCA将异常和资源利用率相关,并排序根因
- 优点:通过业务异常与资源利用率的相关性,MicroRCA可以识别出异常且服务异常症状不明显的非计算密集型服务,减轻虚警对定位根本原因的影响。
-
-
贡献:
- 提出属性图来模拟微服务系统的异常传播
- 提出一种方法,能够将异常症状和资源关联,从而定位问题
-
-
总览
-
MicroRCA
-
检测到异常 -> 构建相关服务和节点的属性图 -> 构建子图 -> 排序问题
-
数据收集:
- 服务网格+系统监控
-
异常检测
- 无监督学习: Distance-Based online clustering BIRCH
- 检测慢响应时间作为异常
-
根因定位三步曲:属性图构建、异常子图构建、错误服务定位
-
-
根因定位
-
属性图构建
- 构造一个属性图来表示微服务环境中的异常传播
- 选中的服务:不仅包含错误路径涉及的服务(异常在同一节点的服务间扩散)
- 基础架构:正常运行时的框架
-
异常子图构建
- s1->s2: s2为异常节点
- 节点附加属性:平均异常响应时间rt_a
-
异常服务定位
-
edge 权重赋值
- 权重1:异常程度,
越异常越大 - 权重2:异常节点对正常节点的影响,corr(t(Ei,j), t(rt_a(i)))
- 权重3:异常响应时间和主机资源利用率的最大相关度
*- 最后一项为入度为异常的所有边的平均值
- 权重1:异常程度,
-
共有三个属性
-
-
服务异常打分
-
节点平均权重 * 最大[资源和异常延时之间的相关系数]
-
定位
- PageRank
-
- v: 最终排序
- p: 移动概率(根据权重计算)
- 1-c: 继续传播, c: 随机跳跃
- u: 节点的异常分数
-
实验
-
两个指标
- PRk:topk包含真实故障的概率,k越小,精度越高
- 平均PRk: 整体性能
-
实验看来,top1大多数情况能找到问题
-