容器状态的监控方法、装置、系统和介质与流程

文档序号:26849971发布日期:2021-10-09 01:35阅读:211来源:国知局
容器状态的监控方法、装置、系统和介质与流程

1.本公开一般涉及容器技术领域,具体涉及容器状态监控,尤其涉及一种容器状态的监控方法、装置、系统和介质。


背景技术:

2.docker为代表的基于容器的虚拟技术是当前虚拟技术的热点,通过隔离进程和资源,实现轻量级虚拟化。docker作为开源引用的容器引擎,提供了应用程序快速自动化部署的解决方案,利用docker镜像可以部署多个容器,容器间相互隔离,容器内环境一致,使得开发部署变得简单。微服务下会有很多容器相互协作,共同支撑上层业务,大量的容器难于管理,容器服务状态监控是不可缺失的。


技术实现要素:

3.鉴于现有技术中的上述缺陷或不足,期望提供一种容器状态的监控方法、装置、系统和介质,能够实现对多个容器的状态监控,状态信息可视化和反馈。
4.第一方面,本技术实施例提供了一种容器状态的监控方法,包括:
5.接收容器运行的状态信息,所述状态信息通过驻守程序监测获取,所述驻守程序写在用于部署所述容器的镜像文件中;
6.获取所述状态信息的更新时间;
7.根据所述更新时间,确定所述容器发生状态异常。
8.在一些实施例中,所述根据所述更新时间,确定所述容器发生状态异常,包括:
9.获取当前时间与所述更新时间之间的时间差;
10.在所述时间差大于预设阈值时,确定所述容器发生状态异常。
11.在一些实施例中,所述状态信息还包括所述容器的标识信息,所述获取所述状态信息的更新时间,包括:
12.提取所述状态信息中的所述标识信息;
13.根据所述标识信息更新所述标识信息对应的所述容器的状态信息,并生成所述更新时间。
14.在一些实施例中,所述镜像文件还包括用于部署所述容器的业务功能程序,所述驻守程序被设置为执行所述业务功能程序的前置程序。
15.第二方面,本技术实施例提供了一种容器的监控方法,用于部署容器的镜像文件中写有业务功能程序和驻守程序,所述方法还包括:
16.执行所述驻守程序以获取基于所述业务功能部署的容器的状态信息;
17.将所述状态信息上报至容器状态服务器,以使所述容器状态服务器根据所述状态信息识别所述容器是否发生状态异常。
18.在一些实施例中,所述驻守程序被设置为执行所述业务功能程序的前置程序。
19.第三方面,本技术实施例提供了一种容器状态接收装置,包括接收模块,用于接收
容器运行的状态信息,所述状态信息通过驻守程序监测获取,所述驻守程序写在用于部署所述容器的镜像文件中;
20.获取模块,用于获取所述状态信息的更新时间;
21.确定模块,用于根据所述更新时间,确定所述容器发生状态异常。
22.第四方面,本技术实施例提供了一种容器状态检测装置,用于部署容器的镜像文件中写有业务功能程序和驻守程序,所述容器状态检测装置包括:
23.执行模块,用于执行所述驻守程序以获取基于所述业务功能部署的容器的状态信息;
24.上报模块,用于将所述状态信息上报至容器状态服务器,以使所述容器状态服务器根据所述状态信息识别所述容器是否发生状态异常。
25.第五方面,本技术实施例提供了一种容器状态的监控系统,包括:
26.容器状态检测装置,所述容器状态检测装置用于执行如本技术实施例所述的方法;
27.与所述容器状态检测装置通信连接的容器状态接收装置,所述容器状态服务器用于执行如本技术实施例所述的方法。
28.第六方面,本技术实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本技术实施例所述的容器状态的监控方法。
29.由此,本技术实施例提出的容器状态监控方法,通过运行驻守程序以检测容器状态,从而获取容器运行的状态信息的方式,能够实现对容器的实时管理,通过在状态信息中形成标识信息,使得容器之间以标识信息相区分,从而实现对多个容器的同时管理,此外,本技术实施例提出的容器状态监控方法在状态信息中加入对应的更新时间,通过以预定频率检测容器的状态信息及更新时间,并分析更新时间是否存在规律性变化的方式,判断容器的运行状态是否正常,从而使容器能够在发生状态异常时及时获取人工干预。
30.本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
31.通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本技术的其它特征、目的和优点将会变得更明显:
32.图1为本发明实施例所提供的容器状态监控方法的场景示意图;
33.图2为本技术实施例提出的一种容器状态监控方法的流程图;
34.图3为本技术实施例提出的另一种容器状态监控方法的流程图;
35.图4为本技术实施例提出的一种镜像文件的结构示意图;
36.图5为本技术实施例提出的又一种容器状态监控方法的流程图;
37.图6为本技术实施例提出的再一种容器状态监控方法的流程图;
38.图7为本技术实施例提出的再一种容器状态监控方法的流程图;
39.图8为本技术实施例提出的一种容器状态监控界面示意图;
40.图9为本技术实施例提出的另一种容器状态监控界面示意图;
41.图10为本技术实施例提出的又一种容器状态监控界面示意图;
42.图11为本技术实施例提出的再一种容器状态监控界面示意图;
43.图12为本技术实施例提出的一种容器状态接收装置的方框示意图;
44.图13为本技术实施例提出的一种容器状态检测装置的方框示意图;
45.图14示出了适于用来实现本技术实施例的电子设备或服务器的计算机系统的结构示意图。
具体实施方式
46.下面结合附图和实施例对本技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
47.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
48.近些年容器技术席卷全球,颠覆了应用的开发、交付和运算模式,在云计算、互联网等领域得到了广泛的应用。随着业务及技术的增长,越来越多容器服务被部署,容器的增多使得运维人员难以实时监控容器状态,一旦出现容器假死、停止等状态,容易造成不可预计的流量、用户、或经济损失,因此,对容器服务状态的检测监控是必不可少的一部分。
49.基于此,本技术实施例提供了一种容器状态的监控方法、装置、系统和介质。
50.参见图1,为本发明实施例所提供的容器状态监控方法的场景示意图,该场景可以包括容器状态检测装置和容器状态接收装置。其中,容器状态检测装置是创建和运行容器、检测容器状态、生成容器状态信息并向容器状态接收装置发送容器状态信息的场所。容器状态接收装置是对容器状态信息进行接收、持久化和可视化处理,并在容器状态异常时进行报警的场所。具体而言,容器状态检测装置下载包括驻守程序和业务功能程序的镜像文件后,首先启动驻守程序,监听容器是否运行,随后启动业务功能程序创建并启动容器。当容器启动即开始运行时,驻守程序检测容器状态,生成容器状态信息并向容器状态接收装置周期性地发送容器状态信息,业务驻守程序则支持运行中的容器完成其功能。容器状态接收装置包括信息接收模块、数据库、状态判定模块和可视化模块,信息接收模块用于接收容器状态检测装置传来的容器状态信息,并将容器状态信息存储到数据库中,状态判定模块通过读取数据库中的容器状态信息比较当前时间和容器状态检测装置最近一次传来容器状态信息的时间,判定容器状态是否发生异常,并将判定结果以可视化的方式在可视化模块中展示,如果判定结果为容器状态异常,可视化模块还将触发报警进行警示。
51.其中,容器状态检测装置可设置在用户的本地物理机上,例如本地终端设备等,容器状态接收装置可设置在厂商的远程物理机上,例如服务器,也可设置在用户的本地物理机上,应当理解的是,当容器状态接收装置设置在本地物理机上时,通常不与容器状态检测装置设置在同一物理机上。
52.为了更清楚的描述本技术,以下为对相关技术术语的解释:
53.镜像(mirroring):一种文件存储形式,是一个磁盘上的数据在另一个磁盘上创建的一个完全相同的副本。在本发明中,镜像文件由容器状态检测装置从云端的镜像仓库下载获得,用于在容器状态检测装置中部署容器,是支持容器运行的前提,它为容器运行的虚拟环境提供了一个标准模板,利用特定镜像创造出特定的虚拟环境,从而使多个容器可以
在这一虚拟环境内彼此独立地运行。
54.数据库(database):按照一定的数据结构来组织、存储和管理数据的仓库。用户可以对数据库中的数据进行新增、筛选、更新、删除等操作。在本发明中,数据库设置在容器状态接收装置中,可用于存储容器状态信息,以便于进一步对容器状态异常与否进行分析。
55.持久化(persistence):将数据保存到可永久存储的设备(例如:数据库)中的一种技术。在本发明中,容器状态信息被存储到数据库中,以实现对容器状态信息的持久化。
56.可视化(visualization):可视化是利用计算机图形学和图像处理技术,将数据转换成图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。在本发明中,容器运行异常与否的数据被可视化后在屏幕加以展示,当展示运行异常信息时,触发报警,期望人工干预,从而实现交互。
57.图2为本技术实施例提出的一种容器状态监控方法的流程图。其中,需要说明的是,本实施例的容器状态监控方法的执行主体为容器状态接收装置,容器状态接收装置可以由软件和/或硬件的方式实现,该实施例中的容器状态接收装置可以配置在电子设备中,也可以配置在用于对电子设备进行控制的服务器中。
58.如图2所示,容器状态监控方法包括以下步骤:
59.步骤101,接收容器运行的状态信息,状态信息通过驻守程序监测获取,驻守程序写在用于部署容器的镜像文件中。
60.需要说明的是,
61.驻守程序是使用golang语言开发,编译成linux系统下可执行的二进制文件,它被构建在镜像中,与容器共同启动与停止。驻守程序用于采集包括但不限于容器名称、容器编号、容器ip地址、宿主机ip地址、cpu、内存、容器内各进程、gpu等容器状态信息,并使用grpc或http协议,把采集到的状态信息推送到数据采集接口,以供后续容器状态监控。可选的,其推送报文格式如下:
62.[0063][0064]
容器状态接收装置中可设置有状态服务接口,用于接收驻守程序发送的容器运行的状态信息。
[0065]
其中,容器状态检测装置可从云端镜像仓库中下载包含驻守程序的镜像文件,容器状态检测装置利用下载得到的镜像文件在容器状态检测装置本地创建并运行至少一个容器。创建容器后,驻守程序实时监听每一个容器的运行状态。容器开始运行,驻守程序便周期性地检测每个容器运行的状态信息并将检测到的每个容器运行的状态信息发送至容器状态接收装置。例如,驻守程序以1.5秒的固定周期检测容器运行的状态信息,并将检测结果发送至容器状态接收装置,即,当驻守程序检测到某一容器开始运行,便第一次检测该容器运行的状态信息并将检测结果发送至容器状态接收装置,此后,驻守程序每间隔1.5秒检测一次该容器运行的状态信息,并将检测结果发送至容器状态接收装置。
[0066]
步骤102,获取状态信息的更新时间。
[0067]
其中,容器状态接收装置在接收状态信息时获取状态信息对应的更新时间。例如,容器状态接收装置可在接收到状态信息时获取当前时间,并将当前时间标记为该状态信息对应的更新时间,可选的,状态信息自身还可以携带时间,即驻守程序在检测到容器运行的状态信息时的时间,此时容器状态接收装置可在接收到状态信息时读取状态信息携带的时间,并将该时间标记为该状态信息对应的更新时间。
[0068]
其中,以将接收到状态信息时的时间标记为该状态信息对应的更新时间为例,容器状态接收装置在收到状态信息时获取第一当前时间,即状态信息的更新时间,其中,第一当前时间可为容器状态接收装置在接收到容器运行的状态信息时的本地时间。
[0069]
其中,以将状态信息自身携带的时间标记为该状态信息对应的更新时间为例,如图3所示,容器状态检测装置的驻守程序在检测到容器运行的状态信息时获取第二当前时间,其中,第二当前时间可为驻守程序在检测到容器运行的状态信息时的本地时间。随后驻守程序将第二当前时间作为状态信息自身携带的时间,也即状态信息对应的更新时间,与状态信息一并发送至容器状态接收装置。
[0070]
步骤103,根据更新时间确定容器发生状态异常。
[0071]
其中,容器状态接收装置根据容器运行的状态信息的更新时间是否发生变化来确定容器是否发生状态异常,例如,如果容器运行的状态信息的更新时间随着时间变化而变化,或者按照驻守程序的检测频率而变化,则说明容器的运行状态正常,反之,则说明容器的运行状态异常。
[0072]
具体而言,容器状态接收装置接收到容器运行的状态信息之后,对容器运行的状态信息进行解析,得到状态信息的更新时间,然后按照预设频率检测状态信息的更新时间,并记录当前检测的更新时间,如果当前检测的更新时间与前一次检测的更新时间相同,则确定容器发生状态异常,如果当前检测的更新时间与前一次检测更新时间不相同,则确定容器未发生状态异常。
[0073]
进一步地,如图4所示,镜像文件还包括用于部署容器的业务功能程序,驻守程序
被设置为执行业务功能程序的前置程序。
[0074]
需要说明的是,业务功能程序用于创建容器、启动容器及支持正在运行中的容器完成其功能。
[0075]
其中,如图5所示,容器状态检测装置从云端镜像仓库中下载包含有驻守程序和业务功能程序的镜像文件,其中,在镜像文件中,驻守程序被写于业务功能程序的前面,具体地,在容器状态检测装置执行镜像文件时,从起始位置开始读取镜像文件中的内容,因此,容器状态检测装置先读取写在镜像文件前端的驻守程序,并在按照驻守程序文件启动驻守程序后,继续读取用于创建和启动容器的业务功能程序,以实现容器部署的目的。可选的,在一个容器状态检测装置上部署多个容器时,可反复回复到直接读取业务功能程序的起始位置,也可直接回复到驻守程序的起始位置。例如,容器状态检测装置首先读取驻守程序,按照驻守程序文件启动驻守程序,其次读取业务功能程序创建与启动第一个容器。随后,驻守程序可以反复回复到直接读取业务功能程序的起始位置创建和启动第二个、第三个容器,由先前启动的驻守程序对多个容器状态进行检测,也可以直接回复到驻守程序的起始位置,启动第二个驻守程序后再读取业务功能程序创建和启动第二个容器,从而使驻守程序一对一地检测容器状态。
[0076]
由此,本技术实施例提出的容器状态监控方法,通过使驻守程序先于业务功能程序而启动的方式,能够确保容器开始运行时驻守程序必然已经处于运行状态,因此驻守程序能够充分检测到容器自运行之初至运行结束全程的状态信息。
[0077]
进一步地,状态信息还可以包括容器的标识信息。
[0078]
需要说明的是,标识信息为容器的身份信息,是将每一个容器与其他容器相区分的“身份证号”。例如,标识信息可以由容器所在容器状态检测装置的ip地址和容器在该容器状态检测装置的容器编号两部分组成,此时即便同时存在多个容器状态检测装置且每个容器状态检测装置存在多个同时运行的容器,也可以通过解析标识信息定位该标识信息指向的是哪一容器状态检测装置的哪一容器。除标识信息以外,状态信息中还包括指标信息。指标信息为一项或多项衡量容器状态的信息,例如容器名称、cpu、内存、容器内各进程、gpu等。不同于标识信息,指标信息的内容可以重复。
[0079]
如图6所示,获取状态信息的更新时间,包括,
[0080]
步骤1021,接收状态信息。
[0081]
步骤1022,提取状态信息中的标识信息。
[0082]
其中,容器状态接收装置在接收状态信息后提取状态信息中的标识信息。可选的,容器可以在被创建时自行生成标识信息并发送至驻守程序,驻守程序也可以在首次检测特定容器的状态信息时为其分配标识信息。
[0083]
具体而言,容器状态接收装置提取状态信息中由ip地址和容器编号构成的标识信息,根据标识信息确定状态信息来自于该ip所标识的容器状态检测装置中该容器编号所指向的容器。
[0084]
步骤1023,查询容器状态接收装置内是否已存储含同一标识信息的状态信息。
[0085]
步骤1024,根据标识信息更新标识信息对应的容器的状态信息,并生成更新时间。
[0086]
其中,容器状态接收装置首先根据已提取的标识信息查询服务器内是否已存储含同一标识信息的状态信息,如已经存储,则用收到的状态信息替换已存储的状态信息,如尚
未存储,则存储接收到的状态信息。此外,容器状态接收装置获取接收状态信息时容器状态接收装置的本地时间作为更新时间,与状态信息一并存储,可选的,容器状态接收装置也可以读取状态信息自身携带的时间,即驻守程序在检测到容器运行的状态信息时的时间作为更新时间,并与状态信息一并进行存储。
[0087]
作为一个可选实施例,在容器状态接收装置内设置信息接收模块,信息接收模块提取状态信息中的标识信息,并依据标识信息对标识信息对应的状态信息进行更新,以及生成更新时间。具体而言,首先在容器状态接收装置内搭建数据库,数据库创建用以存储状态信息和更新时间的第一数据表。信息接收模块在接收到状态信息时提取状态信息中的标识信息,根据已提取的标识信息查询第一数据表内是否已存储含同一标识信息的状态信息,如已经存储,则用接收到的状态信息替换第一数据表内已存储的状态信息,如尚未存储,则在第一数据表中存储接收到的状态信息。此外,信息接收模块在接收状态信息时获取容器状态接收装置的本地时间作为更新时间,与该状态信息一并存入第一数据表。
[0088]
由此,本技术实施例提出的容器状态监控方法,通过为容器增加标识信息的方式,能够实现以标识信息将不同容器的状态信息进行区分,同时,依据标识信息对已存储的状态信息进行更新,能够确保针对某一特定容器,容器状态接收装置中不产生重复数据,避免针对同一容器存储多条数据,从而导致容器状态判定出错。
[0089]
进一步地,如图7所示,根据更新时间确定容器发生状态异常,包括,
[0090]
步骤1031,读取预设阈值,依据预设阈值得出检测频率。
[0091]
需要说明的是,容器状态接收装置依据一定的预设阈值对更新时间进行检测,从而判定容器是否发生状态异常。例如,某容器对应的预设阈值为2秒,则容器状态接收装置以2秒/次的检测频率对该容器的更新时间进行检测。在本发明中,预设阈值是某一标识信息自某次生成对应更新时间起,至同一标识信息下一次生成对应更新时间止,其间允许存在的最大时间间隔。预设阈值可由用户预先设定,可通过有限次实验获取,也可通过有限次计算机仿真得到。
[0092]
步骤1032,遵照检测频率周期性获取当前时间。
[0093]
具体而言,如果依据预设阈值得到的检测频率为2秒/次,则容器状态接收装置自首次检测某容器的更新时间后,每过2秒重复一次检测该容器更新时间的行为。
[0094]
步骤1033,获取当前时间与更新时间之间的时间差。
[0095]
作为一个可选实施例,在容器状态接收装置内搭建数据库,数据库创建用以存储不同标识信息及标识信息所对应预设阈值的第二数据表。在检测到第二数据表中存储有标识信息及对应预设阈值时,容器状态接收装置中的状态判定模块首先自第二数据表内读取标识信息及对应预设阈值,依据预设阈值得出对应检测频率,例如预设阈值为2秒,则检测频率为2秒/次。同时状态判定模块获取第三当前时间即当前时间。在获取当前时间后,状态判定模块依据标识信息从第一数据表中读取标识信息对应的更新时间,并计算当前时间与更新时间之间的时间差。例如,状态判定模块读取第一数据表中某标识信息所对应的更新时间为22时22分22秒,且状态判定模块获取当前时间为22时22分32秒,则状态判定模块计算得出该标识信息对应状态信息的更新时间与当前时间的时间差为10秒。
[0096]
在第一次获取当前时间后,状态判定模块继续以得出的检测频率获取当前时间,依据标识信息在第一数据表中读取对应更新时间并计算当前时间与更新时间之间的时间
差。
[0097]
步骤1034,在时间差大于预设阈值时,确定容器发生状态异常。
[0098]
需要说明的是,由于预设阈值是针对同一标识信息前后两次生成更新时间之间允许存在的最大时间间隔,因此,当容器状态接收装置依据预设阈值所对应的检测频率获取当前时间,并计算得到该当前时间与更新时间之间的时间差大于预设阈值时,意味着自生成最近一次的更新时间起,已超出该最大时间间隔但仍未生成下一次的更新时间,因此可确定容器状态发生异常。
[0099]
其中,容器状态接收装置在计算出当前时间和更新时间的时间差后,将其与预设阈值相比较,当时间差小于或等于预设阈值时,容器状态接收装置判定容器状态正常,反之,则判定容器状态异常。随后容器状态接收装置对判定结果进行可视化并显示在可视界面中,并在判定容器状态异常时报警。可选的,容器状态接收装置还可以将状态信息和更新时间也显示在可视界面中。
[0100]
作为一个可选实施例,容器状态接收装置内的状态判定模块在计算出当前时间和更新时间的时间差后,将预设阈值和时间差相比较,当时间差小于或等于预设阈值时,容器状态接收装置判定容器状态正常,反之,则判定容器状态异常。得出判定结果后,状态判定模块将其传递给可视化模块,以可视化的方式在用户可见的屏幕上显示容器状态正常或者异常结果,并在显示异常结果时触发警报。此外,状态判定模块将状态信息与更新时间传递给可视化模块,可视化模块将状态信息与更新时间显示在用户可见的屏幕上。
[0101]
作为一个可选实施例,容器状态检测装置中可以创建和运行支持同一类型业务功能的多个容器,例如,容器状态检测装置中可以创建和运行三个支持人脸识别业务功能(以m指代)的容器m1、m2、m3。可选的,容器状态检测装置中可以创建和运行支持多类型业务功能的多个容器,且同一类型业务功能对应一个特定容器,例如,容器状态检测装置中可以创建和运行一个支持人脸识别业务功能(以m指代)的容器m1、一个支持身份认证业务功能(以n指代)的容器n1以及一个支持行业分析业务功能(以k指代)的容器k1。可选的,容器状态检测装置中可以创建和运行支持多类型业务功能的多个容器,且同一类型业务功能对应多个容器,例如,容器状态检测装置中可以创建和运行三个支持人脸识别业务功能(以m指代)的容器m1、m2、m3,两个支持身份认证业务功能(以n指代)的容器n1、n2,以及四个支持行业分析业务功能(以k指代)的容器k1、k2、k3、k4。
[0102]
以下为本发明的一个具体实施例。假设ip地址为“1.1.1.1”的容器状态检测装置从云端镜像仓库中下载包含驻守程序和业务功能程序的镜像文件,随后,容器状态检测装置开始执行该镜像文件,从起始位置开始读取镜像文件的内容。由于镜像文件中驻守程序被写于业务功能程序的前面,因此容器状态检测装置首先读取驻守程序文件并按照驻守程序文件启动驻守程序,驻守程序实时监听是否有容器开始运行,随后容器状态检测装置读取业务功能程序文件,业务功能程序运行后创建并启动一个用以实现人脸识别业务功能的容器。此时驻守程序监听到该容器开始运行,于是首次检测其状态,获得该容器名称为“xbrain

