一种监控数据的收集方法、装置和系统与流程

文档序号:11524126阅读:165来源:国知局
一种监控数据的收集方法、装置和系统与流程

本发明涉及应用系统监控技术领域,特别涉及一种监控数据的收集方法、装置和系统。



背景技术:

随着计算机在各个领域中的应用越来越深入,docker容器技术在生产环境应用也越来越广泛。容器技术是利用linux操作系统的特性进行的资源隔离,这带来资源更充分和有效利用的同时,也给容器的管理和运维带了新的挑战。docker容器的监控就是其中一个方面。任何一个应用系统监控都是必不可少的一个环节。目前docker容器的监控通常是在容器中跑一个监控客户端,定期收集监控数据汇报给监控服务端。

在现有技术中,是通过从每一个docker容器跑一个监控客户端,即一个监控客户端对应一个docker容器。

在实现本发明的过程中,发明人发现至少存在如下问题:

1.一个docker容器都需配备一个监控客户端来收集监控数据,会造成计算资源浪费和增加网络流量;

2.获取宿主机的监控数据也需要额外的在每台宿主机上部署监控客户端,造成资源浪费;

3.由于每个docker容器都需配备一个监控客户端,使得多个监控客户端都要同时工作,收集监控数据,再同时把收集的监控数据发送至监控服务端,监控服务端需要同时收集每个监控客户端发送的监控数据,使得操作复杂,效率低。



技术实现要素:

本发明的目的是只需在宿主机上部署一个监控客户端的情况下,对宿主机的监控数据和docker容器的监控数据进行收集,实现部署方便、节约计算资源,且使得收集的监控数据的效率更高。

根据本发明实施例的一个方面,提供了一种监控数据的收集方法,该方法包括:接收配置文件;读取配置文件,得到宿主机收集指令和/或docker容器收集指令;基于宿主机收集指令,获取宿主机的监控数据,并形成宿主机监控数据包;和/或基于docker容器收集指令,获取宿主机上多个docker容器的监控数据;基于每个docker容器,形成包括docker容器的监控数据的docker容器监控数据包。

进一步地,基于每个docker容器,形成包括docker容器的监控数据的docker容器监控数据包的步骤包括:获取docker容器的标识信息;将docker容器的标识信息与docker容器的监控数据绑定,得到docker容器监控数据包。

进一步地,宿主机的监控数据包括:宿主机运行监控数据和宿主机挂载文件监控数据。

进一步地,该收集方法还包括:读取配置文件,得到收集间隔时间;每间隔收集间隔时间,基于宿主机收集指令,获取宿主机的监控数据,并形成宿主机监控数据包;和/或每间隔收集间隔时间,基于docker容器收集指令,获取宿主机上多个docker容器的监控数据。

进一步地,获取docker容器的监控数据的步骤包括:获取cgroup中每个docker容器的运行数据;解析运行数据,得到docker容器的监控数据。

根据本发明实施例的另一个方面,还提供了一种监控数据的收集装置,该收集装置包括:管理指令接收模块,用于接收配置文件;配置管理模块,用于读取管理指令接收模块接收到的配置文件,得到宿主机收集指令和/或docker容器收集指令;宿主机监控数据收集模块,用于根据宿主机收集指令收集宿主机上的监控数据,得到宿主机监控数据包;docker容器监控数据收集模块,用于根据docker容器收集指令收集宿主机上多个docker容器的监控数据,并基于每个docker容器,形成包括docker容器的监控数据的docker容器监控数据包。

进一步地,docker容器监控数据收集模块包括:标识信息获取单元,用于获取docker容器的标识信息;docker容器监控数据收集单元,用于收集所述docker容器的监控数据;绑定单元,用于通过将docker容器的标识信息与docker容器的监控数据绑定,得到docker容器监控数据包。

