掌桥专利:专业的专利平台
掌桥专利
首页

一种swarm集群下的容器监控方法和共享服务云平台

文献发布时间:2023-06-19 11:32:36


一种swarm集群下的容器监控方法和共享服务云平台

技术领域

本发明涉及容器监控领域,特别地,涉及一种swarm集群下的容器监控方法和共享服务云平台。

背景技术

iCenter1.1.2等共享服务云平台使用Swarm作为Docker集群的管理工具,并且使用Swarm实现了服务的动态扩容等能力。而当服务在docker swarm集群中运行时,可以通过swarm的api启动多个实例,但是swarm只能对整个服务进行监控,无法对服务中的实例进行监控。具体而言,Swarm中有两种节点,管理器节点(Manager)和工作节点(Worker),管理器节点负责集群的控制,进行诸如监控集群状态,分发任务至工作节点(Worker)等操作。工作节点(Worker)接收来自管理器节点(Manager)的任务并执行。而共享服务云平台,比如iCenter1.1.2等的系统服务管理器(Service Manager)与Swarm的管理器节点进行通信,给管理器节点下达指令,完成服务的管理,监控等功能。但是管理器节点只能对服务的状态进行监控,并不能针对服务实例进行监控,无法满足iCenter1.1.2等共享服务云平台对服务实例管理的需求。

其中,Docker是一种遵从Apache2.0协议开源的Linux容器管理解决方案,它通过进程和进程通信技术对操作系统的文件资源和网络的进行隔离,实现了包含文件资源、系统资源(shell环境等)以及网络资源的容器创建和管理。Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并通过一个入口统一管理这些Docker主机上的各种Docker资源。其中,Swarm能够管理的最小的单元是service,一个service可以由一个或多个实例,每个实例为Docker中启动的一个容器。由于Swarm并没有提供对容器的管理,不能对容器占用资源进行监控或者获取容器的日志信息,因此无法通过Swarm管理服务中的实例。

发明内容

本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。

为此,在本发明的第一方面,提出了一种swarm集群下的容器监控方法。具体地,该方法包括:

通过服务名称获取服务实例个数及服务实例对应的ID;

通过服务实例对应的ID获取容器的ID和容器所在的swarm节点;

通过容器所在的swarm节点查找出对应的代理服务;

通过查找出的代理服务调用DockerApi,获取容器的信息。

在上述技术方案中,优选地,所述容器的信息包括容器的状态信息、容器的日志信息和容器的故障信息中的一种或多种。

在上述技术方案中,优选地,该监控方法在所述根据容器所在的swarm节点查找出对应的代理服务的步骤之前还包括:获取服务名称。

在上述任一技术方案中,优选地,所述根据容器所在的swarm节点查找出对应的代理服务的步骤具体包括:

调用预储存的代理服务和swarm节点的对应关系表;

根据容器所在的swarm节点和调用的所述对应关系表查找出对应的代理服务。

在上述任一技术方案中,优选地,该监控方法还包括:

在调用预储存的代理服务和swarm节点的对应关系表之前对代理服务和swarm节点的对应关系表进行预储存。

在上述任一技术方案中,优选地,所述根据服务名称获取服务实例个数及服务实例对应的ID的步骤具体包括:

基于服务名称生成服务实例个数及服务实例对应的ID的查找命令,并发送给swarm管理器;

接收swarm管理器基于所述查找命令的反馈信息,得到服务实例个数及服务实例对应的ID。

根据本发明的技术方案提供的swarm集群下的容器监控方法,可用于共享服务云平台等中,具体地,该方案先是针对Swarm的管理器节点(Manager)和工作节点(Worker)均对应设置了一个代理服务(即Service Agent),该代理服务可以通过调用DockerApi来获取容器的信息,比如获取容器的状态信息、容器的日志信息和容器的故障信息等。而在具体监控容器时,是先获取服务名称,然后对swarm管理器进行调用,以使swarm管理器们能够基于服务名称获取到该服务对称下的服务实例个数及每个服务实例对应的ID。此后,可通过服务实例对应的ID获取容器的ID以及容器所在的swarm节点,此后便可通过容器所在的swarm节点查找出对应的代理服务,然后便可根据查找出的代理服务调用DockerApi来获取容器的日志、状态等信息。该种设置,通过对应各个节点设置代理服务,使得容器的状态信息可以通过代理服务进行调用查询,从而实现对容器的监控。而具体操作时,是基于信息流:服务名称-服务实例的个数和服务实例的ID-容器的ID-容器所在的swarm节点-代理服务-DockerApi-容器的信息来获取容器信息的,从而实现了对容器和服务实例的监控。而该种监控方式,不需要修改Docker源码,因而在不修改Docker源码的前提下实现了对容器和服务实例的监控,而这种方式由于不需要修改Docker的代码,因而更便于维护;同时,该种方式不需要对原有的Docker环境进行修改,因而更方便部署。此外,该种方式由于调用了标准的API,可以方便的使用Docker的任意支持Swarm的版本,因而更方便产品升级。