api”、cpu占用百分比为“0.3”、内存占用百分比为“2.9”及该容器在运行其识别人脸功能时获得的具体数据(即容器日志数据)“眼间距6.3cm”。驻守程序将以上信息作为指标信息,同时为该容器分配容器编号101,从而获得以“ip地址:容器编号”为格式的标识信息“1.1.1.1:101”。
[0103]
获得标识信息和指标信息后,驻守程序将包含标识信息和指标信息的状态信息发送至容器状态接收装置,同时将用户预先针对该容器设定的预设阈值2秒发送至容器状态接收装置。假设容器状态检测装置与容器状态接收装置之间存在0.1秒的最大网络延迟,则驻守程序在首次检测容器状态后可以每间隔1.9秒重复执行一次检测该容器运行的状态信息并将检测结果发送至容器状态接收装置的行为,以确保在该容器运行正常的前提下,容器状态接收装置能够至多每间隔2秒接收一次该容器的状态信息。
[0104]
在接收来自容器状态检测装置驻守程序的状态信息之前,容器状态接收装置预先搭建数据库并在数据库内创建空白的容器状态数据表,在容器状态数据表中设置标识信息字段id、指标信息字段info和更新时间字段update_time三项数据,具体符合如下规则:
[0105][0106][0107]
数据表创建完成后,容器状态接收装置中的信息接收模块接收来自容器状态检测装置驻守程序的状态信息,并提取状态信息中的标识信息“1.1.1.1:101”。随后信息接收模块以状态信息所含标识信息“1.1.1.1:101”为条件,对容器状态数据表进行查询,发现未在数据表中查询到含同一标识信息的数据,因此将该条状态信息依据对应字段存储在容器状态数据表中如下:
[0108][0109]
在自容器状态检测装置驻守程序接收到该状态信息的同时,信息接收模块解析该状态信息,判定状态信息自身未携带时间,于是获取容器状态接收装置在接收到该状态信息时的本地时间,假设此时容器状态检测装置与容器状态接收装置之间未发生网络延迟,且容器状态检测装置发送状态信息的时间是22时22分22秒,则该时间即信息接收模块获取的本地时间,也即该状态信息的更新时间。信息接收模块将更新时间依据对应字段存储在容器状态数据表内与该状态信息对应的栏目中如下:
[0110][0111]
自首次检测容器101的运行状态1.9秒后,驻守程序再次检测该容器运行状态,获得容器名称为“xbrain

