写点什么

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

  • 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:002777

评论

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

山东省正规等保测评机构名称以及地址一览表

行云管家

等保 山东 等级保护 等保测评

亚马逊云科技携手埃森哲、Anthropic助力企业打造负责任的AI

财见

SpringBoot集成ElasticSearch,实现模糊查询,批量CRUD,排序,分页,高亮...

Java技术精选

分享一些大数据处理算法

Chris Zhang

大数据

自定义对象池实践

FunTester

ChatTuGraph:通过大模型“与图对话”

TuGraphAnalytics

graph FineTuning Text2GQL

一站式大数据开发与治理产品实践

Jackchang234987

元数据 大数据平台 数据开发平台 数据中台数据治理

OLAP性能再获突破!火山引擎ByteHouse性能白皮书发布

极客天地

学算法要读《算法导论》吗?

京东科技开发者

大文件上传实践分享

京东科技开发者

比 MyBatis 效率快 100 倍...

Java技术精选

阿里云实时计算Flink的产品化思考与实践【上】

Apache Flink

大数据 flink 实时计算

基于vite多页面实现多端同构开发和部署

京东科技开发者

CQ 社区版2.10.0 | 新增 SQL 审核、全新英文版上线…

BinTools图尔兹

mongodb mongo 数据库管理 SQL审核 SQLite编辑器

PostgreSQL数据迁移至Doris:一站式解决方案

NineData

postgresql Doris 实时数据分析 实时同步 NineData

聊聊我做测试开发的十年心路历程

阿里技术

测试 开发

日立公司采用元太科技电子纸实现了无纸化营运

财见

软件测试学习笔记丨Allure2报告中添加附件-日志

测试人

软件测试 测试开发

DevOps迈向标准化,平台工程让开发运维更轻松

SEAL安全

DevOps 运维 平台工程

最新 Apifox 3 月更新:详解多分支升级、Query 参数支持枚举、自定义快捷键

Apifox

程序员 Apifox API 接口工具 API 工具

是什么阻碍了你的成长

老张

个人成长 职场成长

“专业敏捷教练课程” 6月1-2日 · CSP-SM认证周末班【晋升高阶享多重福利】

ShineScrum

TikTok直播专线是什么?有什么用?

Ogcloud

海外直播专线 海外直播 tiktok直播 tiktok直播专线 海外直播网络

库存控制秘诀:鞋服品牌如何避免库存积压风险

第七在线

保障校园网络安全用堡垒机的几个原因分析

行云管家

网络安全 数据安全 堡垒机 等保合规 校园

如何轻松管理你的海外主机?实用技巧大公开!

一只扑棱蛾子

海外主机

同城双活:交易链路的稳定性与可靠性探索

得物技术

Java 后端 中间件 双活

新版Redis不再“开源”,对使用者都有哪些影响?

华为云开发者联盟

数据库 redis 华为云 华为云开发者联盟 华为云GeminiDB

ECS公网连接指南:精明选择公网IP计费策略

极客天地

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