其中,本申请中的swarm节点包括管理器节点(Manager)和工作节点(Worker),而容器的状态信息具体可以是容器部件的占用率或空闲状态等信息。

本发明第二方面提供了一种系统服务管理器,包括第一存储器和第一处理器,所述第一存储器上存储有计算机程序,其中,所述第一处理器执行所述程序时实现第一方面任一项实施例提供的方法。

根据本发明的技术方案提供的系统服务管理器,可用于iCenter1.1.2等共享服务云平台等中,具体地,该系统服务管理器(即Service Manager)一方面用于与Swarm的Manager节点进行通信,给Manager节点下达指令,以便完成服务的管理,监控等功能。另一方面该系统服务管理器包括第一存储器和第一处理器,而第一存储器上存储有计算机程序,其中,第一处理器执行所述程序时实现第一方面任一项实施例提供的方法,即第一处理器执行所述程序时能够实现上述容器的监控方法,这样就使得系统服务管理器除了能够在完成原有功能的情况下,还能够实现上述容器的监控方法,从而在不修改Docker源码的前提下实现了对容器和服务实例的监控。

本发明第三方面提供了一种电子设备,包括第二存储器和第二处理器,所述第二存储器上存储有计算机程序,其中,所述第二处理器执行所述程序时实现第一方面任一项实施例提供的方法。

根据本发明的技术方案提供的电子设备,包括第二存储器和第二处理器,而第二存储器上存储有计算机程序,其中,第二处理器执行所述程序时实现第一方面任一项实施例提供的方法,即第二处理器执行所述程序时能够实现上述容器的监控方法,这样就使得电子设备能够实现上述容器的监控方法,从而能够在不修改Docker源码的前提下实现了对容器和服务实例的监控。其中,这里的电子设备具体可以是一台电脑、手机或功能模块,当然,也可以是iCenter1.1.2等共享服务云平台的系统服务管理器的一部分。

本发明第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现第一方面任一项实施例提供的方法。

本发明第五方面提供了一种共享服务云平台,包括:

系统服务管理器、swarm管理器和多个swarm工作节点;及

监控器,包括第三存储器和第三处理器,所述第三存储器上存储有计算机程序,其中,所述第三处理器执行所述程序时实现第一方面任一项实施例提供的方法;

多个代理服务,所述监控器与每一个swarm工作节点之间均设置有一所述代理服务,所述监控器与swarm管理器之间设置有一所述代理服务。

进一步优选地,所述监控器属于系统服务管理器的一部分,或所述监控器与所述系统服务管理器相互独立。

根据本发明的技术方案提供的共享服务云平台,包括系统服务管理器、swarm管理器、多个swarm工作节点和监控器和多个代理服务,其中,在原有结构中,共享服务云平台没有监控器和多个代理服务,但包括系统服务管理器、swarm管理器、多个swarm工作节点。具体地,系统服务管理器(即Service Manager)用于与Swarm的Manager节点进行通信,给Manager节点下达指令,以便完成服务的管理,监控等功能。而监控器包括第三存储器和第三处理器,而第三存储器上存储有计算机程序,其中,第三处理器执行所述程序时实现第一方面任一项实施例提供的方法,即第三处理器执行所述程序时能够实现上述容器的监控方法。而多个代理服务对应设置在swarm节点与监控器之间,使得监控器在知道了容器的节点后能够找到对应的代理服务,这样代理服务便能够通过调用DockerApi来获取容器的信息,从而实现容器的状态和日志等信息监控。该种共享服务云平台,在现有结构上,增加了监控器,而该监控器既可以是额外专门增加的,也可以是内置于系统服务管理器的一功能单元。同时,该种共享服务云平台,在现有结构上对应每一个swarm节点增加了代理服务,从而使得监控器能够基于容器节点查找到代理服务,然后基于代理服务对DockerApi的调用来获取容器的信息,而该种获取容器的信息的方式,不需要修改Docker源码,因而更便于维护;同时,该种方式不需要对原有的Docker环境进行修改,因而更方便部署。此外,该种方式由于调用了标准的API,可以方便的使用Docker的任意支持Swarm的版本,因而更方便产品升级。

本发明的附加方面和优点将在下面的描述部分中给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1示出了本发明的实施例提供的swarm集群下的容器监控方法的流程示意图;

图2示出了本发明的另一实施例提供的swarm集群下的容器监控方法的流程示意图;

图3示出了本发明的实施例提供的共享服务云平台的方框图;

图4示出了本发明的另一实施例提供的共享服务云平台的方框图;

图5示出了本发明的一实施例提供的电子设备的方框图。

