一种容器的监控方法及装置与流程

文档序号:12271021阅读:174来源:国知局
一种容器的监控方法及装置与流程

本发明实施例涉及计算机技术领域,尤其涉及一种容器的监控方法及装置。



背景技术:

Linux容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。它可以在单台服务器中虚拟出多个相互隔离的执行环境,在容器内部执行的进程,被容器技术隔离在容器内部,对进程而言就如同运行在一台单独的服务器上,而无法感知该服务器上其他容器内或者服务器上的服务。

随着Linux容器技术的普及,越来越多的服务被以容器的形式部署到服务器并提供服务,部署在容器内部的服务,需要通过集中监控获取其资源使用情况以及服务运行情况。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:在容器内部运行监控程序,既占用容器内部分配的资源,又由于在每一个容器内都运行而占用宿主机的资源,同时,由于监控程序分布在每一个容器内部,造成了监控程序的升级和维护困难。



技术实现要素:

为了克服现有技术中相关产品的不足,本发明实施例提出一种容器的监控方法及装置,仅需要在容器宿主机上安装并执行一次监控程序,即可对该服务器上的所有容器进行监控,解决由于监控程序分布在每一个容器内部而使其升级和维护困难的缺点。

本发明实施例解决其技术问题所采用的技术方案是:

本发明实施例所提供的一种容器的监控方法,包括以下步骤:

在服务器上获取容器列表;

按照预设的时间间隔定期获取容器列表中所有容器的属性信息。

作为本发明实施例的进一步改进,所述在服务器上获取容器列表具体为:

发送容器列表获取指令;在服务器响应所述容器列表获取指令后,接收服务器返回的容器列表。

作为本发明实施例的进一步改进,所述容器列表包括容器的唯一容器标识以及容器运行状态信息。

作为本发明实施例的进一步改进,所述服务器在容器列表内的信息发生变更时,返回新的容器列表。

作为本发明实施例的进一步改进,所述按照预设的时间间隔定期获取容器列表中所有容器的属性信息具体为:

设定容器列表中每个容器的反馈间隔;对所有容器的运行进行记时;读取达到反馈间隔时间的容器的属性信息。

本发明实施例所提供的一种容器的监控装置,包括:获取模块和监控模块;

所述获取模块用于在服务器上获取容器列表;

所述监控模块用于按照预设的时间间隔定期获取容器列表中所有容器的属性信息。

作为本发明实施例的进一步改进,所述获取模块包括发送单元和接收单元;

所述发送单元用于发送容器列表获取指令;

所述接收单元用于在服务器响应所述容器列表获取指令后,接收服务器返回的容器列表。

作为本发明实施例的进一步改进,所述容器列表包括容器的唯一容器标识以及容器运行状态信息。

作为本发明实施例的进一步改进,所述服务器在容器列表内的信息发生变更时,返回新的容器列表。

作为本发明实施例的进一步改进,所述监控模块包括设定单元、记时单元以及读取单元;

所述设定单元用于设定容器列表中每个容器的反馈间隔;

所述记时单元用于对所有容器的运行进行记时;

所述读取单元用于读取达到反馈间隔时间的容器的属性信息。

与现有技术相比,本发明有以下优点:

1、只需要运行一个监控程序即可对服务器上所有容器进行监控,而不必每一个容器分别配置一个监控程序,节约了服务器的资源。

2、只运行一个监控程序,降低了监控程序的复杂程度,便于进行升级和维护。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例所述容器的监控方法第一实施例的流程图;

图2为本发明实施例所述容器的监控方法第二实施例的流程图;

图3为本发明实施例所述容器的监控装置第一实施例的原理结构图;

图4为本发明实施例所述容器的监控装置第二实施例的原理结构图。

具体实施方式

为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的较佳实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

实施例一

参阅图1所示,为本发明所述容器的监控方法的第一实施例,包括以下步骤:

S101:在服务器上获取容器列表;

所述容器是一种LINUX内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,对服务运行时的环境进行隔离,被隔离出来的运行环境就称为容器;所述承载容器运行的外部环境的宿主机即服务器,所述服务器上会同时运行有多个容器,用于同时执行多个服务进程;在本发明实施例中,在所述服务器启动运行后,向所述服务器发送容器列表获取指令,在服务器响应所述容器列表获取指令后,接收服务器返回的容器列表,所述容器列表包括容器的唯一容器标识以及容器运行状态信息。

