专利名称:一种开放式云计算大规模集群监控系统及方法
技术领域:
本发明属于云计算技术领域,尤其涉及一种开放式云计算大规模集群监控系统及方法。
背景技术:
监控系统能够辅助数据中心管理员及时了解与管理服务器集群,并在集群发生状况时能够更快的解决突发问题,保证云计算集群的安全、稳定与可靠。另外,监控系统基础框架中对于监控信息的获取模块,能够监控计算任务对于计算资源的消耗情况,为云计算计费系统提供基础服务与可靠保障。监控信息也为日后进行云端运行状况分析和改进提供了重要的参考依据。当前主流的监控系统通常将监控信息存储在每一个节点上,之后发送广播进行监 控信息的传送,这样会造成大量的数据冗余,而且有可能形成网络风暴。而本发明采用独立监控模块,集群中每个节点上的轻量级守护进程只负责发送监控信息,而所有数据处理及存储会在第三方监控系统中进行,从而使得对集群的压力降至最低。另外,监控服务器集群可以根据被监控集群的大小进行调整,如果集群规模较大,可将监控服务器中的几个子模块分别运行在不同的物理服务器中;反之,则可将子模块运行在同一个服务器中。当前流行的监控系统ganglia,监控架构是将监控信息存储在每一个节点上,之后将该节点的监控信息广播,从而使得每一个节点上都存储了整个集群的监控信息。这样势必会造成大量的数据冗余,当节点的数量增加时,容易形成网络风暴,造成大量的网络资源与存储资源浪费。除此之外,现有的监控系统是静态对节点与集群信息进行监控,并不能实现实时动态的监控。
发明内容
本发明提供了一种开放式云计算大规模集群监控系统及方法,旨在解决现有的监控系统将监控信息存储在每一个节点上,造成大量的数据冗余,造成大量的网络资源与存储资源浪费以及不能实时动态监控的技术问题。本发明提供的技术方案为一种开放式云计算大规模集群监控系统,包括监控端、功能服务器集群和云平台服务器集群,所述监控端用于供用户选择要监控的对象,功能服务器集群用于接收监控端选择需要动态监控层次与监控对象,将监控指令下发;云平台服务器集群用于接收功能服务器集群的监控指令,将监控到的节点信息传送给功能服务器集群。本发明的技术方案还包括所述功能服务器集群包括消息队列服务器、中心服务器、网络服务器以及数据库服务器,所述消息队列服务器负责接收各个节点发送过来的数据,并按照中心服务器的需求来进程数据的递送;所述中心服务器用于将接收的数据进行数据持久化,并检查节点列表与监控数据流;所述网页服务器用于为用户监控提供可视化服务,并支持数据查询功能;所述数据库服务器用于进行大规模的数据分析、查询、插入等操作。本发明的技术方案还包括所述中心服务器包括数据持久化模块负责将解包的数据进行持久化,并存入数据库服务器;报警模块负责检查节点列表与监控数据流,如果有触发报警的条件,则将报警信息发送到网页服务器;节点列表更新模块负责收集节点信息,并将其更新到节点列表之中;节点列表分析模块负责不间断的分析节点列表状态,对于新加入的节点,退出的节点信息通过报警模块发送到网页服务器。
本发明的技术方案还包括所述数据库服务器的数据库采用MongoDB,包括主节点和多个从节点,所述从节点与主节点的数据进程同步。本发明的技术方案还包括所述网页服务器包括数据池,所述数据池用于存储整个集群中所有节点监控信息的最新值。本发明的技术方案还包括所述云平台服务器集群包括虚拟机集群和物理机集群,所述虚拟机集群和物理机集群包括至少一个虚拟机和物理机,所述虚拟机与对应的物理机进行通讯。本发明的技术方案还包括所述云平台服务器集群包括数据收集单元、控制单元、数据封装单元、监听单元和系统参数XML配置单元;所述数据收集单元对系统进行解析,提取出有用的监控数据;所述控制单元根据功能服务器集群的指令对进程进行控制、守护或开发;所述数据封装单元用于完成监控数据的转换与封装,方便发送模块进程数据传送,所述监听单元负责监听从数据队列服务器发送过来的指令,并将其传入相应的模块;所述系统参数XML配置单元主要负责系统基本参数的配置。本发明的技术方案还包括所述数据收集单元包括三个模块/proC解析模块、用户自定义收集模块和第三方插件收集模块,所述/proc解析模块负责对操作系统的/proc文件系统进行解析,提取出有用的监控数据,所述用户自定义收集模块通过开放API来支持用户自定义监控模式,所述第三方插件收集模块用来支持用户配置与使用第三方插件收集工具或协议。本发明的技术方案还包括所述控制单元包括沉睡功能模块、进程控制模块和用户自定义控制模块,所述沉睡功能模块用于确保该守护进程轻量级运行,所述进程控制模块用于根据功能服务器集群的指令改变某一进程的运行状态或杀死该进程,所述用户自定义控制模块用于方便用户进程二次开发或者使用第三方控制软件。本发明米取的另一技术方案为一种开放式云计算大规模集群监控方法,包括步骤a :根据自身需求选择需要动态监控层次与监控对象;步骤b :根据用户选择的监控层次与动态监控对象,系统生成监控信息图;步骤c :将监控信息发送到监控端供用户进行查看。本发明的技术方案还包括所述选择的监控对象为当前集群状况诊断,系统对存储在消息队列服务器中的节点列表进行分析,提取出当前集群中是否有节点退出或者新增节点,形成诊断信息Al ;采用NoSQL数据库MongoDB进行数据持久化,提取持久化数据,并对网络10、内存、CPU、磁盘等信息进行分析,提取出集群的运行状况,形成诊断信息A2 ;形成最终诊断信息A1+A2,并将诊断信息推送至网页服务器。本发明的技术方案还包括所述选择的监控对象为集群监控,所述网页服务器间隔一段时间向消息队列服务器的集群监控模块发送监控命令,集群监控模块收到该命令后,对自身的节点列表进行分析,分析出当前集群中节点的变动情况,形成监控信息A3,所述消息队列服务器将监控信息A3发送到网页服务器。本发明的技术方案具有如下优点或有益效果本发明实施例的开放式云计算大规模集群监控系统及方法通过开放式集群节点守护进程模块收集用户指定或自定义的节点信息,对集群中运行的物理机与虚拟机进行动态实时监控,另外对集群的运行状况与运行中出现的问题进行实时监控,为集群管理员提供更加实时、可靠与详细的监控服务;另外,本发明实施例的开放式云计算大规模集群监控系统及方法统一将节点监控信息进行上报,将监控信息进行统一存储,避免在每一个节点上都存储整个集群的监控信息,防止大量的数据冗余。
附图1是本发明实施例的开放式云计算大规模集群监控系统的结构示意图;附图2是本发明实施例的开放式云计算大规模集群监控系统的虚拟云数据对象的结构不意图;附图3是本发明实施例的开放式云计算大规模集群监控系统的虚拟云适配器的结构示意图;附图4是本发明实施例的开放式云计算大规模集群监控方法的流程示意图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。请参阅图1,为本发明实施例的开放式云计算大规模集群监控系统的结构示意图。本发明实施例的开放式云计算大规模集群监控系统包括运行守护进程的功能服务器集群、云平台服务器集群和监控端。其中运行守护进程的云平台服务器集群的粒度可以为Federation (联盟),也可以为Cluster集群(节点服务器集群)。功能服务器集群包括监控服务器与消息队列服务器,其中,监控服务器为一台,消息队列服务器可以为多台。监控服务器包括网页服务器、中心服务器和数据库服务器。监控服务器的数据库采用MongoDB(基于分布式文件存储的数据库),其运行在一台数据库服务器之上,例如NoSQL数据库(非关系型的数据库)服务器。监控端可以为PC (采用JSP网页形式呈现)或手机(采用HTTP协议与Web服务器交互)。云平台服务器集群包括虚拟机集群和物理机集群,虚拟机集群和物理机集群包括至少一个虚拟机和物理机,虚拟机与对应的物理机进行通讯。在监控业务流程方面,首先用户会在监控端选择要监控的对象,之后监控端会将该对象请求信息传送给网页服务器,网页服务器会判断需要的监控信息来源,如果需要从数据库服务器中读取,则会直接读取数据库服务器MengoDB中的相关数据。如果需要从节点中读取,则会给节点发送命令,节点在接到命令后会对相关的监控信息进行读取,之后传送给网页服务器,网页服务器在对传送过来的数据进行整合后发送给监控端。在报警业务流程方面,云平台服务器集群中的Cluster节点与消息队列服务器会将报警信息传送给网页服务器,之后网页服务器在将数据进行处理后推送给手机监控端进行报警。在数据持久化业务流程方面,云平台服务器集群中Cluster中的每个节点会周期性的将监控到的信息传送给消息队列服务器,之后,消息队列服务器会将整理后的数据插入到数据库中进行持久化。与此同时,消息队列服务器会更新内部的NodeTable (节点列表),并对其进行监控,如果发现问题会及时将错误信息以报警的方式发送给监控服务器,监控服务器之后将报警信息推送给手机。请参阅图2,图2是云平台服务器集群的守护进程收集信息的原理图。云平台服务器集群包括数据收集单元、控制单元、数据封装单元、系统参数XML (System ParameterXML)配置单元以及监听单元。数据收集单元(Data Collection Unit)包括三个模块/proc解析模块(/procAnalysis Module)、用户自定义收集模块(User Defined Collector Module)和第三方插件收集模块(Third-part Collector Module)。/proc解析模块是系统的默认加载模块,负 责对操作系统的/proc文件系统进行解析,从而提取出有用的监控数据。用户自定义收集模块(User Defined Collector Module)通过开放API来支持用户自定义监控模式,用户可以自定义参数收集方法以及类型。第三方插件收集模块用来支持用户配置与使用第三方插件收集工具或协议,例如SNMP以及CPU风扇转速与温度收集插件等。控制单元包括三个模块沉睡功能模块(Sleeping Function Module)、进程控制模块(Process Control Module)和用户自定义控制模块(User Define Control Module)。沉睡功能模块是为了确保该守护进程轻量级运行,因此一些功能模块并不运行,处于“沉睡”状态,等待信号接收模块接收命令将其激活。这些功能包括一些不常用的功能,包括守护进程停止发送监控信息、守护进程发送信息频率改变等。进程控制模块根据功能服务器集群的指令改变某一进程的运行状态或杀死该进程,其意义在于协助集群诊断模块与报警模块来提前对进程进行锁定,等待用户的处理指令,使节点运行更加安全。用户自定义控制模块与用户自定义数据收集模块功能类似,用户自定义控制模块是为了方便用户进程二次开发或者使用第三方控制软件,通过开放API方便用户使用。数据封装单元(Data Packaging Unit)主要完成监控数据的转换与封装,方便发送模块进程数据传送,包括三个模块默认封装模块(Default Packaging Module)、其他封装模块(Other Packaging Module)和用户自定义封装模块(User Defined PackagingModule)。默认封装模块用于在用户没有其他设置时,系统将会采用默认封装模块,该模块采用JSON (Java Script Object Notation,—种轻量级的数据交换格式)数据封装格式进行封装。其他封装模块(Other Packaging Module)用于预存其他数据封装模块,满足不同监控用户的需求。用户自定义封装模块(User Defined Packaging Module)用于预留用户自定义数据封装模块,用户可通过系统提供的开放式API来自定义数据封装策略。监听单元(Listening Module)主要包括信息接收模块与数据发送模块。信息接收模块主要负责监听从数据队列服务器发送过来的指令,并将其传入相应的模块。数据发送模块主要负责将收集打包好的数据按照指定频率不间断传送给数据队列服务器。如果监听单元接到停止发送指令,则信息接收模块与数据发送模块将停止工作。
系统参数XML配置单元主要负责系统基本参数的配置,供其他模块使用。系统参数XML配置单元与监控服务器使用相同的XML,这样可以保证监控数据从内容、格式和频率上的一致性。请参阅图3,图3为监控服务器的结构示意图。监控服务器包括消息队列服务器(Message Queue Service)、中心服务器(Center Service)、网络服务器(Web Service)以及数据库服务器(NoSQL Database Service)。四个模块公共完成了监控服务器的模块的数据接收、分析、监控以及可视化等功能。这四个模块可以单独放置在四个不同的服务器之上,从而组成监控服务集群,也可以根据机房情况与机器性能而任意组合,从而使系统有更大的伸缩性。四个模块之间因为要互相频繁通信,因此四个模块最好能够处于同一局域网内部,从而保证通信质量与速度。消息队列服务器(Message Queue Service)负责接收各个节点发送过来的数据,并按照中心服务器的需求来进程数据的递送。消息队列服务器使用rabbitMQ来进行数据的接收、存储与递送,这样能够保证数据的大规模接收与防止数据丢失。消息队列服务器的核心是一个存储队列,该队列负责将各个节点发送过来的数据进程存储,之后根据中心服务器(Center Service)的需求进行数据弹出与发送。在每个Node上运行的发送模块使用rabbitMQ的开发包,这样可不必考虑数据具体的发送方式,完全按照rabbitMQ的数据发送模式来进行。而在每个中心服务器上,也运行了使用rabbitMQ开发包中的接收程序,用来运行消费者(Consumer),从而进程数据接收。通过这种结构设计出来的消息队列服务器,能够进程大规模集群的数据接收,从而保证了系统弄个能够进行大规模集群的监控。而基于rabbitMQ的数据存储、发送与接收,保证了数据的完整性和通信的高效性。中心服务器(Center Service)是本监控系统最为核心的装置,也是本系统通信最频繁,最复杂的模块,因此,中心服务器的设计将会关系到整个系统的稳定性。中心服务器包括数据持久化模块(Data Persistent Module):负责将解包的数据存入数据库服务器(Database Service),该模块在整个系统运行阶段不间断运行,只要数据收集模块收集到数据,则进行数据持久化;报警模块负责不间断检查节点列表与监控数据流,如果有触发报警的条件,则通过数据交换模块(Data Switch Module)将报警信息发送到网页服务器中;节点列表更新模块负责收集节点信息,并将其更新到节点列表之中;节点列表分析模块负责不间断的分析节点列表状态,对于新加入的节点,退出的节点信息通过报警模块发送到网页服务器中。在该架构图中的数据持久化模块、报警模块和节点列表分析及更新模块并存,没有先后次序,对应到程序中就是一个进程的三个线程,这样可以保证其中任意一个功能模块失效不会影响另外功能模块的执行。数据库服务器(Database Service)是运行NoSQL数据库服务的模块,该模块中当前运行MongoDB数据库服务器。由于该数据库服务器在每一时刻都要进行大规模的数据分析、查询、插入等操作,因此将所有的操作都集中在一起 势必会造成服务器的压力,所以本服务器充分利用MongoDB的复制功能,可以用复制来应对故障切换、数据集成,还可以用来做读扩展、热备份或作为离线处理的数据源。数据库服务器的架构中包括一个主节点和多个从节点,从节点能够与主节点的数据进程同步,并分担不同的任务,例如集群分析,集群信息查询等。主节点专门负责数据的插入与更新。这样可以大大降低多个任务对单个数据库节点的压力。其中,主节点与从节点可以运行在同一个服务器上,也可以分散在不同的服务器上。网页服务器(Web Service)负责为用户监控提供可视化服务,并支持数据查询等其他较为复杂的功能。网页服务器同时为基于WEB的监控页面与基于Android客户端来提供服务。虽然为不同的客户端提供服务,但是其实现都是相同的,使用Java来完成其业务逻辑,因此,两者的服务可以放在一起,也可以使用相同的类与连接词等。该服务器最重要的结构是包含一个数据池,该数据池(Data pool)在WEB容器启动时即创建,该数据池用于存储整个集群中所有节点监控信息的最新值 ,而且处于不断的更新之中,而监控系统只需从该池中调去特定的数据即可进行监控。请参阅图4,为本发明实施例的开放式云计算大规模集群监控方法的流程图。本发明实施例的开放式云计算大规模集群监控方法包括步骤100 :用户根据自身需求选择需要动态监控层次与监控对象,监控层次可以为物理机或者虚拟机,也可以是两者同时监控;步骤200 :根据用户选择的监控层次与动态监控对象,系统自动生成监控信息图;在步骤200中,监控信息图为心跳图,横坐标是为时间,纵坐标为监控到的数据大小用户可在监控的过程中随意调整监控时间间隔,系统会根据用户的调整来改变心跳图的呈现方式。在步骤200中,如果用户选择对当前集群状况诊断时,转入步骤202,如果用户在Web页面中打开集群监控页面,转入步骤205 ;步骤202 :系统对存储在消息队列服务器中的节点列表进行分析,从而提取出当前集群中是否有节点退出或者新增节点,形成诊断信息Al,并转入步骤203 ;步骤203 :采用NoSQL数据库MongoDB进行数据持久化,系统提取近一分钟的持久化数据,并对网络10、内存、CPU、磁盘等信息进行分析,从而提取出集群的运行状况,形成诊断信息A2,并转入步骤204 ;步骤204 :形成最终诊断信息A1+A2,并将该信息推送至网页服务器。等待下一次的诊断命令;步骤205 :如果有用户在Web页面中打开集群监控页面,Web服务器会每隔10秒钟向消息队列服务器的集群监控模块发送监控命令,集群监控模块收到该命令后,会对自身的节点列表进行分析,从而分析出当前集群中节点的变动情况,形成监控信息A3,转入步骤206 ;步骤206 :消息队列服务器将监控信息A3发送到Web服务器中,等待下一次的监控请求。步骤300 :在监控的过程中将鼠标移动至图表上来查看监控信息的具体数字。本发明实施例的开放式云计算大规模集群监控系统及方法通过开放式集群节点守护进程模块收集用户指定或自定义的节点信息,对集群中运行的物理机与虚拟机进行动态实时监控,另外对集群的运行状况与运行中出现的问题进行实时监控,为集群管理员提供更加实时、可靠与详细的监控服务;另外,本发明实施例的开放式云计算大规模集群监控系统及方法统一将节点监控信息进行上报,将监控信息进行统一存储,避免在每一个节点上都存储整个集群的监控信息,防止节点大量的数据冗余。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种开放式云计算大规模集群监控系统,包括监控端,所述监控端用于供用户选择要监控的对象,其特征在于,还包括 功能服务器集群用于接收监控端选择需要动态监控层次与监控对象,将监控指令下发; 云平台服务器集群用于接收功能服务器集群的监控指令,将监控到的节点信息传送给功能服务器集群。
2.根据权利要求1所述的开放式云计算大规模集群监控系统,其特征在于,所述功能服务器集群包括消息队列服务器、中心服务器、网络服务器以及数据库服务器,所述消息队列服务器负责接收各个节点发送过来的数据,并按照中心服务器的需求来进程数据的递送;所述中心服务器用于将接收的数据进行数据持久化,并检查节点列表与监控数据流;所述网页服务器用于为用户监控提供可视化服务,并支持数据查询功能;所述数据库服务器用于进行大规模的数据分析、查询、插入等操作。
3.根据权利要求2所述的开放式云计算大规模集群监控系统,其特征在于,所述中心服务器包括 数据持久化模块负责将解包的数据进行持久化,并存入数据库服务器; 报警模块负责检查节点列表与监控数据流,如果有触发报警的条件,则将报警信息发送到网页服务器; 节点列表更新模块负责收集节点信息,并将其更新到节点列表之中; 节点列表分析模块负责不间断的分析节点列表状态,对于新加入的节点,退出的节点信息通过报警模块发送到网页服务器。
4.根据权利要求2所述的开放式云计算大规模集群监控系统,其特征在于,所述数据库服务器的数据库采用MongoDB,包括主节点和多个从节点,所述从节点与主节点的数据进程同步。
5.根据权利要求2所述的开放式云计算大规模集群监控系统,其特征在于,所述网页服务器包括数据池,所述数据池用于存储整个集群中所有节点监控信息的最新值。
6.根据权利要求1所述的开放式云计算大规模集群监控系统,其特征在于,所述云平台服务器集群包括虚拟机集群和物理机集群,所述虚拟机集群和物理机集群包括至少一个虚拟机和物理机,所述虚拟机与对应的物理机进行通讯。
7.根据权利要求1或2所述的开放式云计算大规模集群监控系统,其特征在于,所述云平台服务器集群包括数据收集单元、控制单元、数据封装单元、监听单元和系统参数XML配置单元;所述数据收集单元对系统进行解析,提取出有用的监控数据;所述控制单元根据功能服务器集群的指令对进程进行控制、守护或开发;所述数据封装单元用于完成监控数据的转换与封装,方便发送模块进程数据传送,所述监听单元负责监听从数据队列服务器发送过来的指令,并将其传入相应的模块;所述系统参数XML配置单元主要负责系统基本参数的配置。
8.根据权利要求7所述的开放式云计算大规模集群监控系统,其特征在于,所述数据收集单元包括三个模块/proc解析模块、用户自定义收集模块和第三方插件收集模块,所述/proc解析模块负责对操作系统的/proc文件系统进行解析,提取出有用的监控数据,所述用户自定义收集模块通过开放API来支持用户自定义监控模式,所述第三方插件收集模块用来支持用户配置与使用第三方插件收集工具或协议。
9.根据权利要求7所述的开放式云计算大规模集群监控系统,其特征在于,所述控制单元包括沉睡功能模块、进程控制模块和用户自定义控制模块,所述沉睡功能模块用于确保该守护进程轻量级运行,所述进程控制模块用于根据功能服务器集群的指令改变某一进程的运行状态或杀死该进程,所述用户自定义控制模块用于方便用户进程二次开发或者使用第三方控制软件。
10.一种开放式云计算大规模集群监控方法,包括 步骤a :根据自身需求选择需要动态监控层次与监控对象; 步骤b :根据用户选择的监控层次与动态监控对象,系统生成监控信息图; 步骤c :将监控信息发送到监控端供用户进行查看。
11.根据权利要求10所述的开放式云计算大规模集群监控方法,其特征在于,所述选择的监控对象为当前集群状况诊断,系统对存储在消息队列服务器中的节点列表进行分析,提取出当前集群中是否有节点退出或者新增节点,形成诊断信息Al ;采用NoSQL数据库MongoDB进行数据持久化,提取持久化数据,并对网络10、内存、CPU、磁盘等信息进行分析,提取出集群的运行状况,形成诊断信息A2 ;形成最终诊断信息A1+A2,并将诊断信息推送至网页服务器。
12.根据权利要求10所述的开放式云计算大规模集群监控方法,其特征在于,所述选择的监控对象为集群监控,所述网页服务器间隔一段时间向消息队列服务器的集群监控模块发送监控命令,集群监控模块收到该命令后,对自身的节点列表进行分析,分析出当前集群中节点的变动情况,形成监控信息A3,所述消息队列服务器将监控信息A3发送到网页服务器。
全文摘要
本发明属于云计算技术领域,尤其涉及一种开放式云计算大规模集群监控系统及方法。本发明的开放式云计算大规模集群监控系统包括监控端、功能服务器集群和云平台服务器集群,所述监控端用于供用户选择要监控的对象,所述功能服务器集群用于接收监控端选择需要动态监控层次与监控对象,将监控指令下发;所述云平台服务器集群用于接收功能服务器集群的监控指令,将监控到的节点信息传送给功能服务器集群。本发明实施例的开放式云计算大规模集群监控系统及方法对集群中运行的物理机与虚拟机进行动态实时监控,为集群管理员提供更加实时、可靠与详细的监控服务;另外,将节点监控信息进行上报,将监控信息进行统一存储防止大量的数据冗余。
文档编号H04L12/26GK103024060SQ20121055884
公开日2013年4月3日 申请日期2012年12月20日 优先权日2012年12月20日
发明者须成忠, 曾经纬, 杨聪, 洪爵 申请人:中国科学院深圳先进技术研究院