具体实例方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实例方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实例,因此,本发明的保护范围并不受下面公开的具体实施例的限制。

图1示出了根据本发明的实施例提供的一种swarm集群下的容器监控方法,其中,该容器监控方法可具体用于如图3和图4中的云平台,如图1所示,该方法包括以下步骤:

S102,通过服务名称获取服务实例个数及服务实例对应的ID。

在该步骤中,可通过调用swarm管理器来获得服务实例个数及服务实例对应的ID。

S104,通过服务实例对应的ID获取容器的ID和容器所在的swarm节点。

在该步骤中,可通过调用swarm管理器来获得容器的ID和容器所在的swarm节点,当然,也可通过其它方式来获取容器的ID和容器所在的swarm节点。

S106,通过容器所在的swarm节点查找出对应的代理服务。

在该步骤中,可提前针对每一个swarm节点都对应设置一个代理服务,以便能够基于代理服务对DockerApi的调用来获取容器的日志、状态等信息。其中,swarm节点包括管理器节点(Manager)和工作节点(Worker)。

S108,通过查找出的代理服务调用DockerApi,获取容器的信息。

其中,在上述任一实施例中,容器的信息包括容器的状态信息、容器的日志信息和容器的故障信息中的一种或多种。

下面参照图2来描述本发明的另一实施例提供的一种swarm集群下的容器监控方法,其中,该容器监控方法可具体用于如图3和图4中的云平台,如图2所示,该方法包括以下步骤:

S202,获取服务名称,并对代理服务和swarm节点的对应关系表进行预储存;具体地,可在对应每一个swarm节点对应设置代理服务时,就将代理服务的编号与swarm节点的对应关系记录下来,以便后续能基于容器所在的swarm节点来查找出与容器对应的代理服务。

S204,基于服务名称生成查找服务实例个数及服务实例对应的ID的命令,并发送给swarm管理器;

S206,接收swarm管理器基于查找命令的反馈信息,得到服务实例个数及服务实例对应的ID;

S208,通过swarm管理器的调用和服务实例对应的ID获取容器的ID和容器所在的swarm节点;其中,swarm节点包括管理器节点(Manager)和工作节点(Worker)。

S210,调用预储存的代理服务和swarm节点的对应关系表;

S212,根据容器所在的swarm节点和调用的对应关系表查找出对应的代理服务;

S214,通过查找出的代理服务调用DockerApi,获取容器的状态信息和/或容器的日志信息。

根据本发明的上述实施例提供的swarm集群下的容器监控方法,可用于如图3和图4提供的共享服务云平台等中,具体地,该方案先是如图3和图4所示,针对Swarm的管理器节点(Manager)和工作节点(Worker)均对应设置了一个代理服务,该代理服务可以通过调用DockerApi来获取容器的信息,比如获取容器的状态信息、容器的日志信息和容器的故障信息等。而在具体监控容器时,是先获取服务名称,然后对swarm管理器进行调用,以使swarm管理器们能够基于服务名称获取到该服务对称下的服务实例个数及每个服务实例对应的ID。此后,可通过服务实例对应的ID获取容器的ID以及容器所在的swarm节点,此后便可通过容器所在的swarm节点查找出对应的代理服务,然后便可根据查找出的代理服务调用DockerApi来获取容器的日志、状态等信息。该种设置,通过对应各个节点设置代理服务,使得容器的状态信息可以通过代理服务进行调用查询,从而实现对容器的监控。而具体操作时,是基于信息流:服务名称-服务实例的个数和服务实例的ID-容器的ID-容器所在的swarm节点-代理服务-DockerApi-容器的信息来获取容器信息的,从而实现了对容器和服务实例的监控。而该种监控方式,不需要修改Docker源码,因而在不修改Docker源码的前提下实现了对容器和服务实例的监控,而这种方式由于不需要修改Docker的代码,因而更便于维护;同时,该种方式不需要对原有的Docker环境进行修改,因而更方便部署。此外,该种方式由于调用了标准的API,可以方便的使用Docker的任意支持Swarm的版本,因而更方便产品升级。

其中,容器的状态信息具体可以是容器部件,比如CPU等的占用率或空闲状态等信息。

本发明第二方面提供了一种系统服务管理器,包括第一存储器和第一处理器,第一存储器上存储有计算机程序,其中,第一处理器执行程序时实现第一方面任一项实施例提供的方法。

根据本发明的实施例提供的系统服务管理器,可用于iCenter1.1.2等共享服务云平台等中,具体地,该系统服务管理器(即Service Manager)一方面用于与Swarm的Manager节点进行通信,给Manager节点下达指令,以便完成服务的管理,监控等功能。另一方面该系统服务管理器包括第一存储器和第一处理器,而第一存储器上存储有计算机程序,其中,第一处理器执行程序时实现第一方面任一项实施例提供的方法,即第一处理器执行程序时能够实现上述容器的监控方法,这样就使得系统服务管理器除了能够在完成原有功能的情况下,还能够实现上述容器的监控方法,从而在不修改Docker源码的前提下实现了对容器和服务实例的监控。

