一种无误使用压缩算法的分布式监控系统及其方法
技术领域
本发明涉及大规模分布式系统的监控领域,特别是涉及到一种无误使用压缩算法的分布式监控系统及其方法。
背景技术
为了有效的管理分布式计算系统,操作者必须了解当前系统及应用的行为。这就需要不间断的进行监控以提供给操作者该计算系统的当前状态,而且监控的节点信息应尽可能的完整。每个监控系统均至少存在一个管理节点处理收集的所有在被监控节点上采集的数据。研究表明,管理节点的CPU是监控系统的关键瓶颈之一,且管理节点的CPU利用率随着接收信息的数量减少而减低,随着每条信息的大小减小而减低。所以,压缩算法通过减少信息数量或每条信息的大小有效的降低监控系统的开销,从而提高监控系统的扩展性。
数据压缩算法是通过查找数据间的空间或时间关联性来减少需要发送的数据,被压缩的数据可以通过其引用值被恢复,从而数据压缩算法可以被分为三类:空间关联算法、时间关联算法和时空关联算法。
现有技术存在一个实时监控系统VGXP采用的压缩算法为时间关联算法:对每个节点的每个指标值,首次将采样值发送给管理节点,然后从零开始累计连续两次采样值的变化量,若累计的值超过用户预设的阈值,则发送该累计值,并将累计值清零,从零开始累计;若该累计值未超过阈值,则继续累计。
现有技术存在一个结合时间关联算法和空间关联算法的监控系统Info Track。Info Track系统中每个集群有一个集群头。对于集群头节点,它将本次收集的数据与预测值(上次发送的数据)相比,若其相对差在预定义的错误率之内,就不需将本次收集的值发送给管理节点,管理节点会以预测值作为该集群头节点的本次指标值,该集群头结点将预测值发送给其所属集群的其它节点;反之,该集群头节点将本次收集的值发送给管理节点和其所属集群的其它节点。对于集群的其它节点,任意节点将其本次收集的值与预测值(上次发送的值)相比,若相对差在预定义的错误率之内,则不用发送本次收集的数据值,管理节点将预测值作为该节点的属性值;反之,节点将本次收集的属性值与其接收到它的集群头发送的值相比,若相对差在一定错误率之内,则不发送本次获取的属性值,管理节点将集群头本次的属性值作为该节点本次属性值;否则,该节点发送其本次收集的属性值给管理节点。
现有技术存在一个使用了时空关联算法的监控系统OLIC。OLIC系统把节点分为工作节点和管理节点。管理节点分别周期性的收集每个工作节点的属性值。该技术将所要监控的所有工作节点划分为块,每块具有相同的节点数量,首先管理节点收集所有工作节点的节点内属性值,收集若干次数后,管理节点对每个特定块(设为块A)搜索是否存在一块的节点内属性值与其相似,若存在这样的块(设为块B),则块A在以后每次发送其节点内属性值时先于块B的节点内属性值进行比较,若相差在一定范围内,块A本次就不向管理节点发送其节点内属性值,管理节点就将块A的节点内属性值设为块B的节点内属性值,反正,块A将其节点内属性值发送给管理节点。当块A多次发送给管理节点其节点内属性值,则管理节点就重新查找块以代替块B。
以上技术使用压缩算法的正确性是建立在计算系统无故障的基础上。监控系统使用压缩算法时会在以下案例发生错误:
1)对于使用了空间关联的压缩算法,被引用的值丢失,则被压缩的数据无法被恢复;
2)对于时间关联压缩算法,节点n的数据收集时刻序列:t0…ti…tj…tk…(0<i<j<k),其中ti时刻节点n的属性a的值ai n不能被压缩,ti+1...tj-1时刻的a的值能被ai n压缩。tj时刻属性a的值aj n不能被压缩,tj+1时刻a的值aj+1 n可以被aj n压缩,aj n被丢失,此时管理节点以ai n作为引用值恢复tj时刻的a值为aj n’,aj+1 n以aj n’为引用值恢复为aj+1 n’,此时管理节点以aj n’和aj+1 n’分别作为aj n和aj+1 n的值是错误的;
3)对于空间关联算法,ti时刻节点n的属性a的ai n能被节点m的属性ai m压缩,ai+1 n不能被ai+1 m压缩,此时若ai+1 n被丢失,则管理节点以ai+1 m作为ai+1 n的引用值进行恢复。
现有技术存在一个解决上述1)的系统RCM。RCM通过对每个引用值添加备用引用值解决了OLIC中提供引用值的节点发生故障时无法恢复被压缩数据的现象。
目前还不存在相关技术解决上述的案例2)和3)。
因此,需要提出一种系统来可以有效的解决上述的三个案例,并适用于所有的压缩算法。
发明内容
本发明的目的在于提供一种无误使用压缩算法的分布式监控系统及其方法,用于解决现有技术中无法无误使用压缩算法的缺陷。
为了实现上述目的,本发明提供一种无误使用压缩算法的分布式监控系统,其特征在于,包括:依次连接的数据采集模块、数据汇聚模块以及数据管理模块;
所述数据采集模块周期性地收集被监控节点的状态信息,对该状态信息进行处理形成数据报;接收所述数据汇聚模块返回的报文,并根据该报文的内容设置下一周期所收集信息的处理方式;
所述数据汇聚模块接收并汇聚来自所述数据采集模块的数据报,周期性地将汇聚的信息发送给所述数据管理模块,并在发送成功后返回给所述数据采集模块一个报文;
所述数据管理模块接收来自所述数据汇聚模块的信息,解析该信息并显示该信息。
所述的无误使用压缩算法的分布式监控系统,其中,所述数据采集模块还通过设置一标识,以表示最近一次信息是否发送成功。
所述的无误使用压缩算法的分布式监控系统,其中,所述数据采集模块还用于:
获取收集该状态信息的第一时间并当最近一次信息发送失败时,对该状态信息进行处理形成数据报发送给所述数据汇聚模块,并接收所述数据汇聚模块返回的报文,根据返回的报文获取第二时间,当该第一时间与该第二时间相同时,将该标识设置为成功,不相同时,将该标识设置为失败;或
获取收集该状态信息的第一时间并当最近一次信息发送成功时,对该状态信息进行压缩处理形成数据报发送给所述数据汇聚模块,并接收所述数据汇聚模块返回的报文,根据返回的报文获取第二时间,当该第一时间与该第二时间相同时,将该标识设置为成功,不相同时,将该标识设置为失败。
所述的无误使用压缩算法的分布式监控系统,其中,所述数据汇聚模块还用于将来自所述数据采集模块的数据报与已接收到的数据报汇聚为一个数据报,解析来自所述数据采集模块的数据报得到一时间信息,将汇聚后的数据报周期性地发送给所述数据管理模块,并在发送成功后,将该时间信息返回给所述数据采集模块。
所述的无误使用压缩算法的分布式监控系统,其中,所述数据汇聚模块还用于使用标准输入输出函数显示解析后的信息。
为了实现上述目的,本发明提供一种无误使用压缩算法的分布式监控方法,其特征在于,该方法包括:
步骤一,数据采集模块周期性收集被监控节点的状态信息,对该状态信息进行处理形成数据报;
步骤二,数据汇聚模块接收并汇聚来自所述数据采集模块的数据报,周期性的将汇聚的信息发送给数据管理模块,并在发送成功后返回给所述数据采集模块一个报文;
步骤三,所述数据采集模块接收所述数据汇聚模块返回的报文,并根据该报文的内容设置下一周期所收集信息的处理方式;
步骤四,所述数据管理模块接收来自所述数据汇聚模块的信息,解析该信息并显示该信息。
所述的无误使用压缩算法的分布式监控方法,其中,所述步骤一中,包括:所述数据采集模块还设置一标识,以表示最近一次信息是否发送成功;
获取收集该状态信息的第一时间并当最近一次信息发送失败时,对该状态信息进行处理形成数据报发送给所述数据汇聚模块;或
获取收集该状态信息的第一时间当最近一次信息发送成功时,对该状态信息进行压缩处理形成数据报发送给所述数据汇聚模块。
所述的无误使用压缩算法的分布式监控方法,其中,所述步骤三中,包括:
所述数据采集模块接收所述数据汇聚模块返回的报文,根据返回的报文获取第二时间,当该第一时间与该第二时间相同时,将该标识设置为成功,不相同时,将该标识设置为失败。
所述的无误使用压缩算法的分布式监控方法,其中,所述步骤二中,包括:
所述数据汇聚模块将来自所述数据采集模块的数据报与已接收到的数据报汇聚为一个数据报,解析来自所述数据采集模块的数据报得到一时间信息,将汇聚后的数据报周期性地发送给所述数据管理模块,并在发送成功后,将该时间信息返回给所述数据采集模块。
所述的无误使用压缩算法的分布式监控方法,其中,所述步骤四中,包括:
所述数据汇聚模块使用标准输入输出函数显示解析后的信息。
与现有技术相比,本发明的有益技术效果是:
本发明提供了一种无误使用压缩算法的分布式监控系统及其方法,该技术通过上层的数据汇聚模块告知底层的数据收集模块对应的数据报是否发送成功,数据收集模块通过该信息确定下次发送的信息是被压缩的还是完整的,从而使系统无误的使用压缩算法。
附图说明
图1是本发明的分布式监控系统的组织结构图。
具体实施方式
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
如图1所示,是本发明的分布式监控系统的组织结构图。该分布式监控系统是一个以层次结构组织的分布式监控系统。具体地,该系统包括:数据采集模块(agent)10、数据汇聚模块(aggregator)20、数据管理模块(management)30。
数据采集模块10,用于周期性收集被监控节点的状态信息,对收集的信息进行相应处理,得到数据报,将数据报发送给上层的数据汇聚模块20;接收来自数据汇聚模块20返回的报文,根据报文内容,设置下周期所收集信息的处理方法。
数据汇聚模块20,用于接收并汇聚来自数据采集模块10的信息,周期性的将汇聚的信息发送给上层的数据管理模块30,若发送成功,则返回给相应数据采集模块10一个报文。
数据管理模块30,用于接收来自数据汇聚模块20的信息,解析并向用户显示该信息。
进一步,数据采集模块10实现采集的过程包括以下步骤:
步骤A1:定义一个标识,标识最近一次信息是否发送成功,执行步骤A2;
步骤A2:周期性收集被监控节点的状态数据,执行步骤A3;
步骤A3:若在步骤A1所定义的标识为成功,则执行步骤A4,反之执行步骤A5;
步骤A4:对步骤A2收集的数据实施压缩算法,形成数据报(包含步骤A2开始收集的时间),执行步骤A6;
步骤A5:将步骤A2收集的所有数据,形成数据报,执行步骤A6;
步骤A6:将步骤A4或A5获得的数据报发送给上层的数据汇聚模块20;
步骤A7:接收来自数据汇聚模块20返回的数据报,执行步骤A8;
步骤A8:解析出步骤A7中包含的时间信息,执行步骤A9;
步骤A9:判断步骤A8获取的时间是否与步骤A2开始采集的时间相同,若相同,将步骤A1的标识设置为成功,反之设置为失败。
进一步,数据汇聚模块20实现汇聚的过程包括以下步骤:
步骤B1:接收来自数据采集模块10的数据报,执行步骤B2;
步骤B2:将步骤B1接收的数据报与已经接收到来自其它数据采集模块的数据报汇聚为一个数据报,执行步骤B3;
步骤B3:解析步骤B1接收的数据报中的时间信息,执行步骤B4;
步骤B4:周期性的将步骤B2汇聚的数据报发送给上层的数据管理模块30,若发送成功,执行步骤B5;
步骤B5:将步骤B3获得的时间信息返回给相应的数据采集模块10。
进一步,数据管理模块30执行以下步骤:
步骤C1:接收来自数据汇聚模块20的数据报,执行步骤C2;
步骤C2:解析步骤C1接收的数据报,执行步骤C3;
步骤C3:将步骤C2解析的数据在终端显示给用户。
现存系统之所以使用压缩算法时会发送错误的案例,是因为高层数据管理模块30是否成功接收数据报对底层的数据采集模块10是透明的。所以我们通过步骤B5告知底层的数据采集模块10对应的数据报是否发送成功,数据采集模块10通过该信息确定下次发送的信息是压缩的还是完整的(对应步骤A3和A9),从而使系统无误的使用压缩算法。
结合图1,进一步描述无错误的使用压缩算法的分布式监控系统的监控过程,该过程包括三个守护进程分别为:数据收集守护进程(Data CollectionDaemon,DCD)、数据聚集守护进程(Data Aggregation Daemon,DAD)和数据管理守护进程(Data Management Daemon DMD)。
数据收集守护进程DCD的具体步骤如下:
步骤A1:定义一个标识flag,并初始化为0(flag=1表示最近一次信息发送成功,flag=0表示最近一次信息发送失败),执行步骤A2;
步骤A2:周期性收集被监控节点的状态数据,记录采集时刻time1,执行步骤A3;
步骤A3:若flag=1,则执行步骤A4,反之执行步骤A5;
步骤A4:对步骤A2收集的数据实施压缩算法,形成数据报(包含time1)msg1,执行步骤A6;
步骤A5:将步骤A2收集的所有数据,形成数据报(包含time1)msg1,执行步骤A6;
步骤A6:将msg1发送给上层的DAD;
步骤A7:接收来自DAD返回的数据报msg2,执行步骤A8;
步骤A8:解析出msg2中包含的时间time2,执行步骤A9;
步骤A9:若time1与time2相等,则执行步骤A10,反之,执行步骤A11;
步骤A10:将flag设置为1;
步骤A11:将flag设置为0。
数据聚集守护进程DAD的具体步骤如下:
步骤B1:接收来自DCD的数据报msg1,执行步骤B2;
步骤B2:将msg1与已经接收到来自其它DCD的数据报汇聚为一个数据报msg2,执行步骤B3;
步骤B3:解析msg1中的时间信息time,并保存对应的连接conn,执行步骤B4;
该步骤中,此连接是指步骤B1中DCD向DAD发送信息所使用的连接,也就是说DAD和DCA每个周期进行通信的连接。保存此连接是为了步骤B5中将time返回给DCD用。
步骤B4:周期性的将msg2发送给上层的DMD,若发送成功,执行步骤B5;
步骤B5:将time写入conn。
数据管理守护进程DMD的具体步骤如下:
步骤C1:接收来自DAD的数据报msg,执行步骤C2;
步骤C2:解析步骤C1接收的msg,执行步骤C3;
步骤C3:使用标准输入输出函数将步骤C2解析的数据显示给用户。
本发明提供了一种无误使用压缩算法的分布式监控系统及其方法,该技术通过上层的数据汇聚模块告知底层的数据收集模块对应的数据报是否发送成功,数据收集模块通过该信息确定下次发送的信息是被压缩的还是完整的,从而使系统无误的使用压缩算法。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。