9 月 13 日,2025 Inclusion・外滩大会「开源嘉年华」正在限量报名中! 了解详情
写点什么

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

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

评论

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

HarmonyOS开发实战之AVCodec Kit重构美颜相机媒体处理管线

yimapingchuan

HarmonyOS NEXT

鸿蒙开发实战之DRM Kit打造美颜相机数字版权堡垒

yimapingchuan

HarmonyOS

鸿蒙开发实战之Ringtone Kit打造美颜相机音效互动体系

yimapingchuan

HarmonyOS NEXT

HarmonyOS开发实战之ArkGraphics 2D实现美颜相机贴纸功能

yimapingchuan

HarmonyOS NEXT

HarmonyOS开发笔记之Graphics Accelerate Kit加速美颜滤镜渲染

yimapingchuan

HarmonyOS NEXT

Next.js面试题:API深度解析

溪抱鱼

面试 前端 next.js

企业太小没钱做等保2.0怎么办?

等保测评

鸿蒙开发实战之Camera Kit重构美颜相机拍摄引擎

yimapingchuan

HarmonyOS NEXT

HarmonyOS开发实战之AR Engine打造美颜相机空间计算

yimapingchuan

HarmonyOS

企业如何推进数据安全合规建设?

等保测评

鸿蒙开发实战之Status Bar Extension Kit增强美颜相机状态交互

yimapingchuan

HarmonyOS

鸿蒙开发实战之Telephony Kit实现美颜相机通信互联

yimapingchuan

HarmonyOS NEXT

鸿蒙开发实战之Wear Engine Kit实现美颜相机穿戴设备联动

yimapingchuan

HarmonyOS

鸿蒙开发实战之AVSession Kit构建美颜相机媒体控制中枢

yimapingchuan

HarmonyOS

鸿蒙开发实战之Service Collaboration Kit实现美颜相机能力开放

yimapingchuan

HarmonyOS

鸿蒙开发实战之Media Kit重构美颜相机多媒体引擎

yimapingchuan

HarmonyOS NEXT

ArkUI-X跨平台应用改造指南

龙儿筝

基于 Vanna.AI 和 Amazon Bedrock 构建 Text-to-SQL 方案

亚马逊云科技 (Amazon Web Services)

鸿蒙开发实战之Test Kit构建美颜相机质量保障体系

yimapingchuan

HarmonyOS NEXT

鸿蒙开发实战之Image Kit重构美颜相机图像处理管线

yimapingchuan

HarmonyOS NEXT

鸿蒙开发实战之Universal Keystore Kit构建美颜相机金融级安全存储

yimapingchuan

HarmonyOS

HarmonyOS开发实战之User Authentication Kit构建美颜相机生物认证体系

yimapingchuan

HarmonyOS NEXT

HarmonyOS开发实战之XEngine Kit实现跨平台美颜特效

yimapingchuan

HarmonyOS NEXT

鸿蒙APP的开发流程

北京木奇移动技术有限公司

鸿蒙app 软件外包公司 APP外包公司

使用 Perfetto 观察 Chrome 内核工作过程

杨辰

chrome 前端 blink

鸿蒙运动项目开发:封装超级好用的 RCP 网络库(上)—— 请求参数封装,类型转化器与日志记录篇

王二蛋和他的张大花

鸿蒙开发实战之Audio Kit打造美颜相机沉浸式音效

yimapingchuan

HarmonyOS NEXT

ArkUI-X与Android联动编译开发指南

龙儿筝

鸿蒙开发实战之Media Library Kit重构美颜相机资源管理体系

yimapingchuan

HarmonyOS NEXT

HarmonyOS开发实战之Scan Kit实现美颜相机智能扫码

yimapingchuan

HarmonyOS NEXT

HarmonyOS开发实战之ArkGraphics 3D在美颜相机中的特效应用

yimapingchuan

HarmonyOS NEXT

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