(华北石油通信有限公司)
摘要:供电系统对于通信机房而言至关重要,一旦供电系统发生严重故障,需要快速制定出应急预案,使故障影响可控。本文提供一种对机房供电系统故障影响区域快速定位方法。该方法的实现思路是对机房供电系统建立数据模型,当监测到某个供电节点发生严重故障后,触发对供电系统的设备关系表进行的遍历操作,检索出所有与该供电节点关联设备树,并将数据同步至机房供电系统拓扑组件,以颜色填充等效果标识出影响区域。对故障影响区域的定位实现,为快速制定通信机房供电系统故障应急预案提供了有力的数据保障,有效提升运维自动化水平。
目前,动力环境监控系统用于实时监测机房基础设施运行状态,为机房管理自动化、运行智能化、决策科学化提供有力的技术支撑。但大部分系统基于通用性考虑,多侧重于设备监测的准确性和稳定性,但在数据库建模上,忽视了设备间的关联性。在部署阶段,被监测设备通常以空间为单位进行组织,用组态方式展示出来,这种方式有利于用户快速定位故障设备,但由于缺乏设备间的关联性描述,故障告警只能体现设备单体故障状态,无法评估或预测该故障的影响区域,而这点对于全面掌控供电系统的故障影响至关重要。
当供电系统出现故障时,运营管理者更关心机房哪些设备会受到影响[6],而这多依赖运维人员对供电系统的熟悉程度和处理故障经验,对于不熟悉系统的维护人员多通过人工检索组网图完成,时效性很差。而如果能解决供电设备关联性问题,便可通过程序对供电系统进行分析,快速定位出终端用电设备,并关联出该故障点上下游供电设备。这样,可有效收敛故障边界,提升应急响应时间。
由于大部分动力环境监控系统都存在封装性,这导致系统扩展性差,用户只能停留应用层面,特定需求只能通过厂家定制开发实现,这样,增加了投入成本,也限制了用户主动运维的积极性。实际上,实现该功能难度并不大,只要考虑好如何描述设备间的逻辑关系,并依此关系建立数据模型,围绕此模型进行程序开发即可。本文以某数据机房供电系统为例,为该机房供电系统设备建立数据模型,通过对故障节点的分析,快速定位出故障影响区域,并在矢量拓扑图上展示出来。
1、实现思路
1.1、建立设备间数据模型:
该运维应用以某数据机房供电系统为参考,以拓扑图方式构建出某数据机房供电系统组建结构。图1机房供电系统拓扑图的局部
图1机房供电系统拓扑图
Computer room power supply system topology
该供电组网的局部拓扑结构比较简单,由图可见供电设备并非一对一的链表关系,相对于可靠性要求高的机房,都存在多机并联或冗余的情况,因而实体关系描述上存在多对一或一对多的情况。基于此可用多叉树实现对整个供电系统的描述。通过数据建模,构建出供电系统的各设备的关联性。实际应用中,可从告警事件中获取到设备ID,依据设备间的关联性,可快速遍历出故障设备关联的上下游设备。表1将对依据模型建立起立表单中的主要字段进行了简要说明。图2展示了该表查询结果。
字段名称 | 含义 |
NodeID | 设备在供电系统的中的节点ID |
DeviceID | 设备ID,和动环系统中的设备ID对应上,可以从动环数据库中导出来 |
DeviceName | 设备名称和动环系统中的设备命名一致,可以从动环数据库中导出来 |
ParentID | 父类设备的NodeID;但如果有多个设备共同作用于子类,该值为复合值,复合值为6位,每三位是一个设备的NodeID,如UP-2-1并机输出柜是两个UPS并机后供电,它的值为9010(9是UPS2的NodeID,10是UPS4的NodeID)。这种复合值在实际供电系统中很常见。 |
Groups | 子类设备的ID,该缺省值为0,如果下游设备的ParentID是个复合值,改值为下游设备的ParentID |
表1字段描述 Field description
图2 记录查询Query display
1、遍历实现
遍历程序采用python语言编写,当动力环境监控系统上报某供电设备停电告警后,以告警设备为锚点分别进行上行和下行的遍历,从而获取到与之相关的完整的供电设备链的输出。假设图1-1中的UP-2-1并机输出柜出现停电,输出结果如下:
{'alarmNode': 'UP-2-1-1UPS并机输出柜', 'upSearch': ['UPS2', 'AA7馈线柜-7QF2', 'AA15市电引入柜', '2#变压器', '6609专线', '9617专线', 'UPS4', 'AA14馈线柜-7QF2'], 'downDict': ['UP-2-2输出柜', 'UP-C-2输出柜', 'UPS-2-3-1QF1', 'UPS-2-3-2QF1', 'UPS-2-3-3QF1', 'UPS-2-3-4QF1', '列头柜1', '列头柜2', '列头柜3', '列头柜4', '列头柜5', '列头柜6', '列头柜7', '列头柜8', '列头柜9', '列头柜10']}
输出结果是和故障节点相关的完整设备链,即故障影响区域。这些数据从后端传递给前端,并在矢量拓扑图上展示出来。图3 是告警触发后对机房供电系统上行的遍历代码[1][2]。
图3 上行遍历代码Upward traversal code
2、展示的实现:
应用采用B/S架构,后端为DJANGO,前端为HTML5+JS。供电系统拓扑图采用SVG格式绘制,SVG为可缩放矢量图展示效果好,且基于XML。绘制完成的SVG图可嵌入到HTML中<embed id="powernet" src="1.svg" type="image/svg+xml">[。供电设备停电告警会触发后端进行设备遍历,并把遍历结果被发送给前端。前端根据接收数据定位SVG文件中对应元素,并通过代码对其属性进行操作(如颜色填充或闪动等特效),把故障设备及相关的上下链设备和其他设备区分开,实现了对故障边界的收敛。该处理方式对拥有庞大且组网结构复杂的供电系统而言,能显著提升应急处理的时效。
2.1后端的实现
后端主要功能是根据告警节点把遍历出数据集传递给前端。在实际应用场景中可通过动力环境监控系统的北向接口获取实时告警事件。测试阶段是通过前端发送设备名称给后端,来模拟从动环获取供电设备停电告警事件。图5 为后端主要代码[3]。
图5 后端主要代码Back-end core code
2.2 前端的实现:
前端测试浏览器为IE。根据后端传递的数据匹配对应的SVG控件对象,并填充该控件,从而实现了对遍历结果的展示。需要注意的是当页面加载完成后才能操作SVG,程序里时延100ms后开始操作,具体时延调整根据页面的复杂程度进行调整。图六为前端主要代码[4][5]。
图6 前端主要代码Front-end core code
2.3开发及测试环境:
Window7+Djang(2.0.5)+SQLite+IE(11.0.115)
3、结束语
供电系统作为关键基础设施,其安全性决定了整体运营质量。为构建供电系统安全保护措施,除了设计阶段冗余保障,运维阶段需要更多的快速定位和消除故障保护措施。本文提供了一种对供电系统故障影响区域快速分析定位的实现方法,弥补了现有监控系统的不足,同时,通过投石问路,同业内从业人员共同探讨如何更多的通过自动化运维方式有效保障供电系统安全。