技术广角
BroadAngleforTechnology
72
基于孤立森林算法的分布式服务故障分析
模型研究与应用
摘 要
为解决大型分布式系统中服务故障排查困难及系统恢复漫长的问题
,
需要实现分布式服务故障分析技术
。
针对分布式服务故障定位复杂并需要快速定位故障的需求
,
文章提出一种基于孤立森林算法的分布式服务故障分析
模型
。
通过滑动平均算法对主机性能数据进行时序计算生成动态阈值区间
,
并利用孤立森林算法进行模型训练
,
从
而实现对分布式系统服务进行故障定位与分析
。
该方法可有效提升运维人员的工作效率并减轻运维人员的工作负
担
,
同时协助运维人员快速排查故障问题
,
达到对分布式服务故障快速定位快速处理的效果
。
关键词
孤立森林
;
异常检测
;
异常分析
王一大
中国联合网络通信有限公司济南软件研究院济南250100
引言
随着互联网业务的全面发展
,
企业IT架构发生重大
变化
,
分布式云化架构应用越来越多
,
传统运维模式面
临越来越多的挑战
,
难以适应业务的高速发展需求[1]。
目前
,
信息化系统广泛微服务化
,
运维机器数量
、
容器
数量
、
外部服务日均调用量
、
系统服务数量均显著上
升
。
在此规模下
,
支撑难度
、
运维难度
、
排查问题难度
呈几何增长
,
对运维模式及技术有更高的要求
。
互联网业务具有业务无间断在线
、
业务敏感性较
高
、
负面影响大
、
传播范围广
、
传播速度快等特点
,
对
运维要求越来越高
,
传统运维模式已无法适应互联网业
务的高速发展需求
,
智能运维(AIOps)成为必不可少的
运维利器[2]。
在大型互联网架构中
,
为提升平台计算能力及资源
利用率
,
普遍采用分布式技术
。
然而使用分布式技术也
会带来一些潜在问题
,
若主机资源需求与资源分配不均
匀
、
部分主机长时间负载过重
,
容易导致服务失效
,
造
成服务中断甚至数据丢失
;
同时当系统发生故障时
,
服
务分散在不同主机会导致故障问题难以定位
、
故障排查
耗时较长等问题[3]。
通过国内外相关文献分析
,
目前针对分布式服务故
障分析的研究仍处于初级阶段
。
其中大部分系统是根据
领域知识人工设定报警规则
,
难以自动检测故障并细粒
度定位问题原因[4]。
近年来机器学习算法广泛应用于各项
领域
,
其中孤立森林算法是十分优秀的异常检测算法[5],
然而目前尚未有研究人员将孤立森林算法应用于大型分
布式系统中进行故障分析
。
针对上述优缺点并借鉴国内外相关文献
,
本文提出
一种基于孤立森林算法的分布式服务故障分析模型
。
通
过采集分布式环境中服务主机监控数据及服务调用耗时
数据
,
对采集到的时序数据通过滑动平均算法计算生成
阈值区间
,
并利用孤立森林算法对预处理后的数据进行
模型计算
,
构建合适的异常分析模型
,
实现了分布式环
境下服务故障分析功能
,
有效提升了运维人员的工作效
率并减轻了运维人员的工作负担
,
同时协助运维人员快
速排查问题
,
达到对分布式服务故障快速定位快速处理
技术广角
BroadAngleforTechnology
73
的效果
。
1相关算法
1.1滑动平均算法
滑动平均算法是时间序列分析算法的一种
,
可以
用来估计变量的局部均值
,
使得变量的更新与一段时
间内的历史取值有关
。
比较常用的滑动平均算法有简
单移动平均法
、
加权移动平均法
、
自回归滑动平均模
型等
,
目前工业界比较流行的滑动平均算法为自回归
滑动平均模型
。
自回归滑动平均模型(Auto-RegressiveandMoving
AverageModel
,
ARMA)是研究时间序列的重要算法
,
根据时间序列数据逐项推移
,
依次计算包含一定项数的
时序平均值
,
以反映长期趋势[6]。
ARMA模型的计算公式为
:
(1)
由于本文系统采集到的监控数据具有一定的时间序
列性
,
因此选择ARMA模型对监控数据进行时间序列分
析
,
方便后续模型计算
。
1.2孤立森立算法
孤立森林算法是一种适用于连续数据的无监督异常
检测方法
,
其基本思想是计算对象与对象之间的差异
,
通过检测两点距离或某一区域点的密度
,
计算异常点得
分
,
分值越高
,
则代表对象越有可能是异常点[5]。
对于如何查找哪些点容易被孤立
,
孤立森林算法使
用了一套非常高效的策略
。
在构建孤立森林模型中
,
递
归地随机分割数据集
,
直到所有样本点都是孤立的
。
在
这种随机分割的策略下
,
异常点通常具有较短的路径
。
即密度高的簇是需要被切很多次才能被孤立
,
而密度低
的点很容易就可以被孤立
。
这里参考下面的图1
、
2进
行说明
。
从图2中可以直观地看到
,
相对更异常的点x
0
只需
要4次切割就从整体中被分离出来
,
而更加正常的点x
i
图1孤立森林算法示意图
经过了11次分割才从整体中分离出来
。
这里的分割方式
采用的是
,
随机选择一个特征以及拆分的值(这个值位
于该特征的最小值和最大值之间)
。
其中图2展示了异常
点的平均路径长度小于正常点的平均路径长度
。
2基于孤立森林算法的分布式服务故障
分析模型
2.1背景介绍
分布式系统即一组异构计算机和处理器通过网络
联接在一起
,
通过机器间紧密配合
,
共同完成一项任
务[1]。
不同主机的性能都会对分布式系统中的服务有一
定影响
,
因此本文的关键数据为分布式系统中不同服务
下的主机性能数据
。
通过监控工具实时采集分布式系统
中各主机的性能指标数据
,
其中监控工具采集到的主机
性能特征指标为
:
网络流入流量
、
网络流出流量
、
用户
CPU使用率
、
系统CPU使用率
、
CPU整体剩余情况
、
写IO量
、
ICMP
、
数据库连接数
、
数据库慢SQL数量
、
数据库长连接数量等
,
采集到的监控数据如表1所示
。
图2平均分割路径长度
a
v
e
r
a
g
e
p
at
h
l
e
n
g
t
h
1
0
5
10
15
510
(logscale)
技术广角
BroadAngleforTechnology
74
时间主机主机性能
2020-12-02 08:01IP1SET1
2020-12-0无条件歌词 2 08:02IP1SET2
2020-12-02 08:03IP1SET3
2020-12-02 08:04IP1SET4
2020-12-02 08:05IP1SET5
2020-12-02 08:06IP1SET6
2020-12-02 08:07IP1SET7
2020优美文字 -12-02 08:08IP1SET8
2020-12-02 08:09IP1SET9
………
2020-12-02 09:01IPnSET1
………
2020-12-02 09:09IPnSET9
表1监控数据
针对分布式服务故障分析场景
,
本文的目标是对监
控数据构建模型
,
给出故障的定位及原因
。
本模型需要
完成的两大任务是异常检测及异常分析
,
其中异常检测
是通过AI异常检测模型找出分布式服务中发生故障的主
机及引起服务故障的性能指标
,
而异常分析是通过大数
据统计分析出导致故障发生的异常信息
。
由于本文的异常检测场景是在监控数据中寻找异常
值
,
同时采集到的监控数据具有连续性
,
因此选择孤立
森林算法比较合适
;
同时采集到的监控数据具有时间序
列性
,
因此选择滑动平均算法对监控数据进行时间序列
分析
。
2.2基于孤立森林算法的分布式服务故障分析模型
基于孤立森林算法的分布式服务故障分析模型由两
部分组成
,
一个是异常检测模型
,
另一个是异常分析模
型
,
其中异常检测模型为核心模型
。
异常检测模型的主要思想是通过滑动平均算法对一
段时间内单一主机单一性能指标数据利用孤立森林算法
进行模型训练
,
生成异常检测模型
,
对不同主机不同性
能指标数据进行异常检测
,
从而实现对分布式服务故障
进行问题定位
。
目前工业界异常检测场景中效果较好的算法即孤立
森林算法
,
同时孤立森林算法是无监督机器学习算法
,
无需对数据进行人工打标处理
,
能够节省很多人工成
本
,
因此本文选择孤立森林算法构建异常检测模型
。
然
而本文中采集到的监控数据具有时间序列性
,
因此选择
滑动平均算法对监控数据进行时间序列分析
,
进行数据
处理
,
方可进行模型训练
。
异常检测模型流程图如图3
所示
。
ⴁ━㇇⌅・㇇⌅Ự⍻⁑
图3异常检测模型流程图
异常检测模型的核心代码如下
:
importnumpyasnp
leimportIsolationForest
importget3SgamByMedian
#遍历不同主机
foripinipLis原画和插画 t:
#遍历不同指标
forindexNameinindexList:
#获取数据
train_X=list(getData(dbConfig,indexName))
#使用滑动平均算法计算阈值
thresholdDict=get3SgamByMedian(train_X,
9,18)
lower_limit=thresholdDict['lower_limit']
upper_limit=thresholdDict['upper_limit']
#模型训练
rng=State(100)
max_samples=len(train_X)
max_features=1
ifindexName=='CPU_IDLE'orindexName
=='MEM_AVAILABLE':
outliers_fraction=getProportion(train_X,
技术广角
BroadAngleforTechnology
75
lower_limit,'<')
el:
outliers_fraction=getProportion(train_X,
upper_limit,'>')
model=IsolationForest(max_
samples=max_samples,max_features=max_
features,random_state=rng,contamination=outliers_
fraction)
model.fit(train_X)
#保存模型
save_model_file=r"../model/
AnomalyDetection_"+ip+"_"+indexName+".pkl"
save_model(model,save_model_file)
异常检测模型主要使用sklearn代码库中的Isolation
Forest以及Numpy
、
Scipy等科学计算包分别实现了孤
立森林算法及滑动平均算法
,
针对不同主机不同指标分
别进行模型训练
,
对训练好的模型统一进行保存
,
方便
系统调用
。
异常分析模型的主要思想是对一段时间内异常检
测出的异常值进行不同维度的大数据统计分析
,
通过
对各种指标进行聚合
,
统计得出这一段时间内哪些主
机哪些指标频繁发生异常
,
并通过异常得分排序得出
故障发生的IP及指标
,
从而为运维人员节省大量时间
及精力
,
提高了问题排查的效率
。
异常分析模型流程
图如图4所示
。
ⴁ
Ự⍻⁑
㔏䇑
图4异常分析模型流程图
从图4可以看出
,
模型会针对实时获取的监控数据
调用已训练完成的异常检测模型
,
生成异常检测结果
,
再对一段数据内调用到的异常检测结果进行大数据统
计
,
针对不同主机统计结果排序可以定位故障主机
,
针
对不同指标统计结果排序可以定位故障指标
,
由此对故
障进行根因定位
。
3基于孤立森林算法的分布式服务故障
分析系统
3.1技术架构
基于孤立森林算法的分布式服务故障分析系统以机
器学习
、
大数据框架为基础
,
结合AI
、
大数据等技术对
监控数据进行建模分析
,
是集异常检测
、
智能告警
、
故
障智能分析
、
监控视图
、
业务视图为一体的智能运维平
台
。
其系统架构如图5所示
。
该架构融合机器学习与大数据的分析流程
,
即获取
到基础数据后
,
对基础数据进行数据预处理生成特征矩
阵
,
然后对特征矩阵进行特征分析
,
挑选出适合的特征
进行模型训难得一人心 练
,
最终对模型训练完成的数据进行大数据
统计分析
,
生成所需的报表视图
。
3.2功能架构
基于孤立森林算法的分布式服务故障分析系统通过
接入统一监控平台采集监控数据
,
通过接入日志归集平
台采集日志数据
,
将采集到的历史数据通过大数据框架
进行数据预处理
,
再将处理完成的特征数据通过机器学
习核心框架构建模型
,
最终通过源于历史故事的成语 可视化大盘将分析后的
结果数据展示
。
其功能架构图如图6所示
。
统一监控平台
:
自主研发的跨平台
、
支持多种中间
件的IT综合监控平台
,
全面覆盖IasS
、
PaaS
、
SaaS三
层监控
。
日志归集平台
:
提供日志采集
、
检索
、
告警
、
可视
化大盘等功能
,
解决海量日志的管理难题
。
大数据
、
机器学习框架
:
基于孤立森林算法的分布
式服务故障分析系统的核心
,
提供数据预处理
、
数据分
析
、
特征工程
、
算法
、
建模等能力
。
3.3智能告警功能
系统将告警与异常检测结合
,
基于动态阈值
,
进行
智能告警
,
当接收到告警时会自动进行信息压缩整合
、
数据分析等操作
。
异常检测生成的动态阈值是基于海
技术广角
BroadAngleforTechnology
76
ⴁ━㇇⌅
Ự⍻
・㇇⌅䳌㜭
ⴁ㿶
㿶
㔏䇑
㜭䆖
图5基于孤立森林算法的分布式服务故障分析系统架构图
量历史数据分析产生的
,
能够反映
业务趋势的变化规律
,
使告警更精
准
,
质量更高
,
而且释放了部分人
工配置的繁琐工作
,
工作效率大大
提高
。
智能告警对告警消息进行关联
分析
,
同时对各类信息进行整合
,
如
:
数据库存在长连接时
,
会自动
对数据库CPU
、
连接数
、
响应时间
等指标进行分析
,
并基于异常检测
确认数据库性能是否存在波动
,
检
测到异常时才会进行消息发送
,
发
送告警信息时会将数据库的一系列
信息进行压缩
、
合并
,
统一进行发
送
。
智能告警的功能流程图如图7
所示
。
使用基于孤立森林算法的分布
式服务故障分析系统的智能告警功
能后
,
告警数量大幅度减少
,
告警
质量得到大大提高
,
告警信息更精
确
、
更有效(告警数量由每天5000
多条压缩至100条左右)
。
3.4异常分析功能
对异常检测进行改造
,
将多
维度指标数据进行大数据统计分
析
,
自动分析出故障时各指标的
影响占比并生成异常分析报表
,
快速定位故障问题
,
大大提高故
障排查效率
,
故障排查耗时由
30min缩短至2min
。
其中传统运
维流程如图8所示
,
异常分析流程
ⴁ
䟷
䳶
Ⓚ
㔏ⴁ
䟷
䳶
・㇇⌅Ⲵ䳌㌫㔏
䳶
Ṷ
Ṷ
㿶
ⴈ
图6基于孤立森林算法的分布式服务故障分析系统功能架构图
㔏ⴁ㌫㔏
Ự⍻
⭏䰸
㕙
⎸䆖
䰸
䴰亴
䀖䆖
䘋㹼㕙
䆖⎸
䙏䰞仈
图7智能告警示意图
如图9所示
。
从以上图8和图9的对比中
,
传
统运维当接收到监控告警后
,
需人
工对不同主机不同组件的各个指标
进行逐项排查
,
最终对排查结果进
行汇总定位根因
,
流程十分繁琐
,
并需要耗费大量人员精力
。
而基于
孤立森林算法的分布式服务故障分
析系统的异常分析功能流程十分清
晰明了
,
同时引入了异常检测模
型
,
故障定位更加准确
,
系统能够
采集到监控告警后自动对故障进行
统计分析
,
自动得出定位根因
,
释
放了大量劳动力
,
故障排查效率有
所提高
。
4基于孤立森林算法的分
布式服务故障分析系统在
中国联通分布式架构系统
中的应用效果
目前
,
基于孤立森林算法的分
布式服务故障分析系统已在中国联
通号卡系统等应用上线
,
服务在故
障发生时
,
借助基于孤立森林算法
的分布式服务故障分析系统能够快
速定位故障问题
,
有效减轻运维人
员的工作压力
。
4.1单指标异常检测
单指标异常检测基于滑动平
均算法生成动态阈值
,
再使用孤
立森林算法构建异常检测模型
,
最终基于异常检测模型实现实时
异常检测
。
使用滑动平均算法
、
孤立森
技术广角
BroadAngleforTechnology
77
ⴁ䆖
ḕḕ1ḕ㓴ḕ㓴1
ḕḷḕḷḕḷ1
㚊䰞仈ṩ
图8传统运维流程示意图
ⴁ䆖䟷䳶⁑㺘㔏䇑䰞仈ṩ
图9异常分析流程示意图
图10异常检测报表
图11异常分析报表
图12导航式故障排查分析报表
林算法对海量历史数据进行建模
分析
,
实时发现海量数据中的异
常点
,
可以实现动态调整阈值
,
生成异常检测报表
。
其效果如图
10所示
。
4.2多指标异常分析
目前
,
异常检测仅能够对单
维度指标实时计算
,
无法对多维
度指标进行有效分析
,
多指标
异常分析是基于异常检测进行改
造
,
对各指标数据进行大数据统
计分析
,
通过对各种指标进行聚
合
,
分析出故障发生时各指标的
影响占比并生成异常分析报表
。
其效果如图11所示
。
4.3导航式故障排查
导航式故障排查功能通过对
现有的故障排查流程进行总结固
化为工作流
,
与单指标异常检
测进行结合
,
基于异常检测动态
调整阈值
,
通过重点标识故障指
标
,
动态生成故障分析报告
。
其
效果如图12所示
。
5结论
基于孤立森林算法的分布式服
务故障分析系统上线使用后
,
告警
质量得到大大提高
,
告警信息更精
确
、
更有效(告警数量由每天5000
多条压缩至100条左右)
,
同时能够
快速定位故障问题
,
大大提高故障
排查效率
,
故障排查耗时由30min
缩短至2min
。
因此相对于传统运维
模式
,
基于孤立森林算法的分布式
技术广角
BroadAngleforTechnology
78
服务故障分析系统在故障定位及故障分析等方面实现了
自动化
、
智能化
,
减少了运维人员的投入
,
人力成本及
运维成本都有所降低
,
证明了基于孤立森林算法的分布
式服务故障分析模型具有一定的可行性及有效性
。
基于孤立森林算法的分布式服拙政园简介 务故障分析模型还有
很多地方需要改进
,
由于本文特定场景的需求并没有引
入其它主机性能指标
,
在今后的研究工作中将引入更多
性能指标及异常检测算法进行多项验证
,
探索能否形成
一套通用模型
,
可应用于不同生产系统
,
从而大大提高
模型的鲁棒性
。
AbstractInordertosolveproblemsofrvicefailuredetectionandlongrecoveryinlarge-scaledistributedsystems,itis
atthecomplexfaultlocationofdistributedrvices
andtheneedforrapidfaultlocation,thispaperproposadistributedrvicefaultanalysismodelbadonIsolationForest
rtolocateandanalyzedistributedsystemrvices,themovingaveragealgorithmisudtocalculatethe
timequenceofthehostperformancedatatogeneratethedynamicthresholdinterval,andtheIsolationForestalgorithmis
ingtothemethod,t怀孕能喝酸奶吗 heworkefficiencyoftheoperationandmaintenancepersonneliffectively
improved,theworkloadoftheoperationandmaintenancepersonnelisreduced,andtheoperationandmaintenancepersonnel
areassistedtoquickl81年属啥 ycheckthefaultproblem,therebyachievingtheeffectofquickdetectionandtreatmentofthedistributed
rvicefailure.
KeywordsIsolationForest;AbnormalDetection;AbnormalAnalysis
RearchandApplicationofDistributedServiceFaultAnalysisModelBadon
IsolationForestAlgorithm
作者简介
王一大
硕士
,
工程师
,
主要研究方向为数据研发工程师
、
研究机器学习
。
WangYidaJinanSoftwareInstitute,ChinaUnitedNetworkCommunicationsCo.,Ltd.,Jinan250100,China
参考文献
[1]GalliDL.分布式操作系统原理与实践[M].北京:机械工业出
版社,2003
[2]彭东,朱伟,刘俊,等.智能运维从0搭建大规模分布式AIOps
系统[M].北京:电子工业出版社,2018
[3]王晓峰,王一大,孙玉强.等.基于XGBoost算法的分布式服
务故障预测模型研究与应用[J].电信技术,2019(10):13-16
[4]王子勇,王焘,张文博,等.一种基于执行轨迹监测的微服务
故障诊断方法[J].软件学报,2017,28(6):1435-1454
[5]周志华.机器学习[M].北京:清华大学出版社,2016
[6]李航.统计学习方法[M].北京:清华大学出版社,2012
本文发布于:2023-03-21 18:50:56,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/bfd64fe88399c3e8920c9b49c45cf9aa.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:王一大.doc
本文 PDF 下载地址:王一大.pdf
留言与评论(共有 0 条评论) |