本发明第三方面提供了一种电子设备,包括第二存储器和第二处理器,第二存储器上存储有计算机程序,其中,第二处理器执行程序时实现第一方面任一项实施例提供的方法。

根据本发明的实施例提供的电子设备,包括第二存储器和第二处理器,而第二存储器上存储有计算机程序,其中,第二处理器执行程序时实现第一方面任一项实施例提供的方法,即第二处理器执行程序时能够实现上述容器的监控方法,这样就使得电子设备能够实现上述容器的监控方法,从而能够在不修改Docker源码的前提下实现了对容器和服务实例的监控。其中,这里的电子设备具体可以是一台电脑、手机或功能模块,当然,也可以是iCenter1.1.2等共享服务云平台的系统服务管理器的一部分。

本发明第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,程序被处理器执行时实现第一方面任一项实施例提供的方法。

本发明第五方面提供了一种共享服务云平台,该共享服务云平台如图3和图4所示,包括:系统服务管理器310、swarm管理器320和多个swarm工作节点330;及

监控器340,包括第三存储器和第三处理器,第三存储器上存储有计算机程序,其中,第三处理器执行程序时实现第一方面任一项实施例提供的方法;

多个代理服务350,监控器340与每一个swarm工作节点330之间均设置有一代理服务350,监控器340与swarm管理器320之间设置有一代理服务350。

进一步优选地,监控器340属于系统服务管理器310的一部分,或监控器340与系统服务管理器310相互独立。

根据本发明的实施例提供的共享服务云平台,包括系统服务管理器310、swarm管理器320、多个swarm工作节点330和监控器340和多个代理服务350,其中,在原有结构中,共享服务云平台没有图3和图4中的监控器340和多个代理服务350,而只有图3和图4中的系统服务管理器310、swarm管理器320、多个swarm工作节点330。具体地,该系统服务管理器310(即Service Manager)用于与Swarm的Manager节点进行通信,给Manager节点下达指令,以便完成服务的管理,监控等功能。而监控器340包括第三存储器和第三处理器,而第三存储器上存储有计算机程序,其中,第三处理器执行程序时实现第一方面任一项实施例提供的方法,即第三处理器执行程序时能够实现上述容器的监控方法。而多个代理服务350对应设置在swarm节点与监控器340之间,使得监控器340在知道了容器的节点后能够找到对应的代理服务350,这样代理服务350便能够通过调用DockerApi来获取容器的信息,从而实现容器的状态和日志等信息监控。该种共享服务云平台,在现有结构上,增加了监控器340,而该监控器340既可以是额外专门增加的,即独立于系统服务管理器310单独设置的(如图4所示),也可以是内置于系统服务管理器310的一功能单元(如图3所示)。同时,如图3和图4所示,该种共享服务云平台,在现有结构上对应每一个swarm节点增加了代理服务350,从而使得监控器340能够基于容器节点查找到代理服务350,然后基于代理服务350对DockerApi的调用来获取容器的信息,而该种获取容器的信息的方式,不需要修改Docker源码,因而更便于维护;同时,该种方式不需要对原有的Docker环境进行修改,因而更方便部署。此外,该种方式由于调用了标准的API,可以方便的使用Docker的任意支持Swarm的版本,因而更方便产品升级。

其中,图5出了可以用于本公开的实施例的电子设备500的示意性方框图。如图5所示,电子设备500包括中央处理单元501,其可以根据存储在只读存储器502中的计算机程序指令或者从存储单元508加载到随机访问存储器503中的计算机程序指令,来执行各种适当的动作和处理。在RAM 503中,还可以存储电子设备500操作所需的各种程序和数据。CPU501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出接口505也连接至总线504。

电子设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许电子设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

处理单元501执行上文所描述的各个方法和处理。例如,在一些实施例中,上述实施例子中的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到电子设备500上。当计算机程序加载到RAM 503并由CPU 501执行时,可以执行上文描述的远程控制端和车载读书设备的一个或多个步骤。备选地,在其他实施例中,CPU 501可以通过其他任何适当的方式而被配置为执行上述实施例子中的方法。

本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列、专用集成电路、专用标准产品、芯片上系统的系统、负载可编程逻辑设备等等。

用于实例本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实例。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或电子设备上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器、只读存储器、可擦除可编程只读存储器、光纤、便捷式紧凑盘只读存储器、光学储存设备、磁储存设备、或上述内容的任何合适组合。

此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。

尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

相关技术
  • 一种swarm集群下的容器监控方法和共享服务云平台
  • 一种服务器集群系统的监控方法和一种服务器集群系统
技术分类

06120112966087