《MS-Rank:Multi-Metric and Self-Adaptive Root Cause Diagnosis for Microservice Application》
发表会议:ICWS 2019
摘要
微服务架构,收集到多个指标的情况下如何分析根因。分为四步:
- 构建影响图
- 随机游走
- 结果准确度计算
- 指标权重更新
引言
微服务正在大规模部署,带来了开发便利的同时导致故障排错比较复杂。之前大量的工作做rca但是大多都基于单一指标QoS,效果不好。
MS-Rank,收集多指标数据构建服务调用图——随机游走算法分析前后自调用来算根因——自优化算法动态更新参数的权重:效果不错,无需专家先验知识
架构
ms-rank架构分析
专家在判断故障时经常会根据服务特性看不同的指标,比如计算密集型(spark)会看cpu,ui相关的会看latency。我们希望可以自使用选择指标类型,更新指标类型的权重,于是提出了ms-rank
ms-rank是一个在线自适应系统,提取关系图——随机游走得到异常服务rank——通过SRE,结果的准确性可以帮我们更新权重
指标分析
不同服务的故障有不同的特性
- latency feature:可反映short-connetion service,但是long-connetion service就不适合
- load feature:io- cpu-intensive service
所以单一指标不ok!
service:n, metrics:m,将时刻t服务vi的各个参数构建为向量
我们选择的指标有: - basic metrics:latency,throughput,cpu,RAM,disk I/o ,power( l a t e n c y / t h r o u g h p u t latency/throughput latency/throughput)success percent
- implied metrics:gradient,gradient ratio, Laplacian(这三个指标可以表示trends in metrics)
- mean and standard deviation
- distances to local maximum and minimum
多指标影响图构建
在latency这个指标下,对于四个service api我们构建影响图
一步一步剪边
本实验,7个basic metrics和7个implied metrics,所以一共是7+7*7=56个metrics,每一个metric都可以构建一个图
随机游走算法
n个service——V,m个metric——M。
对于任意两个service i,j,他们的关系
c
i
,
j
c_{i,j}
ci,j都是可以通过指标M来计算的。构建一个矩阵
W
n
m
W_{nm}
Wnm,就是我们之前提到的不同svc中不同metric的权重,vi和vj的关系可以这样计算:
随机游走有三个部分:
- forward
- selfward
- backward
权重更新
准确度计算
更新权重
示例图:
实验结果
- 通过top-k和avg-k来对比
- self-adaptability
- ms-rank with domain knowledge
- cost