HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

百度网络监控实战:多维度分析方法

  • 2019-08-02
  • 本文字数:2680 字

    阅读完需:约 9 分钟

百度网络监控实战:多维度分析方法

干货概览


在前一篇文章《百度网络监控实战 | 多维度分析应用场景》中,我们简单介绍了一种多维度分析方法,用于预选疑似故障区域,可以大幅减少网络监测的误报。在本文中,我们会结合网络监测数据的特点,详细介绍这种多维度分析方法的实现细节

逐层下钻分析

我们要寻找的维度组合具有贡献度高、一致性好两个特点,在寻找这些目标维度组合的时候,最直接的方式是逐个维度组合进行检测,但是网络监控里有几百万个维度组合,逐个检查会消耗很多时间。


我们可以从全局数据出发,选择最能区分成功、失败探测样本的维度进行下钻。在下钻的过程中,我们可以选择把数据按照所选维度的各个取值拆成多份(如:源机房=A、源机房=B、源机房=C……),也可以选择把数据按照是否包含所选维度取值拆成两份(如:源机房=A、源机房!=A)。在网络质量监测中,拆成两份的方案要比拆成多个的方案更好。


我们用一个例子来说明原因。假设在某一时刻内网同时发生了两个故障,分别是机房 A 出口故障和机房 B 入口故障。在这个情况下,正确的输出应当包含两个维度组合,分别是“源机房=A”、“目标机房=B”。


从全局数据出发,如果我们按照源机房的各个取值把数据拆成多份,如图 1,“目标机房=B”这个维度组合无法出现,因为它在按照“源机房”维度拆分时已经被拆成“源机房=B,目标机房=B”、“源机房=C,目标机房=B”等多个小维度组合。这样一来,“目标机房=B”这个故障将输出为多个子维度组合的故障,不能准确体现故障范围


而如果我们按照数据是否包含源机房 A 把数据拆成两份,如图 2,“目标机房=B”可以更加完整地包含在“源机房!=A”的分支中,再经过一次拆分即可得到“源机房!=A,目标机房=B”这一维度组合。这个维度组合应当解释为,在我们认为“源机房=A”存在故障的情况下,把受到这个故障干扰的数据去掉后(“源机房!=A”),“目标机房=B”存在故障,所以“源机房!=A,目标机房=B”可以上升为我们的目标维度组合“目标机房=B”。



图 1 按照所选维度的各个取值拆成多份下钻的样例



图 2 按照所选维度取值拆成两份下钻的样例


这种分层下钻的方法能够找到贡献度高、一致性好的目标维度组合,同时减少了需要分析的维度组合数量,比逐个维度组合进行检查可以少花很多时间

基于决策树的自动分析

可以看到,这种分层下钻的过程和决策树生成的过程是比较类似的。


决策树生成算法会从全局数据出发,选择最能区分正例负例的属性进行划分,然后对子数据集递归地进行划分,直到继续划分不太能区分正例和负例。所以前面的分层下钻相当于把探测样本的结果作为类别、维度取值作为属性,构建了一棵二叉分类决策树。


首先,把一个探测样本作为一条数据,探测样本的结果作为类别,把成功记作正例,失败记作负例。这样,最能区分正例、负例的属性也就是最能区分成功、失败样本的属性。


接下来,对探测样本进行 One-Hot 编码,每个维度取值展开成一个属性。前面提到的“源机房=A”对应一个属性,属性有两个取值“源机房=A”、“源机房!=A”,类似地,“目标机房=B”、“源 ToR=1”等维度取值也分别对应一个属性。这样,对数据集进行划分时使用的属性就是用来把数据拆分成两份的维度取值。


数据经过预处理之后,接下来的下钻过程可以借助决策树生成算法完成。


如图 3,从全局数据出发,在各个属性(“源机房=A”、“目标机房=B”、“源 ToR=1”……)中选择一个最能区分正例(成功样本)和负例(失败样本)的属性(“源机房=A”)进行划分,之后继续对子数据集递归地进行划分,直到子集(“源机房=A”)使用各个属性划分的区别都不大。



图 3 二叉分类决策树生成样例


在生成的决策树中,每一个叶子结点的成功、失败探测样本都是分布比较均匀的,一致性较好,所以,成功率显著低于正常情况的叶子结点就是需要报告的故障区域。



图 4 二叉分类决策树上进行检测的样例


这样分析得到的目标维度组合排除了直接判定法误报的情况,所返回的维度组合基本上能够正确反应网络故障影响的区域范围。

属性选择方法

对于决策树的每个节点,在选择属性进行划分的时候,我们的候选属性是所有维度取值,比如“源 ToR=1”、“源 ToR=8”、“源机房=A”、“源机房=H”、“目标机房=A”、“目标机房=H”等等,针对每个候选属性,会使用一个函数进行打分,描述区分正负例样本的效果,最后选择分数最高的一个属性。


常见的决策树生成算法在正负例样本不平衡的时候表现比较差,而网络监测中失败样本(负例)的数量远少于成功样本(正例),让这个问题变得比较明显。


我们修改了选择属性时的度量函数,避免比较成功样本和失败样本之间的相对大小,而是比较成功样本在各子节点的分布和失败样本在各子节点的分布。


