专栏首页方盼的专栏基于知识图谱算法的网络故障智能诊断探索
原创

基于知识图谱算法的网络故障智能诊断探索

17年这波AI浪潮推动着各行各业在进行着智能化和AI+的尝试,而当前业界在网络故障智能监控诊断这块到目前为止还没有可参照的成熟案例。知识图谱相对于很火的深度学习,其可解释性为智能诊断提供了新的选项和思路。

背景

      在当前的网络监控系统中,我们主要是针对单个指标和网元进行了监测告警,以及一些特殊的布尔逻辑进行了简单的同类事件收敛,给网络运营同事进一步处理。随后运营同事根据自身经验分析各类事件,找到根因问题并解决。

      我司作为运营着百万级服务器的公司,基础网络设施的规模也十分庞大、复杂。与之伴随的是每天数以万计的网络异常事件,这给网络运营带来了巨大的挑战。本文从网络的拓扑知识出发,设计了一套基于图算法的故障诊断系统,对网络的智能运营进行了一些探索。

整体思路

      下图是网络中的一个简单的组成部分拓扑,我们可以看到网络是由网元和网元间的连接构成,其中连接既包含物理上的,也包含逻辑上的,一个网元(如交换机、路由器)内部也有复杂的结构和特性。

图1 部分网络结构示意图

      由于公司整个网络规模巨大,网络中时刻都会有各种事件发生,包括设备syslog告警、流量包量异常、路由变化、异常变更等等,我们可以简单抽象对应到下图中,黄色部分为产生异常事件的网元设备。

图2 异常网元设备示意图

      从图中我们看到产生异常事件的设备是存在community聚集现象的,而在实际中同一个事件簇很有可能是由某一个根因事件造成的,而产生这一个根因事件的网元很大概率就在这个簇的枢纽和最中心位置。

技术方案设计和实现

图3 总体方案示意图

        上图是故障智能诊断的整体方案,大体上分为如下部分:

a)      网络信息知识图谱构建

        我们当前主要使用关系式数据库来描述和存储全网各类信息,包括每个网元的属性、网元之前的连接关系、专线描述等。当涉及拓扑信息查询、路径搜索等使用场景时需进行大量昂贵的join表操作,同时连接关系的更新维护也较为复杂。这里我们调研了业界主流的一些图数据库后,最终基于易用性,成熟度等考虑选用了neo4j做为网络信息知识图谱的存储引擎,见示意图1。

b)     统一网络事件库构建

        如图3所示,事件库需要导入多种类型的事件,因此我们选用了schema-free的elastic-search(es)作为我们的事件库存储。在此基础上构建event-manager从各类事件源导入至事件库中,并提供API给诊断程序调用。

c)      网元着色和事件过滤

        在有了网络信息知识图谱和事件库之后,我们就可以选取时间片,将产生异常事件的设备在图谱上着色,在实际使用图数据库neo4j的实现过程中只需给对应节点添加一个Label即可。这里值得注意的是,我们可以选择需要过滤的事件类型来定制调节诊断程序的偏好。着色后的状态如上面图2所示。

d)     事件簇发现和边界划分

        在图2异常网元着色的基础上,我们把其它的正常的节点忽略掉,就会得到如下图4的结果。

图4 事件簇发现示意图

        接下来要做的事就很一目了然了,找出图中所有的连通子图。这里如果使用neo4j的话,甚至都不需要自己去实现具体代码,call一个算法库函数即可

CALL algo.unionFind.stream('Abnormal', 'NetLink', {})
YIELD nodeId,setId
RETURN nodeId,setId;

         这样我们便得到了所有的事件簇。

e)     基于中心度的事件簇分析和根因定位

        取得所有事件簇之后,我们对每个簇进行中心度计算然后排序,中心度top N就是我们想要得到的最终的根因事件大概率所在故障点。

        中心度计算有很多算法可以选择:degree、closeness和betweenness等等,这里可以根据实际需要来选择。我们这里选择的betweenness算法,即计算结点被经过的路径条数最高的那个。

        结果如下图5所示,红色结点就是诊断出的根因故障点。

图5 基于中心度的根因定位示意图

总结和展望

        以上就是基于知识图谱相关算法的网络故障智能诊断程序的思路和实现方案,现已完成开发和离线数据测试验证。实际中整个方案的每个部分都有很多细节和问题值得推敲和雕琢,后续我们将依据现网运行效果进行持续的优化演进。

        同时在这里我们还有很多尝试正在进行,比如事件簇根因的特征提取、分类,基于异常事件指数回归的根因节点发现,欢迎大家多来指点交流。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 千亿级服务器监控数据存储实践

    公司目前有几十万台左右服务器,TMP(腾讯监控平台)平均每天采集1200亿+监控数据,本文将从当前存储架构存在的问题出发,介绍使用大数据平台组件 Hbase 存...

    jackiefang
  • 一起来做扩脑运动-逻辑思维题分享(1)

    逻辑思维(Logical Thinking),是思维的一种高级形式。是指符合某种人为制定的思维规则和思维形式的思维方式,我们所说的逻辑思维主要指遵循传统形式逻辑...

    老九君
  • 关于面试总结7-linux经典面试题

    现在做测试的出去面试,都会被问到linux,不会几个linux指令都不好意思说自己是做测试的了,本篇收集了几个被问的频率较高的linux面试题

    上海-悠悠
  • textarea的中文输入判断与搜狗输入法的特殊行为

    虽然要讲解的知识点是通用的,但是还是要介绍下我的应用场景和测试环境。 0.1 应用场景和测试环境 我的应用是一块使用Html Canvas开发的黑板,在黑板上实...

    用户1631416
  • 跳表原理及C++实现

    二分查找底层依赖的是数组随机访问的特性,所以只能用数组来实现。如果数据存储在链表中,就真的没法用二分查找算法了吗?实际上,只需要对链表稍加改造,就可以支持类似“...

    evenleo
  • 智能网联已成为新风尚,车企将如何应对消费者的需求?

    工信部官网4月16日发布2020年智能网联汽车标准化工作要点。2020年是完成智能网联汽车标准体系建设第一阶段目标的收官之年,也是下一阶段工作谋篇布局之年。

    庄帅
  • 计算机视觉著名数据集CV Datasets

    Detection PASCAL VOC 2009 datasetClassification/Detection Competitions, Segm...

    triplebee
  • 事件驱动和消息驱动

    消息驱动和事件驱动很类似,都是先有一个事件,然后产生一个相应的消息,再把消息放入消息队列,由需要的项目获取。他们的区别是消息是谁产生的

    Fisherman渔夫
  • 如何在Ubuntu上使用SSL来保护Nginx

    腾讯云SSL是腾讯云的证书颁发服务,SSL证书(SSL Certificates)提供了安全套接层(SSL)证书的一站式服务,包括证书申请、管理及部署功能,与顶...

    尘埃
  • Github上基于lodash和lowdb json查询服务器json-server

    Github上基于lodash和lowdb json查询服务器json-server

    MiaoGIS

扫码关注云+社区

领取腾讯云代金券