张海阔,陆忠华,刘 芳,李井泉,孙辰军,王 珏
(1.中国科学院 计算机网络信息中心,北京 100190;2.中国科学院大学,北京 100049;3.中国互联网络信息中心,北京 100190;4.国家电网 河北省电力公司,河北 石家庄 050022)
为了监控网络设备的运行状况,需要实时采集网络中各个设备的运行参数,并发送到主控计算机,由主控计算机对网络设备的运行参数进行分析,从而确定设备是否发生故障,并在故障发生时及时采取相应的措施以维护网络的稳定。
现有技术中,通常由主控计算机来分配采集任务,采集机实时采集网络设备的各项运行参数,其中每个任务需要处理多个采集对象(待采集设备),每个采集对象包括多个采集指标(不同的参数)。然而随着网络规模的快速增长,网络管理中通常需要采集成千上万个设备,每个设备包括多个采集指标,因而需要采集的数据是海量的。如果多个采集任务在同一时间执行,将造成瞬时占用的带宽过大,同时如果并行执行的采集子任务数过少,虽然可以减少带宽的占用,但又会浪费采集机的计算资源。由于在现有网络设备监控技术中,网络带宽资源以及采集机的计算资源都是较为珍贵的有限资源,因此如何既避免占用过多的带宽资源又充分利用采集机的计算资源,就成为网络管理中海量告警数据采集和处理系统中急需解决的首要技术问题。
故障管理是网管系统中的核心之一,是网络运行健壮的有效保障。分析采集到的运行状态信息,分类挖掘,预判、及时发现和快速排斥故障是保障网络可靠性和可用性的重要措施[1-3]。
当前,基于网管协议(例如:SNMP协议、netconf协议和CWMP协议等)的网管系统能够获取设备运行信息,例如对路由器、交换机等设备的性能及状态参数、服务器的运行状态数据等信息进行定期收集。目前网络管理中几种常见的数据采集方式主要有:SNMP协议的采集(主动和被动trap机制采集)[4,5]、Telnet的采集(远程控制命令采集)[6]、FTP的采集、串口的采集。最常用的方式为SNMP协议采集方式和基于Telnet的采集方式。
告警数据分析主要是指对告警进行合并和转化,缩小故障原因的范围,便于管理人员更快速地确定故障原因[7-9]。告警相关性分析方法主要有基于范例的推理方法、基于模糊逻辑的方法、基于规则的相关性方法、基于神经网络的方法、基于贝叶斯网络的方法,以及基于关联规则的数据挖掘方法等[10,11]。告警数据处理系统在电信网络管理、电力网络管理、物流运输管理等领域的应用也非常广泛,对于提高系统安全性至关重要[12]。
随着网络规模的日益扩大,告警数据分析处理所需消耗的网络资源和计算资源也随之大幅增加,极大限制了告警数据的处理速度。针对上述问题,本文设计了一种网络管理中面向海量数据的并行处理方法,通过对采集任务进行合理调度以有效利用网络带宽,并充分利用计算资源进行数据采集;同时设计了一种可以大幅提高带宽和资源利用率的任务调度方法。
海量告警数据并行处理系统的硬运行环境主要由以下5个部分组成:①主控机:包括多个物理处理单元,用于取出任务采集队列中的任务描述,对采集任务进行采集子任务划分,根据采集机的带宽资源目标和/或计算资源目标计算并行执行的采集子任务数,并将采集子任务映射到采集机的物理处理单元。主控机实现了分配采集任务、汇总采集结果并提供给用户等功能,是整个系统的核心部分;②采集机:包括多个物理处理单元,通过告警采集代理服务器向待采集设备发出采集指令,以完成数据采集任务;③存储设备:包含较大的可扩展存储磁盘空间,用于将内存数据库中的数据定期同步到物理数据库中,以实现采集数据和计算结果的长期安全存储;④告警采集代理服务器:从待采集设备采集到数据后将数据上传到采集机的物理处理单元,以便进行进一步的数据处理;⑤待采集设备,通常包括SNMP设备、串口服务器和串口设备等,其中串口设备可以是RS232、RS485、RS422等设备。
系统硬件架构中各组件的连接关系如图1所示。其中,主控机通过网线与各采集机相连;各采集机通过卫星网络或网线与告警采集代理服务器相连;各告警采集代理服务器具有独立的IP地址,其子结点上的串口设备连接在告警采集代理服务器的串口上,SNMP设备和串口服务器则通过网线连接在告警采集代理服务器上。告警采集代理服务器、SNMP设备和串口服务器可以直接和采集机连接。系统中的一台告警采集代理服务器可以连接多台待采集设备,各待采集设备可以采用不同的协议。
实际运行中,该并行处理系统中的所有功能模块都运行在主控机中,只有采集任务运行在采集机上。采集机接收主控机发送的采集指令并执行采集子任务,具体执行过程中可以按照采集子任务的优先级进行数据采集或者按照先进先出原则执行数据采集任务。
针对上述系统结构,本文设计了一种相应的海量告警数据并行处理方法,该系统主要包括以下4个功能模块:①采集任务更新模块,用于定时从数据库中取出待采集任务,并将待采集任务插入任务采集队列,等待采集任务的执行;②采集任务调度模块,用于从任务采集队列中取出任务描述,并采用宽资源目标和/或计算资源目标计算的双目标任务调度模式来实现任务的划分和调度,上述功能对应于4个顺序执行的系统子模块:采集任务获取模块、采集子任务划分模块、采集子任务确定模块以及采集子任务映射模块;③采集任务处理模块,执行各个子任务以完成数据采集任务,对数据进行并行分析处理并存储结果,同时对检测出的设备故障将发出告警通知;④系统管理模块,系统通过物理/内存数据库管理模块存储和分析数据,同时通过监控模块、系统命令监听模块来管理系统,并提供告警信息给用户。用户根据这些信息可以通过人工干预接口模块来管理系统中的任务。与上述4个功能模块相对应的海量告警数据并行处理方法包括如下4个主要步骤(如图2所示)。
图1 海量告警数据并行处理系统运行环境
图2 海量告警数据并行处理系统功能模块
该步骤定时从物理数据库中取出待采集任务,判断是否需要停止正在运行的采集任务,若是,则根据任务编号停止正在执行的任务或移除在任务采集队列中的任务;否则查询正在执行的任务是否需要更新,若是,则更新任务,并重新加载该任务;否则将待采集任务插入任务采集队列,等待采集任务的执行。上述采集任务更新步骤的执行流程如图3所示。
图3 采集任务更新步骤执行流程
该步骤从任务采集队列中取出任务描述,根据带宽资源利用情况和/或计算资源使用情况将任务进行子任务划分,将子任务映射到采集任务处理单元等待子任务的执行。与系统结构中的采集任务调度模块相对应,采集任务调度过程主要包括如下4个子步骤:
(1)采集任务获取步骤:取出任务采集队列中的任务描述;
(2)采集子任务划分步骤:将每个采集对象的每个采集指标指派成一个采集子任务,每个采集子任务包含如下信息:优先级、采集周期和采集量,且每个采集子任务在一个周期内的执行时间远远小于周期时间,每个采集子任务对应一个待采集设备,且每个采集子任务的信息都包括待采集设备的标识。
(3)采集子任务确定步骤:根据采集机的带宽资源目标和计算资源目标确定一个采集任务触发周期内并行执行的采集子任务数。同样该步骤对应包括如下3个子步骤:
1)带宽资源目标实现步骤:该模块首先通过带宽参数获取子模块获取当前一个采集任务触发周期PGCD,其为当前正在执行的所有采集子任务采集周期的最大公约数,并计算一个采集任务触发周期内剩余网络带宽Br,其计算公式如下
Br=c*B*PGCD-Nd
其中,c为系数,范围为(0,1]的常数,B为系统总带宽,Nd为即将执行的一个采集任务触发周期内采集机执行其它任务所包含的数据量。
然后,通过采集子任务数获取子模块计算一个采集任务触发周期内并行执行的采集子任务数m:假设按照优先级顺序排列当前待执行的n个采集子任务,其待采集量分别为:NC0、NC1、NC2、…、NCm-1、NCm、…NCn。在触发周期开始,将当前待执行的采集子任务进行排列,获得当前待执行采集子任务中每个采集子任务的采集量,计算前n个采集子任务采集量之和,将其与网络剩余带宽确定步骤中计算得到的一个触发周期内剩余网络带宽Br进行比较,如果Br大于前m个当前待执行的采集子任务采集量之和,且小于前m+1个当前待执行的采集子任务采集量之和,即满足如下公式
则前m个采集子任务被获得,m即为根据剩余带宽计算出的一个采集任务触发周期内可以并行执行的采集子任务数,其中m 2)计算资源目标实现步骤:该模块首先通过计算资源参数获取子模块获取采集机当前可用的计算资源参数,即采集机的物理处理单元数Nc及采集子任务平均执行时间Ta; 然后通过可并行采集子任务数获取模块,根据当前可用的计算资源,确定在一个采集任务触发周期内可以并行执行的采集子任务数NL,计算公式为 NL=PGCD*Nc/Ta 3)采集子任务数N确定步骤:该步骤根据由带宽资源目标实现模块计算的采集子任务数m和计算资源目标实现模块计算的采集子任务数NL,按如下公式计算实际并行执行的采集子任务数N N=min(m,NL) 4)采集子任务映射步骤:将最终确定并行执行的采集子任务映射到采集机的物理处理单元,等待采集子任务的执行。 该步骤首先判断被采集的数据是否在设定范围之内,若是,则将采集数据加入数据缓存队列,并通过告警数据处理系统进行并行数据处理,将处理好的数据加入内存数据库,并定期同步到物理数据库中;否则将生成告警信息并将告警信息加入告警缓存队列,发出告警通知。上述步骤的流程如图4所示。 图4 采集任务处理步骤执行流程 上述过程中产生的告警通知由系统管理模块进行实时监控和管理,并反馈给用户。用户根据获取的告警信息,以及当前系统的网络状态,包括任务执行情况、带宽和底层资源利用率等信息来管理系统中的任务。例如用户可以通过人工干预接口控制采集任务更新模块,实现有选择地暂停、取消和继续任务等操作。 综上,上述方法的4个步骤中,各模块之间以及用户与各模块之间的互操作关系如图5所示。 图5 模块间以及用户与各模块间的互操作 海量告警数据并行处理系统软件主要采用MPI多线程方式来实现,根据服务功能可以划分为两大模块:告警服务模块和性能服务模块。 告警数服务模块包含主线程以及多个功能子线程,通过独立的线程分工实现不同的系统功能。各线程之间的数据交互通过数据库或内存数据队列来实现。其中主线程作为告警服务的程序入口,负责对整个告警服务子系统的运行环境参数的初始化以及按如下顺序启动各个功能子线程: (1)告警规则实时更新线程:定时从数据库中读取系统对告警规则的配置情况,保证告警服务中进行告警生成时使用的告警规则的实时性; (2)Trap告警事件处理线程:从Trap事件队列中获取Trap事件信息进行处理,构造告警事件的数据库插入语句并将语句保存到内存数据库中; (3)性能告警处理线程:从性能告警队列中获取性能告警信息进行处理,构造告警事件的数据库插入语句并将语句保存到内存数据库中; (4)Trap监听线程:监听固定的端口,获取设备发出的Trap信息,并将接收到的Trap信息插入到Trap事件队列中; (5)UDP监听线程:监听固定的端口,获取来自性能模块的性能告警信息,并分别将这些告警信息插入到性能告警队列中; (6)告警数据入库线程:将内存数据库中的告警数据库插入语句取出并放到物理数据库中执行,实现告警事件从内存到物理数据库的同步; (7)活动告警生成线程:从物理数据库的告警事件表中读取数据,构造系统的活动告警供系统表示层进行呈现; (8)历史事件清除线程:将超过设定期限的事件从物理数据库中进行清除; (9)告警通知线程:根据告警通知条件,将符合条件的告警通过邮件通知管理人员; (10)系统命令监听线程:监听系统的退出命令,收到命令后退出系统; (11)报活线程:实时向数据库中更新告警服务的运行状态信息,系统表示层可以根据这些运行状态信息判断告警服务模块是否正常运行; 上述告警服务模块的各个线程之间的关系如图6所示。 图6 告警服务进程结构 性能服务模块包含同样主线程以及多个功能子线程。其主线程同样负责对整个性能服务子系统的运行环境参数的初始化,并按如下顺序启动各个功能子线程: (1)性能数据处理线程:以多线程的方式处理队列中的数据; (2)性能告警发送线程:将超过性能门限的告警信息插入到队列中,并发送给告警模块; (3)更新采集对象队列线程:定时的去查询性能采集队列是否有有变化或者更新; (4)服务报活线程:定时将自己的当前时间写入数据库,通知系统自己的运行情况; (5)数据同步线程:定时的将内存数据库中的数据同步到物理数据库中; (6)系统命令监听线程:监听前台发来的命令,接收到前台发送的关闭命令后,关闭所有的定时器。 上述性能服务模块的各个线程之间的关系如图7所示。 图7 性能服务进程结构 本文设计了一种网络管理中面向海量告警数据的并行处理系统,主要用于网络中底层大规模资源管理中海量告警和性能数据的信息处理。该系统由采集任务更新模块、采集任务调度模块、采集任务处理模块和系统管理模块构成。对应的处理流程分为采集任务更新、调度、处理以及数据分析4个步骤。系统的核心为调度模块,该模块通过采用带宽资源目标和/或计算资源目标计算的双目标任务调度模式,充分利用了采集机的带宽资源和计算资源,提高了海量告警数据的采集效率。该系统和方法未来可以推广应用于它数据采集领域,提高数据采集处理的效率。 [1]YANGJinbao,ZHANGChanghong,CHENPing.NetworkfaultdiagnosisbasedonimprovedBPneuralnetwork[J].Computer&DigitalEngineering,2012,40(2):65-67(inChinese).[杨金宝,张昌宏,陈平.基于改进BP神经网络的网络故障诊断研究[J].计算机与数字工程,2012,40(2):65-67.] [2]SlabickiM,GrochlaK.PerformanceevaluationofCoAP,SNMPandNETCONFprotocolsinfogcomputingarchitecture[C]//NetworkOperationsandManagementSymposium,2016. [3]ShahramJamali,MohammadSadeqGarshasbi.Faultlocalizationalgorithmincomputernetworksbyemployingageneticalgorithm[J].JournalofExperimental&TheoreticalArtificialIntelligence,2017,29(1):157-174. [4]SHAOLei,NIMing.DesignandimplementationofhighspeeddataacquisitionsystembasedonFPGA[J].ComputerEngineering,2011,37(19):221-223(inChinese).[邵磊,倪明.基于FPGA的高速数据采集系统设计与实现[J].计算机工程,2011,37(19):221-223.] [5]YSPeng,YCChen,SNMP-basedmonitoringofheterogeneousvirtualinfrastructureinclouds[C]//NetworkOperationsandManagementSymposium,2011:1-6. [6]HUYi,TANGLiping.ImplementationofTelnetserverforNon-OSembeddedsystem[J].ComputerSysterm&Applications,2014,23(10):79-84(inChinese).[胡奕,唐莉萍.嵌入式系统上无操作系统Telnet服务器的实现[J].计算机系统应用,2014,23(10):79-84.] [7]YINWeihong,GENGXinmin.TheimplementofnetworkmanagementbasedontheSNMPprotocol[J].MicrocomputerInformation,2006,22(9-3):208-210(inChinese).[殷卫红,耿新民.基于SNMP协议的网络管理实现技术[J].微计算机信息,2006,22(9-3):208-210.] [8]XIAOJingjing.DesignofnetworkmanagesystembasedonITIL[J].SoftwareGuide,2015,14(10):124-125(inChinese).[肖静静.基于ITIL的网络运维服务管理系统设计[J].软件导刊,2015,14(10):124-125.] [9]YANGMing,HUANGHua,XIAJiangang,etal.Currentstatusandanalysisonnetworkfault-locatingtechnology[J].TechnologyandMarket,2009,16(3):20-22(inChinese).[杨明,黄华,夏建刚,等.网络故障定位技术的研究现状与分析[J].技术与市场,2009,16(3):20-22.] [10]WANGPing,LILi,ZHAOHong.Studyoneventscorrelationdetectingmechanisminnetworkmanagement[J].JournalofChinaInstitueofCommunications,2004,3:100-105(inChinese).[王平,李莉,赵宏.网络管理中事件关联检测机制的研究[J].通信学报,2004,3:100-105.] [11]JINGYa,LIQun,CHENTing,etal.Large-scaleheteroidnetworkmanagementsystem[J].ComputerEngineeringandDesign,2015,36(12):3390-3401(inChinese).[井雅,李群,陈亭,等.大规模异构通信网络管理信息系统[J].计算机工程与设计,2015,36(12):3390-3401.] [12]JINGYa,CHENTing.ElectricmaterialsuppliesmanagementinformationsystembasedonPDA[J].ComputerEngineeringandDesign,2016,37(4):1113-1121(inChinese).[井雅,陈亭.基于PDA的电力物资到货管理信息系统[J].计算机工程与设计,2016,37(4):1113-1121.]3.3 采集任务处理
3.4 告警数据分析
4 系统软件实现
4.1 告警服务模块
4.2 性能服务模块
5 结束语