赛题背景:网络拓扑中一个节点出现故障,往往会导致与其相连的其他节点也发生异常,进而产生大量告警,将真正根因淹没掉。当出现大量告警时,为保证电商业务的稳定运行,我们需要对这些告警进行分析处理,过滤掉无效的告警,准确定位出可能的疑似根因节点,缩短故障定位时间。
赛题分析:经过我们组的全体讨论,我们任务这个赛题的大致的流程为,拓扑图的构建->告警信息预处理->告警故障定位->局部可视化拓扑展示
(1)根据后期告警故障定位,需要构建拓扑图,根据json文件的节点关系,我们采用邻接矩阵的形式来描述拓扑图的结构。参考如下:
相关代码:
import json import numpy as np def readJSONFile(path): f = open(path, "r") return json.load(f) def createNodesMatrix(): arr = np.zeros((100, 100)) nodes_json = readJSONFile("data_release/topology/topology_edges_node.json") for node in nodes_json: for son in nodes_json[node]: arr[int(son.split("_")[1])][int(node.split("_")[1])] = 1 np.savetxt("arr.csv", arr, fmt="%i", delimiter=",") return arr if __name__ == '__main__': nodes = createNodesMatrix()
(2)告警信息预处理:
a.去重处理:在相同报警源,不同时间报的统一告警信息,进行去重处理。
b.分类处理:将拓扑图中的路径为依据,一条路径代表一个分类,具体参考:http://cdmd.cnki.com.cn/Article/CDMD-10079-2008073368.htm
(3)告警定位处理:
运用神经网络的相关知识,对告警信息的训练集进行训练,之后进行定位。
(4)可视化处理:
展示根因的局部拓扑图。