进一步地,配置管理模块,还用于读取配置文件,得到收集间隔时间;宿主机监控数据收集模块,还用于每间隔收集间隔时间,根据宿主机收集指令收集宿主机上的监控数据,并形成宿主机监控数据包;docker容器监控数据收集模块,还用于每间隔收集间隔时间,根据docker容器收集指令收集宿主机上多个docker容器的监控数据,并基于每个docker容器,形成包括docker容器的监控数据的docker容器监控数据包。

进一步地,docker容器监控数据收集单元包括:解析子单元,用于解析cgroup中每个docker容器的运行数据,得到docker容器的监控数据。

根据本发明实施例的又一方面,还提供了一种监控数据收集系统,该系统包括上述的收集装置,还包括:包括监控服务端;监控服务端,用于接收收集装置发送的宿主机监控数据包和/或docker容器监控数据包。

本发明实施例的有益效果在于,因为采用了根据宿主机收集指令收集宿主机的监控数据形成宿主机监控数据包,和/或根据docker容器收集指令获取多个docker容器的监控数据,基于每个docker容器形成包括docker容器的监控数据的docker容器监控数据包的技术手段,所以克服了需要在宿主机上针对每个docker容器都部署一个监控客户端的技术问题,进而达到节约计算资源,高效收集监控数据的技术效果。

附图说明

图1是本发明第一实施例提供的监控数据的收集方法的流程图;

图2是本发明第一实施例提供的形成docker容器的监控数据的docker容器监控数据包的步骤流程图;

图3是本发明第一实施例提供的宿主机的监控数据的示意图;

图4是本发明第一实施例提供的根据收集间隔时间收集监控数据的方法流程图;

图5是本发明第一实施例提供的获取docker容器监控数据的方法流程图;

图6是本发明第二实施例提供的一种监控数据的收集装置的结构示意图;

图7是本发明第二实施例提供的docker容器监控数据收集模块的结构示意图;

图8是本发明第二实施例提供的docker容器监控数据收集单元的结构示意图;

图9是本发明第三实施例提供的一种监控数据的收集系统的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。

请参阅图1,图1是本发明第一实施例提供的监控数据的收集方法的流程图。

如图1所示,在本实施例中,监控数据的收集方法包括:

步骤s100:接收配置文件;步骤s200:读取配置文件,得到宿主机收集指令和/或docker容器收集指令;步骤s300:基于宿主机收集指令,获取宿主机的监控数据,并形成宿主机监控数据包;和/或基于docker容器收集指令,获取宿主机上多个docker容器的监控数据;步骤s400:基于每个docker容器,形成包括docker容器的监控数据的docker容器监控数据包。

需要说明的是,docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iphone的app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。

在本实施例中,通过步骤s100:接收配置文件,配置文件中包括宿主机收集指令和/或docker容器收集指令,即确定需要收集的数据,或者需要启用哪些插件等功能。步骤s200:通过读取配置文件,获取相应的数据,或者需要启用的功能,在本实施例中,通过读取配置文件获取配置文件中的宿主机收集指令和/或docker容器收集指令。步骤s300:一方面,通过读取到的宿主机收集指令,获取宿主机的监控数据,并将获取到的宿主机的监控数据形成宿主机监控数据包;另一方面,一个宿主机中可以包含多个docker容器,其中每个docker容器都会有相应的监控数据,在此步骤中,例如,一个宿主机中有50个docker容器,则对这50个docker容器中的每一个docker容器的监控数据进行获取,即通过读取到的docker容器收集指令,获取宿主机上多个docker容器的监控数据。其中,获取宿主机的监控数据和获取docker容器的监控数据可以同时进行,也可以只单独获取宿主机的监控数据,也可以只单独获取dockr容器的监控数据。步骤s400:由于宿主机可能包括多个docker,所以,基于每一个docker容器,都会形成一个包括docker容器的监控数据的docker容器监控数据包。

请参阅图2,图2是本发明第一实施例提供的形成监控数据的docker容器监控数据包的步骤流程图。

如图2所示,在本实施例中,形成docker容器的监控数据的docker容器监控数据包包括:步骤s410:获取docker容器的标识信息;步骤s420:将docker容器的标识信息与监控数据绑定,得到docker容器监控数据包。

