还记得几率课本中的二项分布吗?在咱们的网络判障中发挥了大做用!

本文做者:AIOps智能运维算法

在以前的系列文章《百度网络监控实战:NetRadar横空出世》中,咱们介绍了百度内网质量监测平台NetRadar的原理和架构,其中,判障算法是内网监测系统的重要一环,今天咱们将详细介绍在NetRadar中实际使用的一种判障算法——基于二项分布的网络判障算法。服务器

业务场景网络

咱们的内网监测系统NetRadar实时对百度内网连通性进行探测并根据探测数据判断是否存在网络故障。以探测机房A到机房B的连通性为例,以下图所示,首先从机房A和B中选择n个服务器对,机房A中的服务器去探测机房B中的服务器,每次探测有成功/失败两种结果。在每一个探测周期内,咱们会收到n个探测数据,其中m个数据探测成功,(n-m)个数据探测失败。架构

理论上,在网络状态正常的状况下,m/n=100%。但实际中,因为服务器自身问题(发起探测的服务器负载太高、被探测的服务器重启等)以及一些偶然因素,少许的探测失败是不可避免的,因此须要设定一个判断网络是否故障的阈值运维

阈值设定函数

在实际设定阈值的过程当中,咱们遇到两个问题:3d

  • 单服务器故障致使产生探测数据的噪声blog

如前面所述,当服务器a探测服务器b时,若是服务器b自身故障(负载太高或者遇到机器重装、重启等)或遇到其余偶然因素,探测也可能失败,但并不能说明此时存在网络问题,这种状况咱们称为数据噪声资源

虽然单台服务器故障的几率不高,但在大量服务器参与的网络探测中,服务器故障产生数据噪声几乎是常态。get

  • 不一样探测任务样本数差距大,受噪声影响,小样本的探测任务更难进行准确判障

因为网络结构的多样性,不一样探测任务的样本数差距很大。例如在机房A到机房B的探测中,样本数与机房内服务器数量相关,若是A机房内服务器数量少,则探测样本也少。实际中,不一样任务的样本数变化范围从几十到几千。

对样本量大的探测任务,数据噪声对判障结果影响不大,但小样本的探测任务却很是容易受噪声影响。

例如某探测任务有100个样本,某个周期收到60条成功数据,40条失败数据,成功率只有60%,显然,此刻的网络存在故障。但若是另外一个探测任务只有5个样本,在某个周期收到3个成功样本,2个失败样本,成功率一样为60%,但咱们很难判断这2条数据是探测数据噪声仍是真的存在网络问题,因此不能直接使用固定的阈值判断网络故障。

另外,如以前的文章《百度网络监控实战:NetRadar横空出世》所述,NetRadar的探测任务数量很大,判障算法要求是通用的低开销的高鲁棒性的。所以,也不能针对具体的探测任务训练专门的阈值,这样会给系统的后期维护增长很大成本。

基于二项分布的网络判障算法

在本文描述的网络判障场景中,每一个探测任务每周期收到相互独立的n个成功/失败样本,其中在网络正常的状况下每次探测以必定的几率p返回成功,这正符合几率统计中二项分布的定义。

一、二项分布

首先,简单回顾一下几率统计中的二项分布。

二项分布是n个独立的伯努利试验中成功次数的离散几率分布,其中每次试验成功的几率为p。

若是随机变量X服从二项分布,那么在n次试验中,刚好获得m次成功的几率为:

其中,

累积分布函数能够表示为:

二、二项分布在判障中的应用

回到咱们的场景中,对于一个探测任务来讲,在一个周期内收到n个样本,其中m个成功样本,同时,根据历史数据能够肯定在网络正常的状况下,一次探测成功的几率为p(因为服务器自己的问题和其余客观缘由,在网络正常的状况下也有可能获得探测失败的样本,p值就是描述在网络正常的状况下探测成功的几率)。一个周期内的样本相互独立。很显然探测样本X服从参数为n和p的二项分布

当一个周期内收到的n个样本中包含m个成功样本,如何判断此时网络是正常仍是异常呢?咱们其实是经过判断m是否过小了来肯定是否有网络故障。也就是,能够经过计算累积分布函数判断:

若是太低(,其中是咱们预先设定的一个几率阈值),说明在正常的网络状态下,n个样本中收到小于等于m个正常样本的几率很低,能够判断这时网络是异常的。

然而当n很大时,须要屡次计算,在每一个周期有上百万数据须要计算的状况下,对CPU资源消耗很大。

不过根据中心极限定理,咱们知道:

二项分布当n足够大时,

近似服从指望为0,方差为1的正态分布,即标准正态分布

以此为依据,计算Z-score

根据对历史数据的标注和训练能够获得z的阈值,使用阈值进行网络判障。

三、实际效果

实际运行中的一组网络正常和异常时成功率和Z-score分别以下图所示,能够看到,若是在成功率上设置阈值,很难找到一个较好区分网络正常和异常的阈值,但使用二项分布则能够很容易肯定区分正常与异常的阈值。

算法的扩展和应用:本文介绍的基于二项分布的判障算法,应用场景并不只限于网络监控,实际上这个算法能够应用于全部的成功率检测,只需针对固定场景肯定参数p和阈值。

总结

本文从网络监测中遇到的实际问题出发,介绍了基于二项分布的判障算法,在内网监测系统中有效地解决了不一样探测任务样本数差别大且可能存在数据噪声等实际问题,尤为在小样本的判障中表现优异。

若您想进一步了解内网监测问题,欢迎给咱们留言!

原文连接地址:https://developer.baidu.com/topic/show/290309

相关文章
相关标签/搜索