发明内容
本申请实施例提供了一种监控数据采集横向扩展方法、***、电子设备和存储介质,以至少解决相关技术中当监控数据或采集数据点特别多时,突破监控实例所在服务器的资源上限,导致监控***崩溃,以及单个采集点只由一个监控实例负责,可能会由于单个监控实例故障造成某段时间监控点的数据缺失的问题。
第一方面,本申请实施例提供了一种监控数据采集横向扩展方法,所述方法包括:在预设的监控实例初次采集数据完成后,根据每次采集点的数据量、采集间隔时间和数据保存时间,推算监控***需要的内存空间;若所述监控***可使用的内存空间小于所述需要的内存空间,则触发所述监控***的横向扩展;所述预设的监控实例成为主监控实例,并衍生出若干个从监控实例,其中,所述从监控实例的数量基于所述需要的内存空间与所述可使用的内存空间的比对计算得到,且每个监控实例预留有预设阈值的缓冲空间;各采集点通过所述主监控实例和所述若干个从监控实例采集数据。
在其中一些实施例中,在所述预设的监控实例成为主监控实例,并衍生出若干个从监控实例之后,所述方法还包括:所述主监控实例和所述若干个从监控实例组成监控集群;各所述从监控实例初始化完成后向作为领导的所述主监控实例汇报就绪状态,并持续汇报健康状态。
在其中一些实施例中,在所述主监控实例和所述若干个从监控实例组成监控集群之后,所述方法还包括:若所述主监控实例无法正常工作,则所述监控集群选举出新的领导,且衍生出一个新的从监控实例来代替该无法正常工作的主监控实例以继续采集数据。
在其中一些实施例中,在所述主监控实例和所述若干个从监控实例组成监控集群之后,所述方法还包括:当所述监控集群接收到数据查询请求时,由所述主监控实例响应,且所述主监控实例查询各所述从监控实例中的数据后进行汇总,反馈汇总的数据。
在其中一些实施例中,在所述预设的监控实例成为主监控实例,并衍生出若干个从监控实例之后,所述方法还包括:所述主监控实例根据原采集间隔时间和监控实例总数量计算每个监控实例的现采集间隔时间,并将所有采集点的信息下发给各所述从监控实例;当所述主监控实例首次采集数据时,将采集开始时间广播同步给各所述从监控实例,以控制各所述从监控实例的采集开始时间,每个监控实例按所述现采集间隔时间采集数据。
在其中一些实施例中,控制各所述从监控实例的采集开始时间包括:以所述主监控实例的采集开始时间为基准,对各所述从监控实例以依次递增的方式配置采集开始时间,其中,递增的大小等于所述原采集间隔时间。
在其中一些实施例中,根据每次采集点的数据量、采集间隔时间和数据保存时间,推算监控***需要的内存空间包括:
根据以下公式推算所述需要的内存空间:
S=M*T/t
其中,S表示所述需要的内存空间,M表示所述每次采集点的数据量,T表示所述数据保存时间,t表示所述采集间隔时间。
第二方面,本申请实施例提供一种监控数据采集横向扩展的***,所述***包括:
推算模块,用于在预设的监控实例初次采集数据完成后,根据每次采集点的数据量、采集间隔时间和数据保存时间,推算监控***需要的内存空间;
触发模块,用于若所述监控***可使用的内存空间小于所述需要的内存空间,则触发所述监控***的横向扩展;
衍生模块,用于所述预设的监控实例成为主监控实例,并衍生出若干个从监控实例,其中,所述从监控实例的数量基于所述需要的内存空间与所述可使用的内存空间的比对计算得到,且每个监控实例预留有预设阈值的缓冲空间;
采集模块,用于各采集点通过所述主监控实例和所述若干个从监控实例采集数据。
第三方面,本申请实施例提供一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项所述的方法。
第四方面,本申请实施例提供一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至7中任一项所述的方法。
相比于相关技术,通过本申请实施例的方法,实现了监控***自动扩容,当采集点数据激增或新增采集点时,能够避免监控实例资源占用超过服务器限制资源上限;并且,由于各采集点通过主监控实例和若干个从监控实例采集数据,实现了单个采集点由多个监控实例负责,能够防止因单个监控实例故障导致数据缺失。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
图1是根据相关技术的第一种监控数据采集横向扩展方法中监控实例与采集点的关系示意图,如图1所示,部署于服务器中的监控实例对采集点A、采集点B、采集点C每隔5s采集一次数据,当新增采集点时,也是由该监控实例对新增的采集点每隔5s采集一次数据,采用该方法的缺陷是,若监控数据或采集数据点激增时,监控实例会占用大量资源,甚至突破监控实例所在服务器的资源上限,从而导致监控***崩溃。
图2是根据相关技术的第二种监控数据采集横向扩展方法中监控实例与采集点的关系示意图,如图2所示,部署于服务器中的监控实例A对采集点A、采集点B、采集点C每隔5s采集一次数据,当新增采集点时,增加新的监控实例B去采集新增的采集点,采用该方法的缺陷是,因单个采集点只由一个监控实例负责,可能会因单个监控实例故障造成某段时间某个监控点的数据缺失。
另外,对于单个监控实例来说,不断的增加采集点,会大大增加单个监控实例的采集压力。
因此,本申请实施例提出一种监控数据采集横向扩展方法,面对新增采集点或采集数据量大的时候,监控***可以合理分配资源,并保证监控实例的高可用。需要说明的是,本申请实施例的方案在采集数据时,使用固定的时间频率获取采集点数据,并按照时间保存在本地存储中。
图3是根据本申请实施例的一种监控数据采集横向扩展方法的流程图,如图3所示,该方法包括以下步骤:
S101:在预设的监控实例初次采集数据完成后,根据每次采集点的数据量、采集间隔时间和数据保存时间,推算监控***需要的内存空间;
S102:若监控***可使用的内存空间小于需要的内存空间,则触发监控***的横向扩展;
S103:预设的监控实例成为主监控实例,并衍生出若干个从监控实例,其中,该从监控实例的数量基于需要的内存空间与可使用的内存空间的比对计算得到,且每个监控实例预留有预设阈值的缓冲空间;
S104:各采集点通过主监控实例和若干个从监控实例采集数据。
通过上述方法,实现了监控***自动扩容,当采集点数据激增或新增采集点时,能够避免监控实例资源占用超过服务器限制资源上限;并且,由于各采集点通过主监控实例和若干个从监控实例采集数据,实现了单个采集点由多个监控实例(包括主监控实例和若干个从监控实例)负责,能够防止因单个监控实例故障导致数据缺失。
作为一个示例,上述步骤S101中,在开始第一次采集完成后,监控***会根据每次采集点的数据量、采集间隔时间和数据保存时间来推算出监控***需要多少内存空间,其公式如下:
S=M*T/t
其中,S表示需要的内存空间,M表示每次采集点的数据量,T表示数据保存时间,t表示采集间隔时间。
若监控***可使用的内存空间大于需要的内存空间,则不需要扩展,否则就会触发监控***的横向扩展。
作为一个示例,上述预设的监控实例是指最初的监控实例,触发横向扩展后,该最初的监控实例会默认成为主监控实例,负责衍生若干个从监控实例。例如,主监控实例根据需要的内存空间S与可使用的内存空间S’的比对计算需要衍生出几个从监控实例,根据S=S’*N*(100%-X),转换得到N=S/[S’*(100%-X)],其中N为监控实例的总数量,所以需要衍生出(N-1)个从监控实例,得出的实例数向上取整,且X为每个监控实例预留的缓冲空间,比如X取25%。
因此,主监控实例和(N-1)个从监控实例组成监控集群,主监控实例即为集群的领导(leader),其他监控实例初始化完成后向主监控实例汇报就绪状态,并持续汇报健康状态。
进一步的,主监控实例根据原采集间隔时间和监控实例总数量计算每个监控实例的现采集间隔时间,并将所有采集点的信息下发给各从监控实例;当主监控实例首次采集数据时,将采集开始时间广播同步给各从监控实例,以控制各从监控实例的采集开始时间,每个监控实例按现采集间隔时间采集数据。
上述的“控制各从监控实例的采集开始时间”包括:以主监控实例的采集开始时间为基准,对各从监控实例以依次递增的方式配置采集开始时间,其中,递增的大小等于原采集间隔时间。
举例而言,主监控实例计算出集群中每个监控实例的采集间隔时间,具体公式为T2=T1*N,其中T2为现采集间隔时间,T1为原采集间隔时间,N为监控实例的总数量。主监控实例将计算好的现采集间隔时间T2,以及所有采集点的信息依次下发到各个从监控实例上,每个从监控实例的时间都需要定期和主监控实例同步,当所有信息配置好后,主监控实例会最先开始采集,开始第一次采集时会把采集开始时间广播同步给各从监控实例,以此来控制从监控实例的采集开始时间。具体的,主监控实例可以根据各从监控实例汇报就绪状态的先后顺序配置采集开始时间,使从监控实例的现采集开始时间按照原采集间隔时间T1递增。
比如,最初的监控实例为一个,原采集间隔时间T1为5s,采集开始时间为0:00,所以会采集0:00,0:05,0:10,0:15,0:20……这些时间点的数据。在横向扩展后,该最初的监控实例默认为主监控实例,并衍生出一个从监控实例,此时N=2,那么根据T2=T1*N计算现采集间隔时间T2为10s,因此,主监控实例从0:00开始,每隔10s采集一次数据,所以会采集0:00,0:10,0:20……这些时间点的数据;该从监控实例的现采集间隔时间同样为10s,但是采集开始时间为0:05,所以会采集0:05,0:15,0:25……这些时间点的数据,因此,通过该主监控实例和从监控实例能够采集到0:00,0:05,0:10,0:15,0:20……这些时间点的数据,不仅能够保证采集的数据完整,而且,每个监控实例的采集间隔时间变大,降低了单个监控实例的数据采集压力。
进一步的,若主监控实例无法正常工作,则监控集群选举出新的领导来接替此前主监控实例的管理工作,并衍生出一个新的从监控实例来代替该无法正常工作的主监控实例以继续采集数据。
进一步的,当监控集群接收到数据查询请求时,由主监控实例响应,且主监控实例查询各从监控实例中的数据后进行汇总,反馈汇总的数据,由于每个监控实例采集的时间点都不相同,所以相对于未扩展前数据不会有降准以及缺失。
因此,本申请实施例的监控集群包含多个监控实例,各监控实例按照不同的采集开始时间和相同的采集间隔时间进行数据采集,保证与横向扩展前相比没有数据缺失,且避免了因单个监控实例故障导致数据数据缺失。
图4是根据本申请实施例的一种监控数据采集横向扩展方法中监控实例与采集点的关系示意图,如图4所示,部署于服务器A的监控实例A和部署于服务器B的监控实例B均对采集点A、采集点B、采集点C采集数据,其中,监控实例A的采集间隔时间为10s,采集开始时间为0:00;监控实例B的采集间隔时间为10s,采集开始时间为0:05,所以每个采集点由监控实例A和监控实例B采集数据,当新增采集点时,也是由监控实例A和监控实例B采集数据,因此,即使当监控实例A和监控实例B中的一个发生故障,也不会导致某一段时间某些被监控点的监控数据为空,需要说明的是,采集间隔时间相较于故障发生到故障修复的时间段来说是非常小的,而多个监控实例同时发生故障的概率也是非常小的。
综上,本申请实施例的监控数据采集横向扩展方法具有以下优点:
(1)将一个监控实例的任务分散到多个监控实例,并制定不同的采集开始时间,增加采集间隔时间,极大的减缓了单个监控实例的数据采集压力;
(2)将一个监控实例分散为多个监控实例,查询数据的时候可以聚合多个监控实例的数据,并没有因为增加采集间隔时间而造成数据缺失;
(3)即便其中一个监控实例不能工作,还有另外其他监控实例可以覆盖到所有采集点,不会造成某一段时间某些被监控点的监控数据为空;
(4)提高了监控实例部署的灵活性,不再受制于服务器的资源规格,可以灵活部署到多个服务器上,且监控实例的资源使用上限下降;
(5)企业可以选择多个低规格服务器部署,而不是选用单个很高服务器规格,灵活选择部署方案,为企业节省成本并保证可靠性;
(6)兼顾了高可用和减缓单个监控实例采集压力的优点。
本申请实施例还提供一种监控数据采集横向扩展的***,图5是根据本申请实施例的一种监控数据采集横向扩展的***的内部结构示意图,如图5所示,该***包括:
推算模块1,用于在预设的监控实例初次采集数据完成后,根据每次采集点的数据量、采集间隔时间和数据保存时间,推算监控***需要的内存空间;
触发模块2,用于若监控***可使用的内存空间小于需要的内存空间,则触发监控***的横向扩展;
衍生模块3,用于预设的监控实例成为主监控实例,并衍生出若干个从监控实例,其中,从监控实例的数量基于需要的内存空间与可使用的内存空间的比对计算得到,且每个监控实例预留有预设阈值的缓冲空间;
采集模块4,用于各采集点通过主监控实例和若干个从监控实例采集数据。
进一步的,在衍生模块3中,主监控实例和若干个从监控实例组成监控集群,且各从监控实例初始化完成后向作为领导的主监控实例汇报就绪状态,并持续汇报健康状态。若主监控实例无法正常工作,则监控集群选举出新的领导,且衍生出一个新的从监控实例来代替该无法正常工作的主监控实例以继续采集数据。当监控集群接收到数据查询请求时,由主监控实例响应,且主监控实例查询各从监控实例中的数据后进行汇总,反馈汇总的数据。
进一步的,主监控实例根据原采集间隔时间和监控实例总数量计算每个监控实例的现采集间隔时间,并将所有采集点的信息下发配置给各从监控实例;当主监控实例首次采集数据时,将采集开始时间广播同步给各从监控实例,以控制各从监控实例的采集开始时间,每个监控实例按现采集间隔时间采集数据。
上述的“控制各从监控实例的采集开始时间”包括:以主监控实例的采集开始时间为基准,对各从监控实例以依次递增的方式配置采集开始时间,其中,递增的大小等于原采集间隔时间。
在本申请实施例的监控数据采集横向扩展的***中,可以将一个监控实例横向扩展为N(N>1)个;将采集间隔时间增大到原来的N倍,减小了单个监控实例的采集压力;为每个监控实例配置不同的采集开始时间,从监控实例的采集开始时间以主监控实例的采集开始时间为基准,各从监控实例的采集开始时间依次增加,增加的大小为原采集时间间隔;横向扩展出来的监控实例可以部署在单个服务器,也可以灵活的部署在多个服务器上,而不必受到服务器规格上限的约束;获取数据时,只需要将多个监控实例中的数据汇总即可,因为各监控实例的采集开始时间不一样,而采集间隔时间一样,所以与扩展前的单个监控实例的数据采集频率是一样的;既能保证***的高可用以及稳定性,也能保证数据的完整性。
所以,根据上述监控数据采集横向扩展的***,实现了监控***动态扩容以及动态配置,当采集点数据激增或新增采集点时,能够避免监控实例资源占用超过部署服务器限制资源上限;能够避免单个监控实例故障导致采集点的数据缺失;能够减缓单个监控实例的采集压力。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
另外,结合上述实施例中的监控数据采集横向扩展方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种监控数据采集横向扩展方法。
本申请的一个实施例中还提供了一种电子设备,该电子设备可以是终端。该电子设备包括通过***总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种监控数据采集横向扩展方法。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,图6是根据本申请实施例的电子设备的内部结构示意图,如图6所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图6所示。该电子设备包括通过内部总线连接的处理器、网络接口、内存储器和非易失性存储器,其中,该非易失性存储器存储有操作***、计算机程序和数据库。处理器用于提供计算和控制能力,网络接口用于与外部的终端通过网络连接通信,内存储器用于为操作***和计算机程序的运行提供环境,计算机程序被处理器执行时以实现一种监控数据采集横向扩展方法,数据库用于存储数据。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。