本文通过借鉴现代人工智能的Agent技术,完成终端设备的环境数据采集和简单的分析和判断,降低服务控制设备的运算压力,减少网络传输数据流量,实现了具有自治性和智能性的大规模计算机网络终端远程监控系统体系结构。大幅度提高了整个监控系统的处理性能,降低了对被控制网络的影响。通过具体的软件系统分析,设计了以Agent技术为核心的程序流程,并给出了Java语言实现的程序框架。改进了传统系统的整体性能。
0 引言
随着计算机和网络技术的快速发展,计算机应用技术已经渗透到工作和生活的方方面面,现代生产制造业与现代服务业的高效运行,越来越依赖于计算机和网络技术。随着生产产业链的扩大和业务分工细化,一个业务网络中所包含的计算机数量越来越多,网络覆盖的地域范围也越来越大,计算机网络规模和网络结构随着业务需求千变万化,如电力调配网络系统可能覆盖几个省,银行自动柜员机网点网络会覆盖一个城市甚至几个城市,高等学校的计算机教学网络也可能覆盖一个城市的不同校区,保障正常生活和人身安全的天网工程会覆盖整个城市。在人们享受计算机网络给带来高效、便利的同时,对计算机和网络的依赖日益增强。但是,计算机网络运行却面临着许多潜在的风险,网络设备的运行依赖着设备硬件和软件等环节的正常运行,设备的供电系统不稳定、设备的存储故障、软件积累误差、软件病毒等,任何一个环节出现的问题,都有可能使设备运行不正常或者停止运行。网络节点出现问题,将会影响到业务系统的正常运行,如果网络系统的关键节点出现问题,将可能造成整个网络的崩溃,对企业单位造成难以估量的巨大经济损失。但是网络节点的分布范围广,通过人工方式对网络节点进行日常检查和维护,需要耗费巨大的人力和物力。因此,如何监控网络设备的运行状态,预先判断可能出现问题的节点,发现网络设备运行中存在的问题并及时处理,减少网络设备发生问题的可能性,是面临的重要课题。通过全天候自动化的网络运行状态监控,可降低网络设备运行风险,保障生产和生活的正常运行,带来巨大的经济效益和社会效益。
远程、自动化、智能化网络设备检测软件系统,是解决日益突出矛盾的有效手段。通过Agent技术的应用,对系统关键技术之一的信息采集的开发及改进,可提高监控系统的运行效率。采用Agent 机制完成采集被监控网络终端设备的运行信息,由监控Agent对采集的系统运行信息进行统计和分析,自主判断被监控终端的运行状况,并给出不正常的系统的错误类型和所在的网络位置,可提高系统排查故障效率,优化监控系统结构。
1 Agent 技术介绍
Agent 的概念是由美国M.Minsky 教授提出的,Agent是一个软件过程,这个软件过程通过采集信息对相对于其外界环境的变化进行判断并做出反应,Agent应该具有自管理性和自处理性,并应具有人工智能的特性,可以通过信息采集和处理过程的积累,获取经验并提升自身的处理能力,能依据事先设定的原则来对采集信息做出一定的反应。监控Agent 一般情况下可分为智能型Agent 和非智能型Agent 两种,即认知式监控Agent和反应式监控Agent,两种Agent的主要区别是认知式监控Agent 可通过对采集的信息进行自我学习和具有一定的判断推理能力,能够根据自身采取的策略和其他监控Agent 采取的策略进行演绎推理。而反应式监控Agent 则是根据对采集的系统运行信息的变化而采取相应的反应动作。本系统由于存在大量的复杂的故障判断,可通过简单的认知式和反应式相结合的方式实现Agent功能,将大量简单的故障判断由Agent完成,同时将原始信息和复杂的故障判断传送到Agent 控制服务器端完成。
2 远程监控系统软件架构
由于Agent 具有自主性和智能性,因此通过采用Agent技术开发的网络设备状态信息采样Agent可以自主完成基本的数据采集和分析。将简单分析结果传送给Agent控制服务器进行存储和响应处理,大大减少了Agent控制服务器对前端Agent数据采集的控制和信息处理工作量,也使后台系统管理变得简单快捷,提高整个系统的响应速度。基于Agent 技术远程网络监控系统采用三重体系结构即设备信息采集Agent,Agent控制服务器、数据库服务器、故障应急处理服务器和系统管理控制终端。为提高系统管理对平台的兼容性,系统管理采用B/S 模式进行系统模式设计,其中设备信息采集Agent通过JAVA 语言编程,提高了采集对不同系统平台的兼容性;系统管理工作终端采用ASP.NET编程实现,通过不同的系统平台可以轻松实现对Agent控制服务器管理和发布控制命令。通过这样的实现策略可以提高监控系统的兼容性和扩展性,通过扩展接口通讯可以方便地完成故障应急处理服务器与Agent 控制服务器的通讯、紧急状况短信通知等主动监控功能。通过移动通讯端口设计实现系统设备和移动设备的连接,系统能够很好的支持移动用户登录和管理系统。体系机构如图1所示。
根据Agent 的特点将网络远程监控系统的软件逻辑模型分为5层:具体分为数据采集层、数据管理层、数据分析层、数据处理层和数据表示层。各个层次核心线索是数据。系统软件的数据采集Agent 分布在各个被监控的网络终端计算机上,以服务程序的形式随设备的启动运行,Agent运行于设备的整个运行期内。数据管理层、数据处理层和数据分析层软件模块运行于Agent控制服务器上,数据表示层可运行在系统管理终端上,管理者可在系统管理终端和远程终端对系统进行监控管理,同时处理结果如需要产生应急服务的表示信息,可通过应急处理服务器产生相应的应急服务任务。
3 设备信息采集Agent 设计
由于在整个系统中监控终端的数目巨大,而控制服务器只有一个,这样当系统繁忙时,控制服务器需要完成大量的数据管理和数据挖掘事件生成操作。监控大量终端监控点时由于集中处理数据量大,会产生处理延时,降低整个系统的应急处理速度。通过使用Agent技术,将部分监控服务器的简单任务下移到终端Agent,降低了服务器的事务处理强度,就可以提高对异常情况响应处理速度。
通常,设备信息采集Agent 的工作流程如下:在程序初始化时先生成一个信息采集Agent 实例Col-lect_Agent,然后通过Agent启动自身的传感器(Sensor)从待采集信息的环境中获取所需的信息,根据采集的信息而采取相应的动作来响应Agent环境的变化[8].监控终端运行两个Agent 模块,分别是信息采集Col-lect_Agent 和指令执行Instruct_Agent.信息采集Agent通过对采集的信息的判断处理,形成判断报告并根据判断结果执行相应的处理,然后将判断报告与采集数据发送到Agent控制服务器,完成信息操作记录。Agent控制服务器对数据和报告进行存储和结果响应处理。服务器定期对采集数据和报告进行评估,同时对可能发生错误的报告进行判断条件参数的修改并发送到指令执行Instruct_Agent,指令执行Agent根据指令完成判断条件更新、系统重启等任务。程序依次反复循环运行。两个Agent的程序流程如图2所示。
用Java语言实现的监控终端的数据采集和命令处理Agent的核心代码框架如下:
4 结论
系统通过Agent技术的使用,充分发挥了Agent对数据监控的自治性、智能性和协作性等特性,降低了在系统运行过程中的网络通讯负荷和数据流量,降低了控制服务器的信息处理和运算强度,提高了控制服务器处理的效率和整个系统故障响应速度。系统进一步需要改进的工作包括完善Agent 的自学习算法以及进一步研究Agent智能处理,实现分布决策与集中管理的统一。(作者:朱仙芝)