api”、cpu占用百分比为“0.4”、内存占用百分比为“1.2”及该容器在运行其识别人脸功能时获得的具体数据“脸宽14.1cm”的指标信息,随后驻守程序将包含该指标信息和标识信息“1.1.1.1:101”的状态信息发送至容器状态接收装置。
[0112]
容器状态接收装置中的信息接收模块接收来自容器状态检测装置驻守程序的该状态信息,并提取状态信息中的标识信息“1.1.1.1:101”。随后信息接收模块以状态信息所含标识信息“1.1.1.1:101”为条件,对容器状态数据表进行查询,发现数据表中能够查询到含同一标识信息的数据,因此替换数据表内查询到的数据的状态信息如下:
[0113][0114]
在自容器状态检测装置驻守程序接收到该状态信息的同时,信息接收模块解析该状态信息,判定状态信息自身未携带时间,于是获取容器状态接收装置在接收到该状态信息时的本地时间,假设此时容器状态检测装置与容器状态接收装置之间发生了0.1秒的网络延迟,则容器状态检测装置发送状态信息的时间是22时22分23.9秒,而信息接收模块获取的本地时间是22时22分24秒,即该状态信息的更新时间。信息接收模块将更新时间依据对应字段替换在容器状态数据表内与该状态信息对应的原更新时间“22:22:22”如下:
[0115][0116]
在接收来自容器状态检测装置驻守程序的状态信息之前,容器状态接收装置在预先搭建的数据库内创建空白的预设阈值数据表,在预设阈值数据表中设置标识信息字段id和预设阈值字段threshold_time两项数据,具体符合如下规则:
[0117][0118]
由于驻守程序将预设阈值2秒发送至容器状态接收装置,接收到驻守程序发来的预设阈值后,容器状态接收装置计算出对应的检测频率为2秒/次,并将预设阈值写入预设阈值数据表中对应标识信息的数据栏如下:
[0119]
idthreshold_time1.1.1.1:1012......
[0120]
容器状态接收装置的状态判定模块在检测到预设阈值数据表中存储有标识信息及对应预设阈值后,读取标识信息“1.1.1.1:101”及预设阈值2秒,从而计算出对应检测频率为2秒/次。
[0121]
假设状态判定模块在某一时刻获得当前时间为22时22分25秒,获得当前时间后,状态判定模块依据标识信息“1.1.1.1:101”在容器状态数据表内读取对应的更新时间为22时22分24秒,计算得到当前时间与更新时间的时间差1秒,随后状态判定模块将时间差1秒与预设阈值2秒进行比较,认定时间差小于预设阈值,并由此判定该标识信息指向容器运行状态正常,并将容器运行状态正常的判定结果发送至可视化模块。
[0122]
可视化模块可以通过主机屏幕呈现可视化后的信息,如图8所示,可视化模块以四列构成的表格形式在主机屏幕上进行可视化显示。表格的四列从左至右分别为标识信息栏、指标信息栏、更新时间栏和状态正常/异常栏。可视化模块直接从数据库的容器状态数据表中读取标识信息、指标信息以及更新时间填入表格的对应栏目,以向用户进行容器状态信息的直观呈现。
[0123]
当可视化模块收到容器运行状态正常的判定结果后,则在表格中查询标识信息为“1.1.1.1:101”的数据,在对应的状态正常/异常栏中显示对勾符号,以表示容器运行正常,无需人工干预。
[0124]
由于检测频率为2秒/次,在上一次获取当前时间为22时22分25秒后,状态判定模
块等待2秒后再次获取当前时间为22时22分27秒。假设此时容器编号101的容器发生异常,驻守程序未能检测到该容器的状态信息并发送至容器状态接收装置,因此容器状态数据表中标识信息“1.1.1.1:101”对应的更新时间依然为“22:22:24”。此时状态判定模块依据标识信息“1.1.1.1:101”在容器状态数据表内读取对应的更新时间也依然为22时22分24秒,计算得出当前时间与更新时间的时间差3秒,经比较认定时间差大于预设阈值,状态判定模块由此判定该标识信息指向容器运行状态异常,并将该判定结果发送至可视化模块。
[0125]
如图9所示,当可视化模块收到容器运行状态异常的判定结果后,则在表格中查询标识信息为“1.1.1.1:101”的数据,在对应的状态正常/异常栏中显示感叹符号,以表示该容器状态异常。此外,界面上跳出深色对话框,在对话框中显示状态异常的容器对应的标识信息和“该容器运行状态异常!请及时处理!”的提示,以帮助用户迅速定位发生异常的容器。同时可视化模块发出警报声,以期尽快获得人工干预。
[0126]
另外,可视化模块也可以在移动端屏幕呈现可视化后的信息,以便于监控人员在非工作时间进行查看。如图10所示,可视化模块以四列构成的表格形式在移动端屏幕上进行可视化显示。表格的四列从左至右分别为标识信息栏、指标信息栏、更新时间栏和状态正常/异常栏。可视化模块直接从数据库的容器状态数据表中读取标识信息、指标信息以及更新时间填入表格的对应栏目,以向用户进行容器状态信息的直观呈现。
[0127]
当可视化模块收到容器运行状态正常的判定结果后,则在表格中查询标识信息为“1.1.1.1:101”的数据,在对应的状态正常/异常栏中显示对勾符号,以表示容器运行正常,无需人工干预。
[0128]
由于检测频率为2秒/次,在上一次获取当前时间为22时22分25秒后,状态判定模块等待2秒后再次获取当前时间为22时22分27秒。假设此时容器编号101的容器发生异常,驻守程序未能检测到该容器的状态信息并发送至容器状态接收装置,因此容器状态数据表中标识信息“1.1.1.1:101”对应的更新时间依然为“22:22:24”。此时状态判定模块依据标识信息“1.1.1.1:101”在容器状态数据表内读取对应的更新时间也依然为22时22分24秒,计算得出当前时间与更新时间的时间差3秒,经比较认定时间差大于预设阈值,状态判定模块由此判定该标识信息指向容器运行状态异常,并将该判定结果发送至可视化模块。
[0129]
如图11所示,当可视化模块收到容器运行状态异常的判定结果后,则在表格中查询标识信息为“1.1.1.1:101”的数据,在对应的状态正常/异常栏中显示感叹符号,以表示该容器状态异常。此外,界面上跳出深色对话框,在对话框中显示状态异常的容器对应的标识信息和“该容器运行状态异常!请及时处理!”的提示,以帮助用户迅速定位发生异常的容器。同时可视化模块发出警报声,以期尽快获得人工干预。
[0130]
综上所述,本技术通过以容器状态接收装置接收自容器状态检测装置发送的状态信息并进行持久化和可视化处理,能够实现对多个容器状态的及时检测和反馈,便于相关人员同时监控和管理大量容器,并针对容器异常情况及时进行人工干预。
[0131]
图12为本技术实施例提出的一种容器状态接收装置的方框示意图.如图12所示,容器状态接收装置10包括:
[0132]
接收模块11,用于接收容器运行的状态信息,状态信息通过驻守程序监测获取,驻守程序写在用于部署容器的镜像文件中;
[0133]
获取模块12,用于获取状态信息的更新时间;
[0134]
确定模块13,用于根据更新时间,确定容器发生状态异常。
[0135]
在一些实施例中,确定模块13,用于:
[0136]
获取当前时间与更新时间之间的时间差;
[0137]
在时间差大于预设阈值时,确定容器发生状态异常。
[0138]
在一些实施例中,获取模块12,用于:
[0139]
提取状态信息中的标识信息;
[0140]
根据标识信息更新标识信息对应的容器的状态信息,并生成更新时间。
[0141]
在一些实施例中,镜像文件还包括用于部署容器的业务功能程序,驻守程序被设置为执行业务功能程序的前置程序。
[0142]
综上所述,本技术通过以容器状态接收装置接收自容器状态检测装置发送的状态信息并进行持久化和可视化处理,能够实现对多个容器状态的及时检测和反馈,便于相关人员同时监控和管理大量容器,并针对容器异常情况及时进行人工干预。
[0143]
图13为本技术实施例提出的一种容器状态检测装置的方框示意图。如图13所示,容器状态检测装置用于部署容器的镜像文件中写有业务功能程序和驻守程序,其中,容器状态检测装置20包括:
[0144]
执行模块21,用于执行驻守程序以获取基于业务功能部署的容器的状态信息;
[0145]
上报模块22,用于将状态信息上报至容器状态接收装置,以使容器状态接收装置根据状态信息识别容器是否发生状态异常。
[0146]
在一些实施例中,驻守程序被设置为执行业务功能程序的前置程序。
[0147]
应当理解,容器状态接收装置中记载的诸单元或模块与参考图2描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于容器状态接收装置及其中包含的单元,在此不再赘述。容器状态接收装置可以预先实现在电子设备的浏览器或其他安全应用中,也可以通过下载等方式而加载到电子设备的浏览器或其安全应用中。容器状态接收装置中的相应单元可以与电子设备中的单元相互配合以实现本技术实施例的方案。
[0148]
在上文详细描述中提及的若干模块或者单元,这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
[0149]
需要说明的是,本技术实施例的容器状态接收装置和容器状态检测装置中未披露的细节,请参照本技术上述实施例中所披露的细节,这里不再赘述。
[0150]
下面参考图12,图12示出了适于用来实现本技术实施例的电子设备或服务器的计算机系统的结构示意图,
[0151]
如图12所示,计算机系统包括中央处理单元(cpu)1001,其可以根据存储在只读存储器(rom)1002中的程序或者从存储部分1008加载到随机访问存储器(ram)1003中的程序而执行各种适当的动作和处理。在ram1003中,还存储有系统的操作指令所需的各种程序和数据。cpu1001、rom1002以及ram1003通过总线1004彼此相连。输入/输出(i/o)接口1005也连接至总线1004。
[0152]
以下部件连接至i/o接口1005;包括键盘、鼠标等的输入部分1006;包括诸如阴极
射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至i/o接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
[0153]
特别地,根据本技术的实施例,上文参考流程图图2描述的过程可以被实现为计算机软件程序。例如,本技术的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理单元(cpu)1001执行时,执行本技术的系统中限定的上述功能。
[0154]
需要说明的是,本技术所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以为的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
[0155]
附图中的流程图和框图,图示了按照本技术各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作指令。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,前述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以不同于附图中所标注的顺序发生。例如,两个连接表示的方框实际上可以基本并行地执行,他们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作指令的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0156]
描述于本技术实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括信息接收模块和状态判定模块。其中,这些单元或模块的名称在某种情况
下并不构成对该单元或模块本身的限定,例如,状态判定模块,还可以被描述为“获取当前时间与所述更新时间之间的时间差,在所述时间差大于预设阈值时,确定所述容器发生状态异常。”。
[0157]
作为另一方面,本技术还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的,也可以是单独存在,而未装配入该电子设备中的。上述计算机可读存储介质存储有一个或多个程序,当上述程序被一个或者一个以上的处理器用来执行描述于本技术的容器状态监控方法。
[0158]
以上描述仅为本技术的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本技术中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离前述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其他技术方案。例如上述特征与本技术中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1