139LinuxNC王王王王薇薇薇薇1,2李锦涛李锦涛李锦涛李锦涛1郭俊波郭俊波郭俊波郭俊波1叶叶叶叶剑剑剑剑11.中国科学院计算技术研究所北京1000802.中国科学院研究生院北京100039摘摘摘摘要要要要主要论述由多服务器组成的大规模网络计算机环境中系统监控的设计以及在此基础上实现的RTM系统RTM系统主要包括3个模块监听模块通信模块和管理模块实现了对所有服务器上登录的用户会话和启动的应用进程进行管理以及对服务器上的系统类资源进行监控关键词关键词关键词关键词多服务器网络计算机系统监控共享内存虚拟文件系统DesignandImplementationofSystemMonitoringinNetworkComputerEnvironmentwithMultiserverofLinuxWANGWei1,2,LIJintao1,GUOJunbo1,YEJian1(1.InstituteofComputingTechnology,ChineseAcademyofSciences,Beijing100080;2.GraduateSchoolofChineseAcademyofSciences,Beijing100039)AbstractThispaperfocusesonthedesignofsystemmonitoringinthelarge-scalenetworkcomputerenvironmentwithmultiserver.Thepaperdevelopsremoteterminalmanager(RTM)system.Itincludesthreemodules:themonitoringmodule,thecommunicationmoduleandthemanagementmodule,anditcanmanagethesessionsandtheapplicationswhicharestartedindifferentserversinthenetworkcomputerenvironmentandmonitortheresourceutilizationoftheservers.KeywordsMultiserver;Networkcomputer;Systemmonitoring;Sharedmemory;VFS计计计计算算算算机机机机工工工工程程程程ComputerEngineering第第第第32卷卷卷卷第第第第12期期期期Vol.32122006年年年年6月月月月June2006网络与通信网络与通信网络与通信网络与通信文章编号文章编号文章编号文章编号10003428(2006)12013903文献标识码文献标识码文献标识码文献标识码A中图分类号中图分类号中图分类号中图分类号TP3931概述概述概述概述随着网络技术的成熟和互联网的飞速发展使信息资源和计算资源共享变得越来越普遍网络计算模式得到越来越多的关注网络计算机(NC)作为新型网络访问终端设备其应用模式主要包括客户/服务器模式(C/S模式)浏览器/服务器模式(B/S模式)和终端应用模式终端应用模式是NC最常用的方式之一这种模式具有管理成本低的优势同时通过对服务器软硬件资源的共享提高了系统的利用率终端应用模式的多服务器NC环境的服务端是一组可以为网络用户提供多种应用服务的资源集合一般包括多台主机以及运行在其上的各种应用和管理软件用户通过NC透明访问多台服务器上的应用每个用户在服务器上的运行环境称为会话对于整个系统的运行状态进行统一有效的管理是这种服务模式要解决的一个关键问题将整个系统监控管理的对象分为两类(1)应用类对各服务器上登录的用户会话以及会话中启动的应用进程进行管理(2)系统类对各服务器上的系统资源进行监控如CPU内存及交换存储区的使用情况等目前对于系统类资源监控国内外均有应用广泛的监控方法和工具比如Ganglia[1]Supermon[2]dproc[3]许多监控工具都是为特定应用环境设计考虑到不同应用环境的特点在实时性准确性扩展性通用性灵活性和可配置性上折衷作出最优的选择本文主要贡献在于将应用类和系统类资源统一管理使用共享内存技术和快速消息通信机制实现了用于系统监控的具有实时性准确性和扩展性的RTM(RemoteTerminalManager)系统2RTM系统系统系统系统的结构的结构的结构的结构RTM系统的目标是管理终端用户会话和应用进程以及服务器的资源使用情况RTM系统主要包括3个模块监听模块通信模块以及管理模块监听模块运行于服务域内的各个服务器节点上负责监听所在节点的系统信息通信模块为各个服务器节点间的通信定制统一的协议规范负责通过快速消息通信机制将系统信息从各个服务器节点上的监听模块传送到指定服务器节点上的管理模块管理模块运行于指定的某个服务器节点上是RTM系统的图形用户交互界面该模块使用GTK/GTK+实现在客户端提供系统管理的图形监控功能以及会话和进程的动态启停控制RTM系统结构如图1所示当RTM系统在某个服务器节点节点1启动时运行于该节点上的管理模块通过通信模块向域内各个服务器节点组播发送监听请求消息每个服务器节点上的通信模块中负责侦听监听请求消息的进程收到此消息后启动监听模块从共享内存中获得用户会话信息利用用户会话的标识符在proc文件系统中查找该用户在本服务器节点启动的应用进程信息和该服务器节点的系统类资源使用情况然后将以上信息以特定的消息格式组装成回复消息通过通信模块发送到管理模块管理模块收到域内各个服务器节点的回复消基金项目基金项目基金项目基金项目国家863计划重大专项课题基金资助项目2004AA114060国家科技攻关计划基金资助项目2004BA101C作者简介作者简介作者简介作者简介王薇(1982—)女硕士生主研方向普适计算网络应用协议和资源监控李锦涛研究员博导郭俊波叶剑工程师博士生收稿日期收稿日期收稿日期收稿日期2005-09-05E-mailwangwei@ict.ac.cn140息后使用GTK/GTK+实现客户端的图形监控功能此后只要RTM系统处于运行状态管理模块就定时组播监听请求消息保证监控数据的准确性和实时性要求节点1会话主控制进程节点2会话主控制进程通信模块监听模块/proc文件共享内存/proc文件共享内存通信模块管理模块监听模块节点n会话主控制进程通信模块监听模块/proc文件共享内存...图图图图1RTM系统结构系统结构系统结构系统结构3RTM系统的设计与实现系统的设计与实现系统的设计与实现系统的设计与实现RTM系统需要对服务域内所有服务器节点上的会话和进程进行监控和管理需要对系统类资源使用情况进行监听因此除了要设计好每个节点的本地监听技术外还要处理好数据在各个节点间的传输问题以及客户端的可视化图形监控问题3.1基于共享内存技术的基于共享内存技术的基于共享内存技术的基于共享内存技术的会话管理会话管理会话管理会话管理RTM系统的设计过程中首先需要解决是如何监听并在不同进程间共享用户会话的状态信息会话指网络用户从登录服务域开始到最终注销的整个过程会话管理涉及网络用户对各种网络应用资源使用的全过程会话管理的进程框架如图2所示图图图图2会话管理进程框架会话管理进程框架会话管理进程框架会话管理进程框架用户从NC终端登录到某个服务器主节点主节点上的会话主控制进程为用户启动一个会话进程用户若使用其他服务器辅节点上的应用辅节点上的会话主控制进程会为用户启动一个代理会话进程会话主控制进程和会话进程以及会话代理进程间的通信采用pipe实现节点之间的会话主控制进程之间通过TCP/IP通信会话管理算法如图3基于共享内存技术[4]的会话管理主要是根据用户名口令进行用户身份验证并判断是否为新用户对于新用户则根据用户情况启动新的会话进程对于断开并重新登录的用户则与已经存在的会话进程通信会话管理对RTM系统的支持主要体现在通过共享内存反映当前会话的状态提供会话标识便于监听模块通过会话标识获取会话中的应用进程信息通过管理模块获取RTM系统用户对会话的管理意图利用共享内存进行实际的会话操作(断开注销会话)图图图图3会话管理算法会话管理算法会话管理算法会话管理算法3.2基于基于基于基于proc文件系统的进程管理和系统类资源监听文件系统的进程管理和系统类资源监听文件系统的进程管理和系统类资源监听文件系统的进程管理和系统类资源监听Linux内核提供了一种通过proc文件系统[5]在运行时访问内核内部数据结构改变内核设置的机制该文件系统包含与正在运行的应用进程ID同样名字的文件以及系统物理环境的最新信息如/proc/meminfo包含内存使用信息/proc/stat包含内核统计信息它是一个较快的高效率执行系统监控的方法在RTM系统中监听模块便是从proc文件系统中获取应用进程的状态信息和系统类资源信息对于进程的操作则都是通过进程ID来进行进程管理主要是通过proc文件系统获取相应会话中的活动进程进程间的父子关系和其他信息主要设计了两套结构链表一个是所有进程构成的线性链表在此表中进程之间的先后无任何意义只是记录所有当前活动进程信息另一个是父子进程链表是根据进程间的父子关系通过parent和child字段连接起来两套结构链表如图4所示图中列出5个进程其中A启动两个子进程B和DB启动子进程CD启动子进程E进程结构是最重要的数据结构用来记录进程信息以及维护两套结构链表链接结构主要用来协助维护父子进程链表图中虚线连接表示线性链表实线连接表示父子进程链表123456ABCDE注进程结构1是*children2是*parent3是进程信息4是*next;链接结构5是*child6是*next图图图图4结构链表示例结构链表示例结构链表示例结构链表示例会话主控制进程启动初始化共享内存初始化远程用户端口侦听端口得到用户名和密码进行用户合法性验证父子进程通信传递端口号激活已存在的会话修改共享内存中会话状态用户状态创建父子进程间通道用户会话信息写入共享内存新的用户会话断开新用户重新登录节点2节点1会话4会话5代理会话进程会话6会话1会话2会话进程会话3pipepipepipepipepipepipe会话主控制进程TCP/IP终端会话1终端会话2终端会话3终端会话6终端会话4终端会话5会话1会话2代理会话进程会话3会话4会话5会话进程会话6pipepipepipepipepipepipe会话主控制进程1413.3快速消息通信协议快速消息通信协议快速消息通信协议快速消息通信协议为了有效地完成RTM系统中各个模块的通信连接作者定制了快速消息通信协议以实现监听请求的发送接收和回复以及对会话和进程的动态启停控制消息的传递图5对该过程进行了说明图图图图5RTM系统中的通信过程系统中的通信过程系统中的通信过程系统中的通信过程首先RTM管理进程向已注册的服务域内各节点组播状态查询消息State_Query请求各节点中的RTM监听进程开始监听终端状态信息监听进程收到状态查询消息后调用获取系统信息的函数处理的内容包括从共享内存中获得会话状态信息根据会话标识在proc虚拟文件系统中查询进程状态信息监听系统类资源使用情况将以上信息组装成层次结构的单向链表实时计算消息长度组成状态查询的回复消息由监听进程向管理进程发送状态查询回复消息State_Query_R(msg)管理进程定时向监听进程发送状态查询消息直到RTM系统运行中止如图5的左图RTM管理进程作为人机交互的接口为用户提供了对会话和进程的动态启停控制通过管理进程可以对服务域内各服务器节点上的会话和进程状态进行修改比如断开或注销会话停止进程所涉及的通信过程如图5的右图所示管理进程向某节点的监听进程发送状态设置消息State_Set(type,state)其中参数type是指明要修改的状态是针对会话还是进程state是新的状态标识监听进程收到状态设置消息后先发送一个回复消息State_Set_R表示正在处理状态的修改状态修改完毕后再发送一个回复消息State_Set_Done整个协议主要使用了UDP协议来实现并使用了