【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

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

  • 2019-09-10
  • 本文字数:2037 字

    阅读完需:约 7 分钟

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

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

业务场景

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



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

阈值设定

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


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


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


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


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


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


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


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


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

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

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

1 二项分布

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


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


如果随机变量 X 服从二项分布,那么在 n 次试验中,恰好得到 m 次成功的概率为:



其中,



累积分布函数可以表示为:


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

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


当一个周期内收到的 n 个样本中包含 m 个成功样本,如何判断此时网络是正常还是异常呢?我们实际上是通过判断 m 是否太小了来确定是否有网络故障。也就是,可以通过计算累积分布函数 Fm 判断:




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


二项分布当 n 足够大时,



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


以此为依据,计算 Z-score:



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

3 实际效果

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




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

总结

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


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


作者介绍:


运小希,百度云高级研发工程师,负责百度内网质量监测平台的系统和策略研发,在网络监控、异常检测等方向有广泛实践经验。


本文转载自公众号 AIOps 智能运维(ID:AI_Ops)。


原文链接:


https://mp.weixin.qq.com/s/16FJQAOJ75g24yYmBaiKUQ


2019-09-10 15:441529

评论

发布
暂无评论
发现更多内容

Docker安装

Sakura

Docker

Java中的String类型到底占用多大的内存空间?

冰河

Java 性能优化 string 高并发 内存空间

无人机蜂群

冠冠

Elasticsearch 相关度评分

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

医者,智也:智慧医院破茧时,翻开转型新一页

脑极体

攀爬天梯的手机厂商,能从LG的滑落中学到什么?

脑极体

收音机焊接

aaaaa

元宵佳节快乐哦

Nydia

简单脚本监控SSL证书,并到期提醒续签

运维研习社

记忆这件“小事”「Day 7」

道伟

心理学 28天写作

我看JAVA 之 AbstractStringBuilder & StringBuffer & StringBuilder

awen

Java 源码 jdk string

未来赚钱的行业大预测

ES_her0

28天写作

分布式应用监控与链路追踪:SkyWalking

xcbeyond

微服务 监控 Skywalking 调用链 28天写作

分页问题-Offset-based Pagination和Cursor-based Pagination

诸葛小猿

分页 Offset-based Pagination Cursor-based Pagination

区块链能否一劳永逸地结束痛苦的选票争端?

CECBC

区块链

区块链打造“红娘链”,婚姻上链让爱更“牢固”

CECBC

婚姻

第五周作业:用例流程图

克比

云主机配置微信公众号后台全记录

小jack

28天瞎写的第二百四十五天:怎么样开始练习冥想?

树上

冥想 28天写作 正念

开源镜像仓库Harbor的镜像安全

运维研习社

Docker 安全 Harbor CI/CD

【LeetCode】猜字谜Java题解

Albert

算法 LeetCode 28天写作 2月春节不断更

【得物技术】Web Components 初探

得物技术

Web API 得物技术 Web Component 组件

产品经理第五周:如何绘制流程图?

克比

微信公众平台-渠道二维码开发

Geek_247dae

产品迭代最有力的工具:每周产品讨论会

boshi

产品策略 七日更

优雅地停止Spring Boot应用

韩斌

区块链与数字货币的发展到底有什么意义

CECBC

金融

这道 Hard 到底难在哪里?大概是难在考察的全是违反“人性直觉”的内容吧 ...

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

翻译:《实用的 Python 编程》02_07_Objects

codists

Python

341 万考生,除了图书馆他们去了这样一个地方

IoT云工坊

小程序 人工智能 物联网 云平台 24小时无人自习室

Nginx中常见header配置及修改

运维研习社

nginx Linux

还记得概率课本中的二项分布吗?在我们的网络判障中发挥了大作用!_文化 & 方法_运小希_InfoQ精选文章