在把全局数据划分为“源机房=A”、“源机房!=A”的时候,成功样本在两个子集的分布是,我们把这个分布记作,失败样本在两个子集的分布是,记作,那么,分布 P 和 Q 差异最大的属性也就是最能区分成功样本和失败样本的属性。


我们选择了海林格距离)来描述这两个分布的差异。把全局数据划分为“源机房=A”、“源机房!=A”的得分:



类似地,可以计算其他属性的海林格距离:



可以看到,使用源机房 A 进行拆分的海林格距离最大,所以选择按源机房 A 这个属性把数据拆成两份,这个划分结果和人工下钻时的感受是一致的。

总结

本文提出的这种多维度分析方法考虑了很多内网质量监测的特点。考虑到维度组合非常多,我们在寻找目标维度组合的过程中进行了剪枝;考虑到目标维度组合可能是多个,我们选择的剪枝方案是二叉决策树;考虑到成功样本比失败样本多很多,我们在生成决策树时使用海林格距离选择属性。


在其他场景中,数据可能没有这样的特点,这些情况下,需要选择什么指标描述一致性,选择什么方法进行剪枝,有的已经有了一些实践经验,有的还在尝试,需要进一步探索。欢迎大家留言交流相关场景和问题。


作者介绍


李聪


百度高级研发工程师,负责百度智能运维产品(Noah)监控数据分析相关工作,重点关注故障定位、异常检测等相关领域技术。


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


原文链接


https://mp.weixin.qq.com/s?__biz=MzUyMzA3MTY1NA==&mid=2247485107&idx=1&sn=51ea71c2882f3ed93dfb72f8c3699473&chksm=f9c37f7aceb4f66c0161ce303fcf775ec6e25b6fa0bfe892c07330ae883ba6ed2a61d874e3c7&scene=27#wechat_redirect


2019-08-02 08:002482

评论

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

常见光模块的封装类型有哪些?

小魏写代码

特权账号管理之定期改密篇

尚思卓越

网络安全 定期改密

同济 MBA × 和鲸:聚焦商业数据思维培养,赋能工管人才转型升级

ModelWhale

人才培养 企业数字化转型 数智化 MBA 同济大学

流程图怎么画?3个好用的在线流程图软件推荐,绘图再也没烦恼!

彭宏豪95

可视化 流程图 在线白板 画图工具 流程图绘制

2023年前端流行的新技术

树上有只程序猿

前端 前端技术

代理服务IP的选择上有什么技巧

Geek_bf375d

IP HTTP 代理IP 免费代理ip 跨境电商

聚势启新,KaiwuDB 生态联盟沙龙首站落地长春

KaiwuDB

Docker 和 Kubernetes:技术相同和不同之处

EquatorCoco

Docker k8s K8s 多集群管理 kubernetes 运维

足球盘口数据获取:API接口与数据采集的权衡之道

软件开发-梦幻运营部

在AI时代,提升程序员竞争力的关键策略

不在线第一只蜗牛

人工智能 编程 程序员 AI

公司让我开发一个管理系统,有了它,So easy!

互联网工科生

软件开发 低代码 快速开发 JNPF

保持http代理服务器的方法

Geek_bf375d

IP HTTP 跨境电子商务 跨境电商 #HTTP

爬虫代理ip和代理ip池确保用户隐私和数据安全的问题

Geek_bf375d

代理IP 代理IP设置 跨境电商 IP 路由 #HTTP

云图说|华为云主机安全新版本上线

华为云开发者联盟

华为云 华为云开发者联盟 华为云云图说

英特尔锐炫GPU助力AI向大众用户市场普及

E科讯

RestCloud AppLink已支持的数据源有哪些?

RestCloud

零代码 APPlink 自动化集成

快速拉取聚水潭单据的ETL工具

RestCloud

数据同步 ETL

投资机构Janus Capital Group为Rola-IP品牌融资700万美元

Geek_bf375d

IP 代理IP 免费代理ip 跨境电商 #HTTP

时序数据库 TDengine + 高级分析软件 Seeq,助力企业挖掘时序数据潜力

TDengine

tdengine 时序数据库

为什么要使用动态IP代理爬取

Geek_bf375d

IP HTTP 跨境电子商务 代理IP 跨境电商

探索向量数据库 | 重新定义数据存储与分析

-亦世凡华、

数据库 亚马逊云科技 向量数据库

低代码平台如何提高开发效率?

高端章鱼哥

软件开发 低代码 JNPF

Ansible自动化部署工具-role模式安装filebeat实际案例分析

快乐非自愿限量之名

自动化部署

正式开源!网易有道上线“易魔声”语音合成引擎

有道技术团队

人工智能 语音合成 TTS

未来之选:为什么向量数据库是您的数据管理利器

熬夜磕代码、

数据库

Databend 开源周报第 119 期

Databend

使用Amazon WAF有效保护托管Web应用

Hanson

影响HTTP代理IP的稳定性的相关因素

Geek_bf375d

IP 代理IP 免费代理ip 跨境电商 #HTTP

在HarmonyOS上实现ArkTS与H5的交互

HarmonyOS开发者

HarmonyOS

Layer 2 真的为以太坊扩容了吗?

Footprint Analytics

以太坊 Layer 2

2023年必试的7款软件项目管理系统

爱吃小舅的鱼

项目管理 项目管理软件 项目软件管理系统

百度网络监控实战:多维度分析方法_软件工程_李聪_InfoQ精选文章