S102:按照预设的时间间隔定期获取容器列表中所有容器的属性信息;

在本发明实施例中,通过设定容器列表中每个容器的反馈间隔,同时对所有容器的运行进行记时,在容器达到反馈间隔时间后获取对应容器的属性信息;本发明实施例可以对容器列表中每个处于活动状态的容器单独设置反馈间隔,也可以对所有活动状态的容器设置统一的反馈间隔。

所述读取容器属性信息的过程具体包括以下几种方式:

在本发明实施例中,所述LINUX操作系统的内核为每个容器暴露的内核数据结构,所述内核数据结构通过伪文件系统将其一部分数据结构暴露在内核外,所述伪文件系统包括proc文件系统、sys(SYSTEM,系统复制命令)文件系统和cgroup(control groups,控制组)文件系统等;在达到反馈间隔时间后,通过所述伪文件系统直接读取暴露在内核外的部分的数据,获取对应容器的属性信息,所述容器的属性信息包括对应容器的内存资源使用情况、磁盘使用情况和网络IO((Input/Output,输入/输出)使用情况等。

在本发明实施例中,所述宿主机上运行的所有容器都通过自身的根文件系统来独立运行,实现容器之间相互隔离,彼此不能访问;所述容器内部执行的程序会将一些容器自身特定的信息输出到自身的根文件系统内;在达到反馈间隔时间后,通过读取对应容器内部的根文件系统,获取容器内执行程序的执行情况,并进行日志收集,健康诊断等功能。

在本发明实施例中,所述LINUX操作系统为所有运行的容器提供接口,在达到反馈间隔时间后,通过调用该接口,临时进入对应容器的命名空间;在所述容器内部的执行程序会按照任务要求进行对容器执行操作,包括停止容器内部的进程,修改容器内部的文件等;通过操作该容器,所述执行程序可以获取任务执行的结果或者容器内部的属性信息,在所述容器内部环境可以读取到容器内部的属性信息以及执行程序的执行情况,并在获取了对应的容器属性信息后离开所述容器的内部环境;通过LINUX操作系统提供的接口,在其他容器达到反馈间隔时间后,切换并临时进入对应容器的命名空间,通过读取对应容器的属性信息实现对容器的监控。

在本发明实施例中,所述容器的监控方法通过在服务器上获取容器列表,按照预设的时间间隔定期获取容器列表中所有容器的属性信息;通过该过程,可以实现运行一个监控程序即可对服务器上所有容器进行监控,而不必每一个容器分别配置一个监控程序,只需要对每个容器设置对应的反馈间隔,在达到反馈间隔后,获取对应容器的属性信息即可对该容器的运行实现监控,既节约了服务器的资源又降低了监控程序的复杂程度,便于进行升级和维护。

实施例二

参阅图2所示,为本发明所述容器的监控方法的第二实施例,包括以下步骤:

S201:发送容器列表获取指令;

所述容器是一种LINUX内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,对服务运行时的环境进行隔离,被隔离出来的运行环境就称为容器;所述承载容器运行的外部环境的宿主机即服务器,所述服务器上会同时运行有多个容器,用于同时执行多个服务进程;在本发明实施例中,在所述服务器启动运行后,向所述服务器发送容器列表获取指令。

S202:在服务器响应所述容器列表获取指令后,接收服务器返回的容器列表;

在本发明实施例中,所述容器列表包括容器的唯一容器标识以及容器运行状态信息,所述容器标识是标示容器的唯一标识,用于在宿主机中区分各个容器的身份,所述容器运行状态信息是指容器当前的运行状态,包括活动状态以及停止状态;所述容器的唯一容器标识与所述容器运行状态信息一一对应;所述服务器响应所述容器列表获取指令,返回容器列表,在本发明实施例中,所述服务器返回的容器列表是服务器上所有容器的容器标识以及其对应的容器运行状态信息经整理后制成的列表,当有容器的运行状态发生了变化或者有新的容器产生时,所述容器列表内的信息也会实时变更;在本发明实施例中,所述服务器在容器列表内的信息发生变更时,返回新的容器列表。

S203:设定容器列表中每个容器的反馈间隔;

在本发明实施例中,仅对所述容器列表中处于活动状态的容器进行反馈间隔的设定,输出设定结果;用户可以对容器列表中每个处于活动状态的容器单独设置反馈间隔,根据容器内部运行的进程和实际需要进行设置;在其他实施方式中,为了便于管理,可以对所有活动状态的容器设置统一的反馈间隔;所述反馈间隔是指获取一次对应容器的属性信息所间隔的时间;所述反馈间隔的时间根据实际情况进行设置,如1秒,1毫秒等,当设定的反馈间隔足够小时,在实际使用过程中可以认为是实时反馈。

S204:对所有容器的运行进行记时;

在本发明实施例中,对所述容器列表中所有容器进行时间统计,所述时间为容器持续运行的时间,输出记时结果,当所述容器运行状态信息为停止状态时,所述时间统计显示为空。

S205:读取达到反馈间隔时间的容器的属性信息;

在本发明实施例中,对设定结果和记时结果进行对比,并对达到反馈间隔时间的容器的属性信息进行读取和监控。

所述读取容器属性信息的过程具体包括以下几种方式:

在本发明实施例中,所述LINUX操作系统的内核为每个容器暴露的内核数据结构,所述内核数据结构通过伪文件系统将其一部分数据结构暴露在内核外,所述伪文件系统包括proc文件系统、sys文件系统和cgroup文件系统等;在达到反馈间隔时间后,通过所述伪文件系统直接读取暴露在内核外的部分的数据,获取对应容器的属性信息,所述容器的属性信息包括对应容器的内存资源使用情况、磁盘使用情况和网络IO使用情况等。

在本发明实施例中,所述宿主机上运行的所有容器都通过自身的根文件系统来独立运行,实现容器之间相互隔离,彼此不能访问;所述容器内部执行的程序会将一些容器自身特定的信息输出到自身的根文件系统内;在达到反馈间隔时间后,通过读取对应容器内部的根文件系统,获取容器内执行程序的执行情况,并进行日志收集,健康诊断等功能。

在本发明实施例中,所述LINUX操作系统为所有运行的容器提供接口,在达到反馈间隔时间后,通过调用该接口,临时进入对应容器的命名空间;在所述容器内部的执行程序会按照任务要求进行对容器执行操作,包括停止容器内部的进程,修改容器内部的文件等;通过操作该容器,所述执行程序可以获取任务执行的结果或者容器内部的属性信息,在所述容器内部环境可以读取到容器内部的属性信息以及执行程序的执行情况,并在获取了对应的容器属性信息后离开所述容器的内部环境;通过LINUX操作系统提供的接口,在其他容器达到反馈间隔时间后,切换并临时进入对应容器的命名空间,通过读取对应容器的属性信息实现对容器的监控。

在本发明实施例中,所述容器的监控方法通过发送容器列表获取指令,在服务器响应所述容器列表获取指令后,接收服务器返回的容器列表,设定容器列表中每个容器的反馈间隔,通过对所有容器的运行进行记时,读取达到反馈间隔时间的容器的属性信息;通过该过程,可以实现运行一个监控程序即可对服务器上所有容器进行监控,而不必每一个容器分别配置一个监控程序,只需要对每个容器设置对应的反馈间隔,在达到反馈间隔后,获取对应容器的属性信息即可对该容器的运行实现监控,既节约了服务器的资源又降低了监控程序的复杂程度,便于进行升级和维护。

实施例三

参阅图3所示,为本发明所述容器的监控装置的第一实施例,包括:获取模块1和监控模块2。

所述获取模块1用于在服务器上获取容器列表;所述容器是一种LINUX内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,对服务运行时的环境进行隔离,被隔离出来的运行环境就称为容器;所述承载容器运行的外部环境的宿主机即服务器,所述服务器上会同时运行有多个容器,用于同时执行多个服务进程;在本发明实施例中,在所述服务器启动运行后,所述获取模块1向所述服务器发送容器列表获取指令,在服务器响应所述容器列表获取指令后,接收服务器返回的容器列表,所述容器列表包括容器的唯一容器标识以及容器运行状态信息。

所述监控模块2用于按照预设的时间间隔定期获取容器列表中所有容器的属性信息;所述监控模块2设定容器列表中每个容器的反馈间隔,同时对所有容器的运行进行记时,在容器达到反馈间隔时间后获取对应容器的属性信息;所述监控模块2可以对容器列表中每个处于活动状态的容器单独设置反馈间隔,也可以对所有活动状态的容器设置统一的反馈间隔。

所述监控模块2获取容器属性信息的过程具体包括以下几种方式:

在本发明实施例中,所述LINUX操作系统的内核为每个容器暴露的内核数据结构,所述内核数据结构通过伪文件系统将其一部分数据结构暴露在内核外,所述伪文件系统包括proc文件系统、sys文件系统和cgroup文件系统等;在达到反馈间隔时间后,所述监控模块2通过所述伪文件系统直接读取暴露在内核外的部分的数据,获取对应容器的属性信息,所述容器的属性信息包括对应容器的内存资源使用情况、磁盘使用情况和网络IO使用情况等。

在本发明实施例中,所述宿主机上运行的所有容器都通过自身的根文件系统来独立运行,实现容器之间相互隔离,彼此不能访问;所述容器内部执行的程序会将一些容器自身特定的信息输出到自身的根文件系统内;在达到反馈间隔时间后,所述监控模块2通过读取对应容器内部的根文件系统,获取容器内执行程序的执行情况,并进行日志收集,健康诊断等功能。

在本发明实施例中,所述LINUX操作系统为所有运行的容器提供接口,在达到反馈间隔时间后,所述监控模块2通过调用该接口,临时进入对应容器的命名空间;在所述容器内部的执行程序会按照任务要求进行对容器执行操作,包括停止容器内部的进程,修改容器内部的文件等;通过操作该容器,所述执行程序可以获取任务执行的结果或者容器内部的属性信息,所述监控模块2在所述容器内部环境可以读取到容器内部的属性信息以及执行程序的执行情况,并在获取了对应的容器属性信息后离开所述容器的内部环境;通过LINUX操作系统提供的接口,在其他容器达到反馈间隔时间后,所述监控模块2切换并临时进入对应容器的命名空间,通过读取对应容器的属性信息实现对容器的监控。

在本发明实施例中,所述容器的监控装置通过所述获取模块1在服务器上获取容器列表,通过所述监控模块2按照预设的时间间隔定期获取容器列表中所有容器的属性信息;通过该过程,可以实现运行一个监控程序即可对服务器上所有容器进行监控,而不必每一个容器分别配置一个监控程序,只需要对每个容器设置对应的反馈间隔,在达到反馈间隔后,获取对应容器的属性信息即可对该容器的运行实现监控,既节约了服务器的资源又降低了监控程序的复杂程度,便于进行升级和维护。

实施例四

参阅图4所示,为本发明所述容器的监控装置的第二实施例,包括:获取模块1和监控模块2。

所述获取模块1用于在服务器上获取容器列表;所述获取模块1包括发送单元11和接收单元12。

所述发送单元11用于发送容器列表获取指令;所述容器是一种LINUX内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,对服务运行时的环境进行隔离,被隔离出来的运行环境就称为容器;所述承载容器运行的外部环境的宿主机即服务器,所述服务器上会同时运行有多个容器,用于同时执行多个服务进程;在本发明实施例中,在所述服务器启动运行后,所述发送单元11向所述服务器发送容器列表获取指令。

所述接收单元12用于在服务器响应所述容器列表获取指令后,接收服务器返回的容器列表;所述容器列表包括容器的唯一容器标识以及容器运行状态信息,所述容器标识是标示容器的唯一标识,用于在宿主机中区分各个容器的身份,所述容器运行状态信息是指容器当前的运行状态,包括活动状态以及停止状态;所述容器的唯一容器标识与所述容器运行状态信息一一对应;所述服务器响应所述容器列表获取指令,向所述接收单元12返回容器列表,在本发明实施例中,所述服务器返回的容器列表是服务器上所有容器的容器标识以及其对应的容器运行状态信息经整理后制成的列表,当有容器的运行状态发生了变化或者有新的容器产生时,所述容器列表内的信息也会实时变更;在本发明实施例中,所述服务器在容器列表内的信息发生变更时,返回新的容器列表接收单元12。

所述监控模块2用于按照预设的时间间隔定期获取容器列表中所有容器的属性信息;所述监控模块2包括设定单元21、记时单元22以及读取单元23。

所述设定单元21用于设定容器列表中每个容器的反馈间隔;在本发明实施例中,所述设定单元21仅对所述容器列表中处于活动状态的容器进行反馈间隔的设定,输出设定结果;用户通过所述设定单元21可以对容器列表中每个处于活动状态的容器单独设置反馈间隔,根据容器内部运行的进程和实际需要进行设置;在其他实施方式中,为了便于管理,可以对所有活动状态的容器设置统一的反馈间隔;所述反馈间隔是指监控模块2获取一次对应容器的属性信息所间隔的时间;所述反馈间隔的时间根据实际情况进行设置,如1秒,1毫秒等,当设定的反馈间隔足够小时,在实际使用过程中可以认为是实时反馈。

所述记时单元22用于对所有容器的运行进行记时;在本发明实施例中,所述记时单元22对所述容器列表中所有容器进行时间统计,所述时间为容器持续运行的时间,输出记时结果,当所述容器运行状态信息为停止状态时,所述时间统计显示为空。

所述读取单元23用于读取达到反馈间隔时间的容器的属性信息;所述读取单元23用于对设定结果和记时结果进行对比,并对达到反馈间隔时间的容器的属性信息进行读取和监控。

所述读取单元23读取容器属性信息的过程具体包括以下几种方式:

在本发明实施例中,所述LINUX操作系统的内核为每个容器暴露的内核数据结构,所述内核数据结构通过伪文件系统将其一部分数据结构暴露在内核外,所述伪文件系统包括proc文件系统、sys文件系统和cgroup文件系统等;在达到反馈间隔时间后,所述读取单元23通过所述伪文件系统直接读取暴露在内核外的部分的数据,获取对应容器的属性信息,所述容器的属性信息包括对应容器的内存资源使用情况、磁盘使用情况和网络IO使用情况等。

在本发明实施例中,所述宿主机上运行的所有容器都通过自身的根文件系统来独立运行,实现容器之间相互隔离,彼此不能访问;所述容器内部执行的程序会将一些容器自身特定的信息输出到自身的根文件系统内;在达到反馈间隔时间后,所述读取单元23通过读取对应容器内部的根文件系统,获取容器内执行程序的执行情况,并进行日志收集,健康诊断等功能。

在本发明实施例中,所述LINUX操作系统为所有运行的容器提供接口,在达到反馈间隔时间后,所述读取单元23通过调用该接口,临时进入对应容器的命名空间;在所述容器内部的执行程序会按照任务要求进行对容器执行操作,包括停止容器内部的进程,修改容器内部的文件等;通过操作该容器,所述执行程序可以获取任务执行的结果或者容器内部的属性信息,所述读取单元23在所述容器内部环境可以读取到容器内部的属性信息以及执行程序的执行情况,并在获取了对应的容器属性信息后离开所述容器的内部环境;通过LINUX操作系统提供的接口,在其他容器达到反馈间隔时间后,所述读取单元23切换并临时进入对应容器的命名空间,通过读取对应容器的属性信息实现对容器的监控。

在本发明实施例中,所述容器的监控装置通过所述发送单元11发送容器列表获取指令,通过所述接收单元12在服务器响应所述容器列表获取指令后,接收服务器返回的容器列表,通过所述设定单元21设定容器列表中每个容器的反馈间隔,通过记时单元22对所有容器的运行进行记时,通过所述读取单元23读取达到反馈间隔时间的容器的属性信息;通过该过程,可以实现运行一个监控程序即可对服务器上所有容器进行监控,而不必每一个容器分别配置一个监控程序,只需要对每个容器设置对应的反馈间隔,在达到反馈间隔后,获取对应容器的属性信息即可对该容器的运行实现监控,既节约了服务器的资源又降低了监控程序的复杂程度,便于进行升级和维护。

实施例五

在上述实施例的基础上,为本发明所述容器的监控装置的实施例,包括处理器和存储器。

所述处理器用于:在服务器上获取容器列表;按照预设的时间间隔定期获取容器列表中所有容器的属性信息。

所述存储器用于为支持所述容器的监控装置存储各种类型的数据。

本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

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