曾纪钧, 张金波, 梁哲恒
(广东电网有限责任公司, 广东, 广州 510663)
随着我国网络技术的不断发展,该项技术被应用于多个领域,有利于提升各领域的整体经济效益。企业内机房及网络设备的数量急剧增加,若机房内任意设备出现故障,可直接影响企业的信息命脉安全。机房是否能安全运行已经成为行业关注的焦点之一。当前各大企业均出现普遍缺乏专业机房设备管理人员现象,该现象使企业无法对机房设备进行有效管理和维护。为保证机房设备的安全运行,本文提出一种机房设备信息监控采集分发系统,可保证机房内各设备的安全运行。
为了提升系统的逻辑性能,采用JMS与CORBA作为核心规范,能够确保客户端接收数据的准确性,使系统内所有数据都能够保持一致。系统架构内部设置信息设备工况采集接口,其接口可为系统引入成熟可靠的Java技术,并按照系统功能进行层次划分,提升系统功能优势,其结构[1]如图1所示。
图1 系统逻辑结构图
将整体结构分为状态采集子系统(CCS)、状态订阅及分发子系统(SDI)等3部分。其工作流程:通过状态采集子系统对设备的状态数据进行获取,将数据传送至融合子系统后,经过对数据的处理,即可将各设备的状态融合数据存储至数据库,最后由状态订阅及分发子系统根据用户输入的请求向客户端提供各项数据服务。
本研究所设计的监控系统需对机房中网络专线、网络设备、主机设备以及存储设备进行数据采集。基本情况包括各种设备的基本信息,该信息属于一种较为固定的信息,通常情况下不会在生命周期内出现变化。安装情况数据少量变化信息,该类型的信息主要包括设备的安装牢固程度、规范性等数据。维护情况也属于一种少量变化的信息,其内部包含设备故障次数、可用系数等。运行情况属于一种实时变化的信息,主要包括设备的温度、电压等实时数据。采集分发系统在实际运行过程中,需要对相关数据进行收集统计,有利于维修人员的后期维修。系统对固定信息和少量变化信息进行录入时,可采用手工的方式进行多次录入或者一次性录入,对实时变化信息进行录入时,需要系统按照采样的频率实时采集数据。
信息采集分发系统在工作运行中需要通过3个数据库对各设备的状态信息进行存储,数据库分别为状态信息NoSQL数据库、Redis Key/Value数据库以及作业调度关系型数据库。状态信息NoSQL数据库可对多种信息进行归档。Redis Key/Value数据库主要用来保存最近一次的状态信息,使用户以最快的速度进行状态查询。作业调度关系型数据库可用来保存多项数据以及订阅信息。由于系统在运行过程中各项监控指标存在一定差异性,本研究摒弃传统的关系型数据库,选用NoSQL型Couch DB作为核心数据库。状态采集子系统API的接口服务主要通过RESTful方式对系统进行统一管理。订阅者通过系统进行设备及指标的订阅时,系统采用消息驱动的方式满足用户需求,该过程中设备的运行状态主要由状态采集方决定,而采集方只能被动订阅。为保证订阅过程中Message不会因系统瘫痪而出现丢失,采用Active Message Store机制对数据进行保障。对数据进行抓取和分发时,以设备为粒度。
1.4.1 订阅方管理模块
该模块主要负责实现订阅方和客户端的列表、新增、修改以及删除等功能,为有效防止非法的第三方接入,对客户端的接入做相关的安全认证。对非法的第三方接入系统进行预防时,可通过制定不同的接入密码和用户名,该方式有利于获取未授权的数据。一个订阅方可订阅多个指标,而同一个订阅指标可提供给多个不同的订阅方。为方便用户对历史状态进行查询,可将每个订阅方订阅内容的记录进行保存。系统对订阅方进行删除时,主要采取标记删除的方式,不是将订阅方的全部数据进行删除,若需要获取订阅方的相关数据,可通过历史查询来获取。
1.4.2 消息管理模块
消息管理模块可在设备出现新增或者客户需要获取的设备信息出现一定变化时对客户进行提示,并赋予可对数据进行配置的权限,有利于用户根据设备的状态对采集设备状态进行动态改变。客户端与系统在交互过程中,可产生大量指标数据以及交互控制信息等,为保证对该类信息的综合管理,向订阅方及时发送设备状态数据,如果发送数次都得不到回应,则可以默认已经收到订阅消息,即可将订阅指标配置标为空,从而引发订阅者的询问。除此之外,该模块对消息进行管理时,可将消息分为编辑和发送两个阶段,对于用户未点击发送的信息可保存至草稿箱。
1.4.3 消息发送模块
消息发送模块在系统中主要负责消息的发送,其工作过程为对设备的运行信息进行采集之后,发送至消息管道内部;然后通过消息队列机制向订阅者转达消息,消息发送过程中可充分结合实际情况,实现无用消息的过滤;最后将消息发送的优先级别作为主要依据,优先发送时效高的消息。
本文设计的硬件具有体积小、价格低、监控参数精度高等优势。机房设备信息监控采集分发系统硬件框图如图2所示。
图2 机房设备信息监控采集分发系统硬件框图
该系统的核心组成部分为单片机,对单片机的型号进行选择时,应充分结合单片机的可靠性以及性价比等因素,最终选择C8051F020单片机作为系统的核心控制器。该单片机具有64KB数据存储器接口以及电源监视器等多个外设部件,在多种部件的高度集成下,有利于提升系统的整体运行效率[2]。
为实现机房设备信息监控采集分发系统与外界形成通信联系,系统硬件部分设置以太网控制器,对该控制器进行型号选择时,选用全双工10 bit/s的RTL8019AS芯片。该芯片在正常工作状态下,主要利用8位模式维持系统运行。该芯片包含2套DMA:一套主要负责与C8051-F020单片机形成通信,可称之为远端DMA;另一套应用于系统内部,称之为本地DMA。由于单片机的数据存储空间较小,对该数据存储器进行扩充,使其内存从原来的4 KB到现在的64 KB,有利于满足系统的实际需要。
为保证数据库的功能稳定性,对该数据库进行设计时,应满足规范要求,使数据的冗余现象尽可能地减少,并且重复数据也应最大限度地减少。数据库可存储设备数据、指标订阅信息等数据,由于数据量过多,可采用动态及静态数据的方式建立数据库。该方式可保证数据的快速读取,提高系统的基本性能,有利于保证数据读取和写入的可靠性。该数据库对数据进行采集时,数据类型主要包括主机、网络以及存储设备。
该驱动程序的主要流程:首先利用RTL8019AS的跳线模式对MAC地址进行固化,该过程可在单片机内部进行,有利于保证固化结果的准确性;固化完成后可将单片机每次上电的数据写入RTL8019AS中。在RTL8019AS驱动程序中,可利用寄存器PAR0-PAR5将MAC地址写入驱动程序[3]。
为实现系统的驱动程序,对该系统进行驱动设计时,应利用以太网帧完成数据发送,对于远程数据的输送可利用远程DMA进行实现。其发送流程:首先将待发送的数据整理成数据包的形式,并将该数据包写入RTL8019AS驱动程序,使其存储至程序的发送缓冲区;上一个数据包发送完毕后,即可发送下一个数据包。以太网帧的接收主要通过查询的方式完成相关操作。为判断以太网帧是否顺利到达单片机,可通过对RTL8019AS驱动程序的工作状态进行查询的方式实现,若出现新的以太网帧到达单片机内,单片机可通过远程DMA将接收的数据读入静态RAM缓冲区。由于接收的数据存在一定差异性,可根据数据帧中协议字段的不同,将该数据提交至对应的上层接收函数进行网络层处理。
对机房设备信息监控采集分发系统的软件部分进行设计时,首先完成初始化工作,提升其软件功能的稳定性,机房设备信息监控采集分发系统主程序流程[4-5]如图3所示。
图3 机房设备信息监控采集分发系统主程序流程图
相关工作完成后,对机房设备信息进行采集,并对各设备的工作状态是否存在异常进行判断。若各设备的工作状态存在异常情况,即可向系统发送报警数据报文;若判断结果为否,可进入下一阶段--是否到达定时发送机房状态信息时间,产生的结果应向系统实时发送机房状态信息报文,并回到初始阶段。为保证系统的稳定性,采用7×24 h不间断监控,该软件程序可持续到系统硬性关闭后方停止。
本文为检测采集分发系统是否满足预期要求,采用集成测试的方法对该系统各个模块之间的关联功能进行测试。集成测试的内容包括消息订阅模块、查询管理模块以及发送模块[6]。
消息订阅管理集成测试是验证系统是否复合预期要求的关键,可反映出系统订阅消息的变化情况。测试结果如表1所示。
表1 消息订阅管理测试
每条消息均具有一定生命周期,为将消息的生命周期体现在系统内,需要对该模块进行测试,测试结果如表2所示。
表2 消息查询管理集成测试
消息发送模块的测试结果可直接决定系统消息发送的速度与准确性,消息发送模块集成测试用例如表3所示。
表3 消息发送模块测试
通过对系统的各个模块进行集成测试可知,该系统的覆盖率高达100%,可满足设计的预期值,并且系统内90%的功能均可正常使用,全部测试用例均已运行[7-8]。
本文主要对机房设备信息监控采集分发系统的逻辑架构、消息流动流程、模块功能划分、硬件以及软件等部分进行设计,对逻辑架构进行设计时,主要采用JMS以及CORBA作为核心规范,并为系统引入成熟可靠的Java技术,按照系统功能进行层次划分,使系统功能具有易实现、易扩充等优势。为实现系统的软件功能,对驱动程序进行设计,采用7×24 h的方式对系统进行不间断监控,该软件程序可持续到系统硬性关闭后方停止,有利于对系统的设备状态进行精准控制。