您的位置】:知源论文网 > 理工类论文 > 通信论文 > 正文阅读资讯:研究管理代理与监控模块通信设计

研究管理代理与监控模块通信设计

[作者:未知[来源:知源论文网]| 打印 | 关闭 ]

摘要:详细介绍了面向应用软件的网络监控系统中管理代理和监控模块通信的设计与实现过程。包括管理信息存储的优化设计、内存映射文件的存储数据结构设计、监控指令转发技术、内存映射文件的通信方式、同步机制应用等。通过内存映射文件方式存储管理信息,高效地完成了收集各应用程序实例的监控信息任务,并实现了监控信息的存储、共享和监控模块与管理代理间实时信息交换的功能。

关键词:优化存储;内存文件映射;消息机制;同步机制
  
  随着网络规模增大,网络结构及网络应用日渐复杂,传统的物理安全技术和措施已经不足以保证信息系统的安全,因此网络管理系统作为网络安全运行的保证,其重要性越来越突出。为了提高计算机网络信息安全,许多相关的网络安全产品被开发,但大多是基于网络硬件设备,如路由器、集线器、交换机等,而对网络应用软件的研究和开发相对较少[1~4]。为了保证网络环境中的应用程序正常高效地运行,笔者设计了基于SNMP的ASNMS(Application Software Net Monitoring System,网络应用软件监控系统)。该系统选择运行于网络环境中的应用程序为研究对象[5,6]。
  
  1网络应用软件监控系统(ASNMS)简介
  
  ASNMS的主要监控目标是网络中的应用软件,通过及时获取软件中重要变量值(如系统配置、状态指示等),从而及时了解整个网络中应用程序的状态,并且还可以通过管理站点对各受控站点中的应用程序进行控制操作,提高整个网络和应用系统的安全性。该网络应用软件监控系统主要有三个模块[5,6]:
  (1)管理站点主程序。该程序在管理站点上运行。通过该程序,管理站点可以使用UDP/IP协议与管理范围内的所有受控站点进行通信,收集网络应用程序的监控信息,并下发各种控制命令。
  (2)管理代理。每一个受控站点上运行一个管理代理程序(有且仅有一个)。管理代理是系统的通信中心。一方面通过内存映射文件与受控站点上的各应用程序实例进行通信,收集各应用程序实例的监控信息;另一方面通过UDP协议与管理站点通信,发送受控站点的管理信息以及转发管理站点的控制信息。
  (3)监控模块。该模块是供软件开发人员使用的一个通用接口模块。它负责从受控应用程序中获取监控信息,发送到管理站点,并且也能接收从管理代理转发的管理站点命令,对受控应用程序执行一定的控制操作。从结构上来看,监控模块附属于受控应用程序,但它以单独的线程形式存在。
  
  2管理信息存储的设计
  
  为了监控模块工作的需要,同时为了能更方便地将监控信息传送给管理代理,监控模块需要将监控信息以一定的形式存储起来。监控模块监控的目标是应用程序中的变量。由于现在软件开发大多使用的是面向对象的方法,在其程序中各种变量是有层次结构关系的,这一点必须在监控信息中体现出来[7]。监控信息从逻辑上看应该是以树的形式存在,并且存储的是各种变量的信息,而变量的长度是不相同的,在这棵树中各个节点的空间大小有可能不相同。由此看来,无论是从存储内容上还是从逻辑结构上看,监控信息的存储结构均是相对较为复杂的。下面三种设计方案可以满足这样的要求:
  (1)在监控模块内存空间内生成一棵二叉树。这是最常规的存储方法。在此情况下,只需要设计一个较为合理的树结构,二叉树就能直接存储在监控模块的内存空间中,访问方便。同时因为在许多语言中均有任意类型的数据类型,由此可以将不同数据类型的数据方便地存储在一种数据结构中。但是由于这棵树存在于监控模块的内存空间中,不方便管理代理程序对其读取,监控模块还需要通过一定的方法将该树传送给管理代理[4,7]。
  优点:实现简单,监控模块可以很方便地对其进行读写操作。
  缺点:不方便管理代理程序对监控信息读取,需要使用其他方法将信息传送给管理代理。
  (2)将监控信息存储在磁盘文件中。为了解决管理代理和监控模块共享监控信息的问题,监控模块可以将监控信息存储为磁盘文件形式。在此情况下,需要设计一套完整合理的文件空间使用策略,保证能够完整地存储监控信息。由于在Windows程序中采用了虚拟内存策略,不同应用程序内存空间是不同的,即使某应用程序获取了另一个程序中的某个指针,也不能正确地访问到其数据。在对变量值进行存储时,一定要注意不能存储有关变量的指针信息,而应该想办法存储其中变量的实际数据[8]。同时因为是将监控信息存储于磁盘上,需要采取一定的措施尽量避免出现垃圾文件的情况,同时还要防止在工作状态下用户有意或无意地修改、删除该文件。
  优点:多个程序可以方便地共享数据。
  缺点:实现较复杂,容易产生垃圾文件,容易泄漏和丢失监控信息。
  (3)将监控信息存储在内存文件映射中。这是对方案(2)的改进。方案(2)将监控信息存储于磁盘文件中,由此使得容易产生垃圾文件、容易泄漏和丢失监控信息。那么如果将监控信息直接存储在内存当中呢?采用内存映射文件是一个很好的解决办法。应用程序在需要时在内存中开辟一定的空间存储数据,当应用程序关闭后,由于操作系统的内存管理机制,内存文件将自动被回收,安全性高。但是在生成内存映射文件时,必须要指定文件的大小,此时如果处理不当将可能出现存储空间不够用的情况[4,8]。
  优点:多个程序可以方便地共享数据,数据不易泄漏,安全性高。
  缺点:实现较复杂,必须指定文件大小,处理不当可能出现空间不够用的情况。
  综合三种方案,方案(3)是最合适的。只要指定足够的文件大小,它不仅满足监控模块存储管理信息的需要,信息安全性高,同时可方便地实现监控模块与管理代理之间实时信息交换功能,从而解决它们之间的通信问题。  3管理代理与监控模块通信的设计
  
  3.1管理代理与监控模块间通信
  通信包括系统初始化连接建立、命令转发和自定义消息。
  (1)系统初始化连接建立。管理代理随受控站点启动后,必须接收各个应用程序实例的监控模块的注册信息,与监控模块建立初始连接。
  (2)命令转发。管理代理接收到管理站点发送的UDP报文后,先识别该报文是发送给哪个监控模块的,然后通过Windows消息形式发送给指定的监控模块。
  (3)管理代理与监控模块之间约定一系列自定义消息,并向Windows注册,保证双方能够正确地通过自定义消息进行通信。
  
  3.2监控信息的收集与组织
  在受控站点上,管理代理与多个应用程序实例的监控模块之间是通过内存映射文件进行通信的。监控信息存储在内存映射文件中。
  (1)监控信息收集就是对监控模块对应的内存映射文件进行遍历。通过遍历获得最新的被监控应用程序的状态、监控变量的值等。
  (2)监控信息收集时,需提供有效的同步机制,防止管理代理与监控模块同时访问同一个监控信息文件时出错

Tags: