发明内容
为解决上述问题,本发明提供了一种基于数据压缩的可扩展的监控方法及系统,本发明通过压缩监控数据、自动调节数据收集时间粒度,减少了网络传输的数据量,提高了监控系统的扩展性。
为实现上述目的,本发明提供一种通过压缩数据提高监控资源扩展性的方法,该方法包括:
步骤1,数据收集模块收集所在监控节点的静态信息,并将所述静态信息转化成静态数据报文发送给上层的数据聚集模块;
步骤2,所述数据收集模块周期性的收集所在监控节点的动态信息,并将其与上一周期发送的相应动态信息相比较,若差值超过指定值,则将收集的动态信息加入到发送列表中,否则继续下一周期的收集操作;
步骤3,动态信息收集完毕后,将所述发送列表中的所有动态信息转化成动态数据报文发送给上层的数据聚集模块;
步骤4,数据聚集模块接收数据报文,对接收的所有数据报文的来源进行判断,若来源是下层的数据聚集模块,则直接发送给数据存储模块,若来源是数据收集模块,则进行属性判断后分别解析成相应的动态信息和静态信息,然后将所述动态信息和静态信息聚集成新的动态数据报文和静态数据报文后发送给上层的数据存储模块;
步骤5,数据存储模块分别将所述新的动态数据报文和静态数据报文解析为节点动态信息和节点静态信息后,将其分别插入数据库的静态数据表和历史信息表中,更新数据库。
其中,所述数据报文的第一位表示信息属性,第一位为1表示该数据报文的数据为静态信息,第一位为0则表示该数据报文的数据为动态信息;
所述数据报文的第二位表示信息来源,第一位为1表示该数据报文的数据来源于数据收集模块,第一位为0则表示该数据报文的数据来源于数据聚集模块。
进一步的,所述步骤4包括:
步骤41,数据聚集模块接收数据报文msg1并初始化一个新的数据报文msg2,将msg2的第一位设定为msg1的第一位,第二位设定为0,然后判断msg1的第二位,若为1,表示该数据报文来自数据收集模块,执行步骤43,若为0,表示该数据报文来自数据聚集模块,则执行步骤42;
步骤42,将msg1分割成多个子数据报文,其中一个子数据报文对应一个节点的数据,执行步骤43;
步骤43,判断msg1或所述多个子数据报文的第一位,若为1,表示msg1或所述多个子数据报文的数据为静态信息,执行步骤44,若为0,表示msg1或所述多个子数据报文的数据为动态信息,则执行步骤45;
步骤44,将msg1或所述多个子数据报文解析为节点的静态信息,执行步骤46;
步骤45,将msg1或所述多个子数据报文解析为节点的动态信息,执行步骤46;
步骤46,将步骤44或步骤45解析所得的信息追加到msg2中,执行步骤47;
步骤47,将msg2发送给数据存储模块或上层的数据聚集模块。
进一步的,所述步骤5包括:
步骤51,所述数据存储模块接收数据报文msg,将msg分割成多个子数据报文;
步骤52,判断msg的第二位,若为0,则执行步骤54,若为1,则执行步骤53;
步骤53,将所述多个子数据报文分别解析为节点静态信息,并将其插入数据库的静态数据表中;
步骤54,将所述多个子数据报文分别解析为节点动态信息,并将其插入数据库的历史信息表中。
其中,所述静态信息包括:CPU频率、内存大小、网络带宽和磁盘大小;所述动态信息包括:CPU利用率、内存占用率、带宽使用量和磁盘使用率。
为实现上述目的,本发明还提供一种通过压缩数据提高监控资源扩展性的系统,该系统包括:
数据收集模块,用于收集所在监控节点的静态信息,并将所述静态信息转化成静态数据报文发送给上层的数据聚集模块;
比较模块,所述数据收集模块周期性的收集所在监控节点的动态信息,并将其与上一周期发送的相应动态信息相比较,若差值超过指定值,则将收集的动态信息加入到发送列表中,否则继续下一周期的收集操作;
发送模块,动态信息收集完毕后,将所述发送列表中的所有动态信息转化成动态数据报文发送给上层的数据聚集模块;
数据聚集模块,用于接收数据报文,对接收的所有数据报文的来源进行判断,若来源是下层的数据聚集模块,则直接发送给数据存储模块,若来源是数据收集模块,则进行属性判断后分别解析成相应的动态信息和静态信息,然后将所述动态信息和静态信息聚集成新的动态数据报文和静态数据报文后发送给上层的数据存储模块;
数据存储模块,用于分别将所述新的动态数据报文和静态数据报文解析为节点动态信息和节点静态信息后,将其分别插入数据库的静态数据表和历史信息表中,更新数据库。
其中,所述数据报文的第一位表示信息属性,第一位为1表示该数据报文的数据为静态信息,第一位为0则表示该数据报文的数据为动态信息;
所述数据报文的第二位表示信息来源,第一位为1表示该数据报文的数据来源于数据收集模块,第一位为0则表示该数据报文的数据来源于数据聚集模块。
进一步的,所述数据聚集模块包括:
初始化模块,数据聚集模块接收数据报文msg1并初始化一个新的数据报文msg2,将msg2的第一位设定为msg1的第一位,第二位设定为0,然后判断msg1的第二位,若为1,表示该数据报文来自数据收集模块,执行聚集判断模块,若为0,表示该数据报文来自数据聚集模块,则执行聚集分割模块;
聚集分割模块,将msg1分割成多个子数据报文,其中一个子数据报文对应一个节点的数据,执行聚集判断模块;
聚集判断模块,判断msg1或所述多个子数据报文的第一位,若为1,表示msg1或所述多个子数据报文的数据为静态信息,执行静态解析模块,若为0,表示msg1或所述多个子数据报文的数据为动态信息,则执行动态解析模块;
静态解析模块,将msg1或所述多个子数据报文解析为节点的静态信息,执行追加模块;
动态解析模块,将msg1或所述多个子数据报文解析为节点的动态信息,执行追加模块;
追加模块,将静态解析模块或动态解析模块解析所得的信息追加到msg2中,执行处理模块;
处理模块,将msg2发送给数据存储模块或上层的数据聚集模块。
进一步的,所述数据存储模块包括:
存储分割模块,所述数据存储模块接收数据报文msg,将msg分割成多个子数据报文;
存储判断模块,判断msg的第二位,若为0,则执行第二插入模块,若为1,则执行第一插入模块;
第一插入模块,将所述多个子数据报文分别解析为节点静态信息,并将其插入数据库的静态数据表中;
第二插入模块,将所述多个子数据报文分别解析为节点动态信息,并将其插入数据库的历史信息表中。
其中所述静态信息包括:CPU频率、内存大小、网络带宽和磁盘大小;所述动态信息包括:CPU利用率、内存占用率、带宽使用量和磁盘使用率。
本发明的有益功效在于,本发明通过访问数据聚集数据库获得计算环境的当前信息或历史状态,然后利用数据压缩,对每个监控节点的任一种度量标准仅传输其值变化超过一定范围的数据,自动调整发送的监控数据,减少了网络传输量,获得了监控系统的高扩展性和各指标的时间粒度自动调整功能,当节点状态数据变化较大时,其发送数据量较多(不会超过现有监控系统内发送的数据量),时间粒度就较细;当节点状态数据变化较小时,其发送数据量较少,时间粒度就较粗。而且本发明能实时描述出系统的当前状态,减少系统的计算负载和网络传输量,保证了系统的扩展性,适用于现有的监控系统。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
具体实施方式
图1是本发明的一种通过压缩数据提高监控资源扩展性的方法流程图。如图1所示,该方法包括:
步骤1,数据收集模块收集所在监控节点的静态信息,并将所述静态信息转化成静态数据报文发送给上层的数据聚集模块;
步骤2,所述数据收集模块周期性的收集所在监控节点的动态信息,并将其与上一周期发送的相应动态信息相比较,若差值超过指定值,则将收集的动态信息加入到发送列表中,否则继续下一周期的收集操作;
步骤3,动态信息收集完毕后,将所述发送列表中的所有动态信息转化成动态数据报文发送给上层的数据聚集模块;
步骤4,数据聚集模块接收数据报文,对接收的所有数据报文的来源进行判断,若来源是下层的数据聚集模块,则直接发送给数据存储模块,若来源是数据收集模块,则进行属性判断后分别解析成相应的动态信息和静态信息,然后将所述动态信息和静态信息聚集成新的动态数据报文和静态数据报文后发送给上层的数据存储模块;
步骤5,数据存储模块分别将所述新的动态数据报文和静态数据报文解析为节点动态信息和节点静态信息后,将其分别插入数据库的静态数据表和历史信息表中,更新数据库。
其中,所述数据报文的第一位表示信息属性,第一位为1表示该数据报文的数据为静态信息,第一位为0则表示该数据报文的数据为动态信息;
所述数据报文的第二位表示信息来源,第一位为1表示该数据报文的数据来源于数据收集模块,第一位为0则表示该数据报文的数据来源于数据聚集模块。
进一步的,所述步骤4包括:
步骤41,数据聚集模块接收数据报文msg1并初始化一个新的数据报文msg2,将msg2的第一位设定为msg1的第一位,第二位设定为0,然后判断msg1的第二位,若为1,表示该数据报文来自数据收集模块,执行步骤43,若为0,表示该数据报文来自数据聚集模块,则执行步骤42;
步骤42,将msg1分割成多个子数据报文,其中一个子数据报文对应一个节点的数据,执行步骤43;
步骤43,判断msg1或所述多个子数据报文的第一位,若为1,表示msg1或所述多个子数据报文的数据为静态信息,执行步骤44,若为0,表示msg1或所述多个子数据报文的数据为动态信息,则执行步骤45;
步骤44,将msg1或所述多个子数据报文解析为节点的静态信息,执行步骤46;
步骤45,将msg1或所述多个子数据报文解析为节点的动态信息,执行步骤46;
步骤46,将步骤44或步骤45解析所得的信息追加到msg2中,执行步骤47;
步骤47,将msg2发送给数据存储模块或上层的数据聚集模块。
进一步的,所述步骤5包括:
步骤51,所述数据存储模块接收数据报文msg,将msg分割成多个子数据报文;
步骤52,判断msg的第二位,若为0,则执行步骤54,若为1,则执行步骤53;
步骤53,将所述多个子数据报文分别解析为节点静态信息,并将其插入数据库的静态数据表中;
步骤54,将所述多个子数据报文分别解析为节点动态信息,并将其插入数据库的历史信息表中。
其中,所述静态信息包括:CPU频率、内存大小、网络带宽和磁盘大小;所述动态信息包括:CPU利用率、内存占用率、带宽使用量和磁盘使用率。
图2是本发明的一种通过压缩数据提高监控资源扩展性的系统示意图。如图2所示,该系统包括:
数据收集模块100,用于收集所在监控节点的静态信息,并将所述静态信息转化成静态数据报文发送给上层的数据聚集模块;
比较模块200,所述数据收集模块周期性的收集所在监控节点的动态信息,并将其与上一周期发送的相应动态信息相比较,若差值超过指定值,则将收集的动态信息加入到发送列表中,否则继续下一周期的收集操作;
发送模块300,动态信息收集完毕后,将所述发送列表中的所有动态信息转化成动态数据报文发送给上层的数据聚集模块;
数据聚集模块400,用于接收数据报文,对接收的所有数据报文的来源进行判断,若来源是下层的数据聚集模块,则直接发送给数据存储模块,若来源是数据收集模块,则进行属性判断后分别解析成相应的动态信息和静态信息,然后将所述动态信息和静态信息聚集成新的动态数据报文和静态数据报文后发送给上层的数据存储模块;
数据存储模块500,用于分别将所述新的动态数据报文和静态数据报文解析为节点动态信息和节点静态信息后,将其分别插入数据库的静态数据表和历史信息表中,更新数据库。
其中,所述数据报文的第一位表示信息属性,第一位为1表示该数据报文的数据为静态信息,第一位为0则表示该数据报文的数据为动态信息;
所述数据报文的第二位表示信息来源,第一位为1表示该数据报文的数据来源于数据收集模块,第一位为0则表示该数据报文的数据来源于数据聚集模块。
进一步的,所述数据聚集模块400包括:
初始化模块,数据聚集模块接收数据报文msg1并初始化一个新的数据报文msg2,将msg2的第一位设定为msg1的第一位,第二位设定为0,然后判断msg1的第二位,若为1,表示该数据报文来自数据收集模块,执行聚集判断模块,若为0,表示该数据报文来自数据聚集模块,则执行聚集分割模块;
聚集分割模块,将msg1分割成多个子数据报文,其中一个子数据报文对应一个节点的数据,执行聚集判断模块;
聚集判断模块,判断msg1或所述多个子数据报文的第一位,若为1,表示msg1或所述多个子数据报文的数据为静态信息,执行静态解析模块,若为0,表示msg1或所述多个子数据报文的数据为动态信息,则执行动态解析模块;
静态解析模块,将msg1或所述多个子数据报文解析为节点的静态信息,执行追加模块;
动态解析模块,将msg1或所述多个子数据报文解析为节点的动态信息,执行追加模块;
追加模块,将静态解析模块或动态解析模块解析所得的信息追加到msg2中,执行处理模块;
处理模块,将msg2发送给数据存储模块或上层的数据聚集模块。
进一步的,所述数据存储模块500包括:
存储分割模块,所述数据存储模块接收数据报文msg,将msg分割成多个子数据报文;
存储判断模块,判断msg的第二位,若为0,则执行第二插入模块,若为1,则执行第一插入模块;
第一插入模块,将所述多个子数据报文分别解析为节点静态信息,并将其插入数据库的静态数据表中;
第二插入模块,将所述多个子数据报文分别解析为节点动态信息,并将其插入数据库的历史信息表中。
其中所述静态信息包括:CPU频率、内存大小、网络带宽和磁盘大小;所述动态信息包括:CPU利用率、内存占用率、带宽使用量和磁盘使用率。
图3是本发明的一实施例的监控系统模型示意图。如图3所示,本发明的一个具体实施例的监控系统模型可以包括三个模块:数据收集模块(DataCollection Module,简称DCM)、数据聚集模块(Data Aggregation Module,简称DAM)和数据存储模块(Data Storage Module,简称DSM)。最底层的每个叶子节点为DCM,分别对应一个计算机节点。DCM周期性的收集其所在节点的状态数据并对数据进行处理,然后将处理后的数据发送给上层的DAM。DAM将收集的数据发送给其上层的DAM或DSM。DSM将收集的数据存入数据库。用户可通过访问数据库获得计算机系统的当前状态或历史状态。
具体来说,各模块的内容如下所述。
数据收集模块DCM的工作步骤包括:
步骤A1.收集所在节点的静态信息(例如CPU频率、内存大小、网络带宽和磁盘大小等),发送给上层DAM;
步骤A2.周期性(时间周期有用户自定义)收集所在节点的动态信息(例如CPU利用率、内存占用率、带宽使用量和磁盘使用率等);
步骤A3.将收集来的各个度量指标的值与上次发送的相应指标的值进行比较,若其变化超过一定量,则将该数据加入发送列表中;
步骤A4.所有收集的数据完成步骤A3后,将发送列表的所有数据发送给其上层DAM。
DCM的步骤A3使得每次发送的数据仅是完整数据的一部分,实现监控数据的压缩,较少了数据传输量,从而提高了监控系统的扩展性。DCM的步骤A3也实现了自动调节发送数据的时间粒度的功能:当节点状态的某个度量指标数据变化范围和频率较大时,就需要每个周期发送该度量指标的数据,从而发送该度量指标的时间粒度就较细;而当节点状态某个度量指标数据变化范围或频率较小时,这时DCM就会在一些周期内不发送该度量指标的数据,从而发送该度量指标的时间粒度就较粗。
数据聚集模块DAM的工作步骤包括:
步骤B1.接收来自其下层的DCM或DAM的数据;
步骤B2.将接收的所有数据进行解析并将解析所得的数据进行聚集;
步骤B3.将聚集所得数据发送给其上层的DAM(若该DAM的上层是DAM)或DSM(若该DAM为最上层的DAM)。
数据存储模块DSM的工作步骤包括:
步骤C1.接收来自最上层的DAM发送的数据;
步骤C2.将接收的数据进行解析,并将结果存入数据库。
具体而言,本发明的三个模块(DCM、DAM和DSM)分别有三个守护进程实现。这三个守护进程分别为:数据收集守护进程(Data Collection Daemon,DCD)、数据聚集守护进程(Data Aggregation Daemon,DAD)和数据存储守护进程(Data Storage Daemon DSD)。图4是本法吗的一实施例的监控系统中的三个进程示意图。如图4所示:
数据收集守护进程DCD的具体步骤如下:
步骤A1.收集所在节点的静态信息并将其形成数据报文(其中的第一位为1,表示该数据报文的数据为静态信息;第二位为1,表示该数据报文是由DCD发送的);
步骤A2.将步骤A1得到的数据报文发送给其上层的DAD;
步骤A3.设定定时器,周期性的执行步骤A4到步骤A6;
步骤A4.初始化动态信息报文:第一位设定为0,表示该数据报文的数据为动态信息;第二位为1,表示该数据报文是由DCD发送的;
步骤A5.收集节点动态信息,与其上一次发送的相应信息值相比较,若两者差的绝对值超过一定值(如CPU利用率为5%,内存使用率为5%等),则将该动态信息追加到步骤A4的报文中;
步骤A6.将步骤A5得到的数据报文发送给其上层的DAD。
数据聚集守护进程DAD的具体步骤如下:
步骤B1.接收数据报文(定义为msg1)并初始化一个新的数据报文(定义为msg2),将msg2的第一位设定为msg1的第一位,第二位设定为0。判断msg1的第二位,若为1,表示该数据报文来自DCD,转到步骤B4,反之继续;
步骤B2.将msg1分割成多个小的数据报文,其中一个小的数据报文对应一个节点的数据;
步骤B3.判断msg1的第一位,若为1,表示该数据报文为节点的静态信息,对步骤B2中获得的多个小的数据报文分别执行步骤B5和步骤B7,反之对这些数据报文分别执行步骤B6和步骤B7;
步骤B4.msg1的第一位,若为1,表示该数据报文为节点的静态信息,执行步骤B5,反之,执行步骤B6;
步骤B5.将msg1或步骤B2所得的多个数据报文解析为节点的静态信息并转到步骤B7;
步骤B6.将msg1或步骤B2所得的多个数据报文解析为节点的动态信息;
步骤B7.将步骤B5或步骤B6解析所得的信息追加到msg2中;
步骤B8.将msg2发送给上层的DAD或DSD,转到步骤B1。
数据存储守护进程DSD的具体步骤如下:
步骤C1.接收数据报文(设为msg),将msg分割成多个小的数据报文;
步骤C2.判断msg的第二位,若为0,则转到步骤C4,反之继续;
步骤C3.将步骤C1所得的多个小的数据报文分别解析为节点静态信息并插入数据库的静态数据表中,转到步骤C1;
步骤C4.将步骤C1所得的多个小的数据报文分别解析为节点动态信息,对每条信息执行步骤C5;
步骤C5.将信息插入数据库的历史信息表中,并更新数据库的最新状态数据表的相应记录,转到步骤C1。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。