闫祎颖,何云瑞,陈 亮,王 宁,李 扬,郑思远
(国家电网有限公司信息通信分公司,北京 100761)
随着大数据、云计算、人工智能等新兴技术的快速发展,电力行业信息系统建设也在不断深化。系统数量在增多且架构日趋复杂,一次大的异常或故障往往可能从网络、安全、系统、应用等多层次监控渠道产生大量告警事件,而这些告警之间关联复杂,运维人员无法快速定位故障原因,导致业务无法快速恢复。
目前,国内外研究系统故障定位的技术主要基于故障决策树、神经网络两个方面。文献[1-2]通过研究故障决策树来构建故障诊断系统,其中文献[2]同时结合CMDB进行了研究。文献[3]详细介绍了CMDB的构建。文献[4-5]则提出基于神经网络的故障诊断方法。
本文提出一种基于CMDB的信息系统故障定位技术,通过将CMDB中配置项之间的关联关系与BP神经网络技术相结合,推理出信息系统的故障根因。
基于CMDB的故障定位技术的架构自底向上分为数据采集、数据处理以及数据应用三层,如图1所示。
图1 基于CMDB的故障定位技术的架构设计
数据采集层实现监控平台对运维对象的数据采集。运维对象包括但不限于硬件设备、网络设备、中间件、数据库、应用服务等。
数据处理层实现对数据的获取、编码、分析推理以及处置。该层核心为CMDB、故障知识库以及推理机。CMDB数据采集层采集到的数据汇总,并提供相关对象的配置属性和关系,为故障定位提供基础。故障知识获取模块负责将这些数据转换成故障知识库可以识别的形式。而故障知识库模块通过BP神经网络模型对获取的数据进行分析,并通过故障推理机调用网络模型来进行推理,直到得到结论,推理所得的结果可以向上层提供故障定位以及预测功能。
数据应用层主要是对故障定位功能提供面向用户的接口,同时可以进行故障预测以及故障自愈的功能。当定位出故障根因时,用户可以在故障自愈模块针对定位出的故障根因,查询是否可以一键处置。若可以一键处置,则执行一键处置脚本库中的相应脚本,从而实现故障自愈。
构建一个成功的CMDB,重点在于CMDB模型的顶层设计,本章将针对CMDB的配置项分类、属性以及关系设计进行深入剖析。
关于配置项应遵循精而不多的原则。本文为配置项设计了四级分类,由小到大,精度依次增加。基础设备分类部分具体示例如表1所示。
表1 部分配置项分类示例
确定配置项属性时,应针对每一个配置项分类来设计,每个层级之间的属性是具有继承性的。同时,需根据逻辑性划分,如管理属性、技术属性等。
配置项关系是CMDB的重要价值体现之一,当故障发生时,可以通过配置项关系,准确快速的掌握相关信息,定位故障根因,评估故障影响范围,从而快速恢复业务。配置项关系大致包括包含、属于、运行在、安装在、连接等。图2为一个业务系统的CMBD配置项关系示例。
故障知识获取模块用于将知识转换成一种神经网络可以识别的形式。本章介绍了基于规则的专家系统常用到的产生式规则,在此基础上将知识转换成神经网络存储需要的数值形式。
产生式规则的一般形式为A→B或If A Then B。在信息系统的故障定位场景中,前提A为当前所有监控状态,结论B为故障根因。监控状态可以有多个,但根因只有一个,因此可表示为If a1^a2^…^anThen b。
知识通过产生式表达后,需要转化成数值的形式存储在神经网络中。设事实的域为U,U={ fi|i=1,2,…,n}, fi为第i个事实,n为事实的总数,本文中为信息系统监控总数,也为二进制编码的码长。结论的二进制编码码长可根据故障根因个数进行设定,本文设定其与前提的码长相等。
图2 CMBD配置项关系示例
监控状态分为两类,正常与异常,分别用0和1表示。假设某个系统由2个应用节点、2个数据库服务器以及一台负载均衡设备组成,则其部分监控及状态如表2所示,故障根因如表3所示。
表2 某系统部分监控及状态
表3 某系统故障根因
采用如上提出的形式表示知识,如下例所示:
IF 数据库实例1无法连接 and 数据库实例2无法连接 and 应用节点1端口号为7100 HTTP无法连接 and 应用节点2端口号为7100 HTTP无法连接 and 系统健康运行时长指标异常 Then 数据库会话连接数过多。
经过转化为:0011110001→1000000000,将数值形式输入到BP神经网络,对知识进行存储。
故障知识库是用来存储知识的,本文使用BP神经网络来构建故障知识库。
BP神经网络是一种多层的前馈神经网络,其主要特点为前向传播信号,反向传播误差。
如图3所示为一个典型的三层BP神经网络模型。第一阶段是信号的前向传播,从输入层经过隐含层,最后到达输出层;第二阶段是误差的反向传播,从输出层到隐含层,最后到输入层,依次调节隐含层到输出层以及输入层到隐含层的连接权和阈值。
图3 三层BP神经网络模型
假设输入层的节点为n个,隐含层的节点为m个,输出层的节点为z个,第k个输入样本及对应的期望输出为Xk以及Yk,则BP神经网络学习算法步骤如下。
第一步,给出输入层到隐含层以及隐含层到输出层的连接权Wih、Vho,隐含层的阈值Th,并随机给输出层的激活值To赋一个(0,1)间的较小值。
第二步,输入样本Xk=( x1(k), xz(k),…, xn(k)),期望输出为Yk=( y1(k), yz(k),…, yz(k)),将x1(k)输入,依次计算:
其中,Hh为隐含层节点的输出函数,I0为输出层节点输出函数。
第三步,计算I0与之间的误差a0:
第四步,将误差bh反向分配至隐含层的节点:
第五步,修正连接权Wih、Vho,α,β为学习率:
第六步,调整阈值Th、To:
第七步,若a0足够小或者为零时,停止学习,否则选择下一个样本,从第二步开始迭代执行。
结合章节3.3中提出的知识表示方法,则章节3.3中某系统的BP神经网络模型输入层与输出层均为10个神经元。隐含层节点个数根据经验公式来确定,其中m与n为输入层与输出层神经元个数,a为1~10的调节常数,则不同个数的隐含层训练情况如表4所示。因此,隐含层个数可选11或13,本文选择11个,则某系统的BP网络模型为10-11-10结构。将某系统故障的样本集放入训练好的BP神经网络模型进行测试,结果如表5所示,最大误差为0.000 3。
表4 不同个数隐含层训练情况
表5 某信息系统BP神经网络模型测试结果
推理机制大致分为3种,正向推理机制、反向推理机制以及混合推理机制。本文选用正向推理机制来进行推理。
正向推理机制是由事实推出结论的过程,具体推论过程大致如下。
第1步:将CMDB获取到的监控告警以及相关信息作为初始信息放入动态事实库。
第2步:将初始事实作为BP神经网络模型的输入。
第3步:用训练好的BP神经网络进行推理。若推理生成新知识,则更新知识库。
第4步:判断结果是否为故障根因,若是,则输出根因;否则,进行第5步。
第5步:若CMDB中有相关信息可以补充新事实,则将新事实与初始事实作为输入,跳转至第3步;否则,失败退出。
本文研究基于CMDB的信息系统故障定位相关技术,对CMDB的配置项分类、属性以及关系进行了深入研究,在此基础之上分析BP神经网络算法,结合BP神经网络模型实现信息系统的故障根因定位,并对信息系统样本集进行了测试,实现了故障根因快速定位,提高了业务恢复效率。同时,结合一键处置功能实现了故障自愈。