各行业信息化程度迅猛发展的今天,各大企业的信息系统也日趋庞大和复杂。为了保证系统的正常运行,企业的运维人员会通过相应的kpi(key performance indicator, 关键性能指标)对系统进行监控。当某些kpi发生异常时,能够及时发出告警,通知相关人员。一、监控告警系统的数据检测现状现有的监控告警系统大部分采用人工设定规则或阈值的方式来实现。在某些情况下,这些方法确实简单有效,但在中大型业务系统中,我们往往会面临更多的kpi数量,更复杂的kpi间的关联关系,以及更多样性的kpi型态(如下图所示:恒值型、周期型、持续波动型等)。不同kpi型态对比面对这样的场景,若继续采用人工设定规则或阈值的方法进行检测,不仅会消耗大量的时间成本,而且容易导致告警的误报和漏报。在引入具体检测方案之前,让我们先来了解指标异常检测。二、单指标检测和多指标检测在运维领域,指标异常检测根据不同场景和应用需求,可以分为单指标异常检测和多指标异常检测。1. 单指标异常检测● 检测原理:关注的是某个kpi的值是否异常。例如:kpi突变、抖动等。● 异常场景:单指标异常主要是kpi值突然发生了较大变化。例如:cpu使用率突然增加、内存突然降低等。● 检测方法:在工业界,单指标异常检测主要有基于统计学和预测的两种方法。① 基于统计学的方法:通常是设定阈值判断是否异常。例如:3sigma等。若kpi超过阈值,则判断为异常,反之则正常。② 基于预测的方法:是通过建模并预测kpi曲线,根据预测值与实际值之间的误差大小判断是否异常。例如:arima等。若误差较大,则判断为异常,反之则正常。本次,我们对单指标异常检测不做过多探讨。2. 多指标异常检测● 检测原理:关注的是某个实体的状态是否异常。如:服务器、设备等。● 异常场景:多指标异常检测场景主要有两种情况。第一种情况:是尽管每个kpi看起来可能并没有异常,但综合多个kpi来看,可能就是异常的。例如:一个人的身高是185cm,体重是50kg,分别看身高和体重,均是正常的,但这个人脂肪率严重偏低,因此我们判断这个人的身体很可能出现异常。第二种情况:是有些单个kpi表现异常,但整体来看可能又是正常的。例如:一个人去体检,他在测心率时比较紧张,导致心跳加快,从心率kpi来看,这个人有可能发生了异常,但其他kpi均正常,从医生的角度判断,这个人体检是正常的。● 检测方法:与单指标序列相比,多指标序列具有维度高、数据量大、指标间关系复杂等特性。主要有两种思路:第一种思路:是将多指标序列划分成多个单指标序列,利用单指标异常检测方法发现异常;第二种思路:是直接分析多指标序列,如将多指标序列按形状或时间分成多个子序列,同时结合聚类等算法发现异常。针对多指标异常检测,第一种思路相对成熟,但这种思路会丢失指标间的关联性信息,同时对每个kpi进行建模会带来更高的成本。因此,检测方案将围绕多指标异常检测的第二种思路进行展开。三、多指标异常检测分析方案该分析方案包括离线过程和在线过程,主要是通过判断多指标间的变量关系是否被打破来进行异常检测。若多指标间的变量关系被打破,则判断为异常,反之则正常。发现异常后,会对异常的kpi进行故障定位。(分析方案流程图如下图)分析方案流程图1. 方案流程① 离线过程● 基于sbd的dbscan聚类:使用基于sbd的dbscan聚类算法将相似指标聚类,可以降低分析框架的复杂度,并且将相似形状的指标聚类到同一类中。● sarimax建模:随后,在聚类后的每个簇中,对两两指标建立sarimax模型,构建指标间的不变量关系。不变量关系指时间序列间存在着不会随时间变化的关系,如指标1为sin(t)和指标2为sin(3t)的关系。② 在线过程● 异常检测:通过计算两两指标间的残差得分,再根据指定阈值判断不变量关系是否被打破。若残差得分超过阈值,则认为不变量关系被打破,即该指标对存在异常,反之则不存在异常。● 可视化不变量关系图:对离线学习和在线学习的不变量关系图进行绘制,可视化异常检测结果。● 故障定位:对所有被打破的不变量关系采用改进的pagerank算法进行故障定位。2. 验证方案为保证该方案行之有效,我们获取了某系统多个kpi数据进行验证。首先,观察历史kpi时序数据,存在部分数据形状相似,在经过聚类后,将具有相似形状的kpi分为一个类型,其他kpi归为噪音簇类。下图中左侧为部分原始时序图,右侧为聚类后的时序图。原始时序图和聚类时序图接着,对每个簇类的kpi构建不变量关系模型,根据实时数据判断预测。如下图中,左侧为在离线过程中,构建变量间的不变量关系图,并对簇类1和簇类2的中心点分别与噪音簇类构建不变量关系图;右侧为在线过程中,判断不变量关系是否被打破,如类簇1中6->4、6->17的不变量关系被打破,并通过pagerank算法将指标6定位为根因。离线不变量关系图和在线不变量关系图另外噪音簇类的大部分不变量关系均被打破,可根据实际业务确定是否分析噪音簇类。四、总结本帖介绍了通过构建不变量关系进行多指标异常检测可以处理大部分的异常场景,无论是单个指标异常,整体正常,还是单个指标正常,整体异常,均能有效的检测。在运维领域中,异常检测是其他aiops场景建设的基础,异常检测的结果将为后续的告警压缩、故障定位、故障自愈等场景提供重要输入。
运维
原创干货
151****0110
3访问量
0条评论
6小时前
智能化运维近些年来开始被人们所熟知,我们专做it研发与运维,正好逛到这个问题,就来回答一波,希望能够帮到大家。一、智能运维(alops)概念:gartner在2016年时便提出了aiops的概念,aiops即人工智能与运维的结合,并预测到2020年,aiops 的采用率将会达到 50%。简单来说,aiops 就是基于已有的运维数据(日志、监控信息、应用信息等)并通过机器学习的方式来进一步解决自动化运维没办法解决的问题。软件的一些“算法逻辑”不代表真正的aiops,判断是否是真正aiops的关键点在于:是否能自动从数据学习中总结规律,并利用规律对当前的环境给予决策建议。总结一下就是:1. 智能运维是以大数据平台和机器学习(算法平台)为核心。2. 智能运维需要与监控、服务台、自动化系统联动,智能运维需要从各个监控系统中抽取数据、面向用户提供服务、并有执行智能运维产生决策模型的自动化系统。二、aiops的应用:通过对运维数据的计算和分析支持智能监控、智能的故障分析和处理,智能it知识图谱等。三、aiops的价值:传统运维面对海量的运维数据,要快速止损和进行决策,人工专家的分析判断往往需要花费数小时或更大。而aiops在于通过机器学习来进行运维数据的挖掘,能帮助人甚至代替人进行更有效和快速的决策。智能运维在企业的落地,能够提升业务系统的sla,提升用户的体验,减小故障处理的时间等,带来业务的价值;并最终实现真正意义上的无人值守运维。四、aiops应用领域:目前各大传统客户围绕aiops的探讨和建设主要是如下内容:发现问题:基于机器学习的异常检测;例如,目前监控数据的异常阈值往往是静态的,无法有效规避变更时间、特殊节假日、业务正常的高低峰等,简单阈值、同环比算法的覆盖面有限,很容易漏警和误警。基于历史数据或进行样本标记的kpi异常检测,能第一时间发现问题,检测模型能覆盖大多数曲线类型,能较好适应业务生命周期中的变化。根因分析:基于机器学习的故障树挖掘,定位故障发生的根源以及其原因;例如,首先实现故障精准定位,在多指标情况下的业务异常(多指标检测的异常),出现异常的原因具体是哪个指标导致的;然后根据故障树挖掘和知识图谱,实现故障的精准根因分析与定位。预测未来:基于机器学习模型的指标预测;例如,基于多种回归和统计方法,实现对不同级别粒度的业务数据的预测,包括业务指标预测、容量预测等,如双11业务对组件容量和资源容量的容量预测等。it辅助决策支持:深入运营场景,实现业务运营的it辅助决策应用;如营收预测、舆情分析与预测等场景。算法层面则可以跟学术界进行合作或在社区中获取,在早期训练数据集和反馈数据量比较少的情况下,采用无监督学习,具体实现是用模式识别(pattern recognition)的技术来判断指标是否关联。关联性是通过时间序列曲线相似度(similarity distance)来衡量的。机器学习算法库提供计算时间序列曲线相似度的各种算法,比如:欧几里德距离(euclidean distance)、曼哈顿距离(manhattan distance)、明科斯基距离(minkowski distance)等。在有足够数据集以后,算法演化成有:监督学习、随机森林(random forrest)、gbdt(gradient boosted decision tree) 、神经网络(neutal network)等。
运维
原创干货
151****0110
5访问量
0条评论
23小时前
发帖子
帖子还没发表,点击继续第三方账号登陆
微信扫码登录
申请演示
请登录后在查看!