在本实施例中,在步骤s410中,标识信息可以是宿主机上所有的docker容器的id号,其中,一个docker容器对应有一个docker容器id号。在步骤s420中,通过将docker容器的标识信息,即将宿主机上所有的docker容器的iddocker容器的监控数据绑定,从而得到docker容器监控数据包。

请参阅图3,图3是本发明第一实施例提供的宿主机的监控数据的示意图。

如图3所示,在本实施例中,宿主机的监控数据包括:宿主机运行监控数据和宿主机挂载文件监控数据。

在本实施例中,一方面,由于宿主机操作系统在运行过程中,数据会不断的更新;另一方面,宿主机挂载文件中的数据也在不断的更新,所以,监控数据也在发生变化。宿主机的监控数据包括宿主机运行监控数据,即宿主机操作系统运行过程中不断更新的数据和宿主机挂载文件监控数据,即宿主机挂载文件中不断更新的数据。

请参阅图4,图4是本发明第一实施例提供的根据收集间隔时间收集监控数据的方法流程图。

如图4所示,在本实施例中,根据收集间隔时间收集监控数据的方法包括:步骤s210:读取配置文件,得到收集间隔时间;步骤s210:每间隔收集间隔时间,基于宿主机收集指令,获取宿主机的监控数据,并形成宿主机监控数据包;和/或每间隔收集间隔时间,基于docker容器收集指令,获取宿主机上多个docker容器的监控数据。

在本实施例中,在步骤s210中,通过读取配置文件,得到收集间隔时间,收集间隔时间可以根据客户的需求进行设定。在步骤s210中,如果将收集间隔时间为1分钟,则,每间隔1分钟的时间,一方面,基于宿主机收集指令,获取宿主机的监控数据,形成宿主机监控数据包;另一方面,基于docker容器收集指令,获取宿主机上多个docker容器的监控数据。其中,可以是获取宿主机监控数据形成宿主机监控数据包的同时获取宿主机上多个docker容器的监控数据,也可以是单独获取宿主机监控数据形成宿主机监控数据包,或者单独获取宿主机上多个docker容器的监控数据。

请参阅图5,图5是本发明第一实施例提供的获取docker容器监控数据的方法流程图。

如图5所示,在本实施例中,获取docker容器监控数据的方法包括:步骤s310:获取cgroup中每个docker容器的运行数据;步骤s310:解析运行数据,得到docker容器监控数据。

在本实施例中,在步骤s310中,需要说明的是,cgroup是提供限制、记录、隔离进程组所使用的物理资源的机制。cgroup中包括多个docker容器,解析cgroup中每个docker容器的运行数据。解析运行数据后,得到相应的docker容器监控数据。

请参阅图6,图6是本发明第二实施例提供的一种监控数据的收集装置的结构示意图。

如图6所示,在本实施例中,监控数据的收集装置包括:管理指令接收模块10,用于接收配置文件;配置管理模块20,用于读取管理指令接收模块10接收到的配置文件,得到宿主机收集指令和/或docker容器收集指令;宿主机监控数据收集模块30,用于根据宿主机收集指令收集宿主机上的监控数据,得到宿主机监控数据包;docker容器监控数据收集模块40,用于根据docker容器收集指令收集宿主机上多个docker容器的监控数据,并基于每个docker容器,形成包括docker容器的监控数据的docker容器监控数据包。

在本实施例中,管理指令接收模块10用于接收配置文件,配置文件中包含配置信息及收集指令。配置管理模块20通过读取配置文件从而获知收集指令,收集指令包括宿主机收集指令和/或docker容器收集指令。当配置管理模块20得到宿主机收集指令后,宿主机监控数据收集模块30根据宿主机收集指令进行收集宿主机上的监控数据,得到宿主机监控数据包。当配置管理模块20得到docker容器收集指令后,docker容器监控数据收集模块40根据docker容器收集指令收集宿主机上多个docker容器的监控数据,例如,当docker容器的数量为40个时,则docker容器监控数据收集模块40根据docker容器收集指令收集宿主机上40个docker容器的监控数据,并基于40个docker容器,形成包括docker容器的监控数据的docker容器监控数据包。

请参阅图7,图7是本发明第二实施例提供的docker容器监控数据收集模块的结构示意图。

如图7所示,监控数据的收集装置中的docker容器监控数据收集模块40包括:标识信息获取单元400,用于获取docker容器的标识信息;docker容器监控数据收集单元401,用于收集docker容器的监控数据;绑定单元402,用于通过将docker容器的标识信息与docker容器的监控数据绑定,得到docker容器监控数据包。

在本实施例中,标识信息获取单元401用于获取docker容器的标识信息。docker容器的标识信息包括宿主机上所有的docker容器的id号,其中,一个宿主机上的docker容器对应一个docker容器id号,如果一个宿主机上有60个docker容器,则docker容器id号的数量也为60个。在获取到docker容器的标识信息后,通过docker容器监控数据收集单元401,对docker容器的监控数据进行收集,通过绑定单元402将docker容器的标识信息与docker容器的监控数据绑定,即通过绑定单元402将宿主机上所有的docker容器的id号docker容器的监控数据绑定,从而得到docker容器监控数据包。

更具体地,配置管理模块20,还用于读取配置文件,得到收集间隔时间;宿主机监控数据收集模块30,还用于每间隔收集间隔时间,根据宿主机收集指令收集宿主机上的监控数据,并形成宿主机监控数据包;docker容器监控数据收集模块40,还用于每间隔收集间隔时间,根据docker容器收集指令收集宿主机上多个docker容器的监控数据,并基于每个docker容器,形成包括docker容器的监控数据的docker容器监控数据包。

在本实施例中,配置管理模块20在读取配置文件后,获取收集间隔时间。当配置管理模块20获得的收集间隔时间为2分钟时。即,一方面,宿主机监控数据收集模块30根据宿主机收集指令,每隔2分钟的时间间隔收集宿主机上的监控数据,并将收集到的监控数据形成宿主机监控数据包;另一方面,docker容器监控数据收集模块40根据docker容器收集指令,每隔2分钟的时间间隔收集宿主机上多个docker容器的监控数据,如果宿主机上的docker容器的数量为45个,则收集45个docker容器的监控数据,并基于45个docker容器中的每一个docker容器,形成包括docker容器的监控数据的docker容器监控数据包。

请参阅图8,图8是本发明第二实施例提供的docker容器监控数据收集单元的结构示意图。

如图8所示,docker容器监控数据收集单元401包括::解析子单元4010,用于解析cgroup中每个docker容器的运行数据,得到docker容器监控数据。

在本实施例中,需要说明的是,cgroup是提供限制、记录、隔离进程组所使用的物理资源的机制。cgroup中包括多个docker容器,通过解析单元430对cgroup中每个docker容器的运行数据进行解析。解析单元430解析运行数据后,得到相应的docker容器监控数据。

请参阅图9,图9是本发明第三实施例提供的一种监控数据的收集系统的结构示意图。

如图9所示,在本实施例中,监控数据的收集系统包括上述收集装置,还包括监控服务端;监控服务端用于接收收集装置发送的宿主机监控数据包和/或docker容器监控数据包。

在本实施例中,监控数据的收集系统包括上述收集装置,此处不再进行赘述,还包括监控服务端。监控数据数据收集装置在将宿主机监控数据包和/或docker容器监控数据包收集后,发送至监控服务端。

本发明通过上述实施例公开的监控数据的收集方法、监控数据的收集装置和监控数据的收集系统,实现了只需在宿主机上部署一个监控客户端的情况下,对宿主机的监控数据和docker容器的监控数据进行收集,实现部署方便、节约计算资源,且使得收集的监控数据的效率更高。

本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置、系统中的模块、单元可以根据实际需要进行合并、划分和删减。

应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1