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

容器组临时存储容量的确定方法、装置及电子设备

文献发布时间:2024-04-18 20:01:30


容器组临时存储容量的确定方法、装置及电子设备

技术领域

本申请涉及云计算技术领域、金融科技领域和其他技术领域,具体而言,涉及一种容器组临时存储容量的确定方法、装置及电子设备。

背景技术

目前,在K8s集群中可以通过多种监控系统或监控工具对集群中的容器进行监控,以确保容器的正常运行,和及时地响应容器的异常信息。

现有技术中,可以通过监控工具Cadvisor在K8s集群中采集容器和容器组的指标数据,再通过监控系统Prometheus采集Cadvisor中的数据,将容器的指标数据展示给工作人员或运维人员。

具体地,图1是Cadvisor在集群中采集容器的指标数据的流程示意图。如图1所示,首先检测集群中是否存在新启动的容器,在有新启动的容器的情况下,启动对新容器的监控服务,然后每隔一定时间计算该容器根文件系统的临时存储容量,并将结果缓存在内存中,最后通过Cadvisor的metrics接口从内存中获取临时存储容量,并通过相同的方法返回该容器所属容器组中所有容器根文件系统的临时存储容量。这种方法通过metrics接口获取到了容器组中根文件系统的临时存储容量,但缺失了容器组emptydir卷中的临时存储容量,导致统计到的临时存储容量不准确的问题。

图2是通过Prometheus汇总容器组的临时存储容量的流程示意图。如图2所示,首先Prometheus访问Cadvisor的metrics接口,Cadvisor返回容器组中所有容器根文件系统的临时存储容量,然后Prometheus根据每个容器的容器组标签汇总同一个容器组的临时存储容量。

监控工具Cadvisor在K8s集群中采集容器和容器组的指标数据时,仅采集了容器根目录中的临时存储容量,对于容器组中emptydir卷的指标数据则缺失采集,致使Prometheus无法一次性采集到容器组的所有指标数据,导致运维人员无法有效地衡量整个存储系统的使用情况。同时由于emptydir卷不属于容器组中任何一个业务容器,因此不能将其重复归并到每个业务容器的中临时存储容量进行计算。

现有技术中,还可以通过kubelet中eviction-Manager在K8s集群中采集容器和容器组的指标数据。

具体地,图3是eviction-Manager在集群中采集容器的指标数据的流程示意图。如图3所示,首先eviction-Manager获取所有容器组,得到容器组列表,然后eviction-manager调用cadvisor查询每个容器组的所有容器根文件系统的临时存储容量,若查询到的容器是pause容器,则不计算pause容器的临时存储容量,最后计算容器组中emptydir卷的临时存储容量,并累加到该容器组的临时存储总量中。但这种方法仅能在kubelet内部看到容器组的临时存储总量,并且仅能看到整个容器组的临时存储总量,无法具体展示每个容器的临时存储总量,不利于运维人员的维护工作,降低了运维人员的工作效率。

针对相关技术中采集容器组的临时存储容量的指标数据时,无法准确地采集到容器组中所有的临时存储容量,导致运维人员无法准确地衡量容器组所占用的存储空间的问题,目前尚未提出有效的解决方案。

发明内容

本申请的主要目的在于提供一种容器组临时存储容量的确定方法、装置及电子设备,以解决相关技术中采集容器组的临时存储容量的指标数据时,无法准确地采集到容器组中所有的临时存储容量,导致运维人员无法准确地衡量容器组所占用的存储空间的问题。

为了实现上述目的,根据本申请的一个方面,提供了一种容器组临时存储容量的确定方法,该方法包括:在集群中存在目标容器的情况下,获取所述目标容器的容器信息,其中,所述目标容器是指所述集群中启动时长不超过第一预设时长的容器;依据所述容器信息计算目标卷的存储容量,得到第一存储容量,其中,所述目标卷用于存储所述目标容器所属容器组共享的临时数据;依据所述容器信息计算所述目标容器的根文件系统中临时数据的存储容量,得到第二存储容量;通过容器监控系统对所述第一存储容量和所述第二存储容量进行处理,确定所述容器组的临时存储容量。

进一步地,获取所述目标容器的容器信息包括:通过命令行工具获取所述目标容器的容器名称,得到目标名称;依据所述目标名称确定所述目标容器的容器信息。

进一步地,依据所述容器信息计算目标卷的存储容量,得到第一存储容量包括:在所述目标名称为预设字符串的情况下,获取所述目标容器的标签信息,得到目标标签;依据所述目标标签确定所述容器组的容器ID,得到目标容器ID;依据所述目标容器ID确定所述目标卷的文件路径,得到第一文件路径;依据所述第一文件路径确定所述目标卷中存储的临时数据,得到第一临时数据;每经过第二预设时长确定所述第一临时数据占用的存储空间,得到所述第一存储容量。

进一步地,依据所述容器信息计算所述目标容器的根文件系统中临时数据的存储容量,得到第二存储容量包括:在所述目标名称不为所述预设字符串的情况下,依据所述目标名称获取所述目标容器的根文件系统的临时数据的文件路径,得到第二文件路径;依据所述第二文件路径确定所述根文件系统中存储的临时数据,得到第二临时数据;每经过所述第二预设时长确定所述第二临时数据占用的存储空间,得到所述第二存储容量。

进一步地,通过容器监控系统对所述第一存储容量和所述第二存储容量进行处理,确定所述容器组的临时存储容量包括:将所述第一存储容量和所述第二存储容量写入内存中;将所述内存中的所述第一存储容量和所述第二存储容量传输至所述容器监控系统中,其中,所述容器监控系统依据容器的标签信息和所述第二存储容量确定所述容器组中每个容器的临时存储容量;依据所述容器组中每个容器的临时存储容量和所述第一存储容量确定所述容器组的临时存储容量。

进一步地,将所述内存中的所述第一存储容量和所述第二存储容量传输至所述容器监控系统中包括:通过容器监控工具的目标接口获取所述内存中的所述第一存储容量和所述第二存储容量,其中,所述目标接口是指获取容器指标数据的接口;通过所述容器监控工具将所述第一存储容量和所述第二存储容量传输至所述容器监控系统中。

进一步地,在通过容器监控系统对所述第一存储容量和所述第二存储容量进行处理,确定所述容器组的临时存储容量之后,所述方法还包括:获取所述集群中所述容器组中存储的目标数据,其中,所述目标数据是指所述容器组中除所述临时存储容量包括的数据之外的数据;在所述临时存储容量和所述目标数据的存储容量的和超过预设存储容量的情况下,生成所述容器组的存储容量的报警信息;将所述报警信息发送至目标对象,其中,所述目标对象依据所述报警信息对所述容器组进行处理。

为了实现上述目的,根据本申请的另一方面,提供了一种容器组临时存储容量的确定装置,该装置包括:第一获取单元,用于在集群中存在目标容器的情况下,获取所述目标容器的容器信息,其中,所述目标容器是指所述集群中启动时长不超过第一预设时长的容器;第一计算单元,用于依据所述容器信息计算目标卷的存储容量,得到第一存储容量,其中,所述目标卷用于存储所述目标容器所属容器组共享的临时数据;第二计算单元,用于依据所述容器信息计算所述目标容器的根文件系统中临时数据的存储容量,得到第二存储容量;确定单元,用于通过容器监控系统对所述第一存储容量和所述第二存储容量进行处理,确定所述容器组的临时存储容量。

进一步地,所述获取单元包括:第一获取子单元,用于通过命令行工具获取所述目标容器的容器名称,得到目标名称;第一确定子单元,用于依据所述目标名称确定所述目标容器的容器信息。

进一步地,所述第一计算单元包括:第二获取子单元,用于在所述目标名称为预设字符串的情况下,获取所述目标容器的标签信息,得到目标标签;第二确定子单元,用于依据所述目标标签确定所述容器组的容器ID,得到目标容器ID;第三确定子单元,用于依据所述目标容器ID确定所述目标卷的文件路径,得到第一文件路径;第四确定子单元,用于依据所述第一文件路径确定所述目标卷中存储的临时数据,得到第一临时数据;第五确定子单元,用于每经过第二预设时长确定所述第一临时数据占用的存储空间,得到所述第一存储容量。

进一步地,所述第二计算单元包括:第三获取子单元,用于在所述目标名称不为所述预设字符串的情况下,依据所述目标名称获取所述目标容器的根文件系统的临时数据的文件路径,得到第二文件路径;第六确定子单元,用于依据所述第二文件路径确定所述根文件系统中存储的临时数据,得到第二临时数据;第七确定子单元,用于每经过所述第二预设时长确定所述第二临时数据占用的存储空间,得到所述第二存储容量。

进一步地,所述确定单元包括:写入子单元,用于将所述第一存储容量和所述第二存储容量写入内存中;传输子单元,用于将所述内存中的所述第一存储容量和所述第二存储容量传输至所述容器监控系统中,其中,所述容器监控系统依据容器的标签信息和所述第二存储容量确定所述容器组中每个容器的临时存储容量;第八确定子单元,用于依据所述容器组中每个容器的临时存储容量和所述第一存储容量确定所述容器组的临时存储容量。

进一步地,所述传输子单元包括:获取模块,用于通过容器监控工具的目标接口获取所述内存中的所述第一存储容量和所述第二存储容量,其中,所述目标接口是指获取容器指标数据的接口;传输模块,用于通过所述容器监控工具将所述第一存储容量和所述第二存储容量传输至所述容器监控系统中。

进一步地,所述装置还包括:第二获取单元,用于在通过容器监控系统对所述第一存储容量和所述第二存储容量进行处理,确定所述容器组的临时存储容量之后,获取所述集群中所述容器组中存储的目标数据,其中,所述目标数据是指所述容器组中除所述临时存储容量包括的数据之外的数据;生成单元,用于在所述临时存储容量和所述目标数据的存储容量的和超过预设存储容量的情况下,生成所述容器组的存储容量的报警信息;发送单元,用于将所述报警信息发送至目标对象,其中,所述目标对象依据所述报警信息对所述容器组进行处理。

为了实现上述目的,根据本申请的一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述任意一项所述容器组临时存储容量的确定方法。

为了实现上述目的,根据本申请的一个方面,提供了一种电子设备,包括一个或多个处理器和存储器,存储器用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述任意一项所述容器组临时存储容量的确定方法。

通过本申请,采用以下步骤:在集群中存在目标容器的情况下,获取所述目标容器的容器信息,其中,所述目标容器是指所述集群中启动时长不超过第一预设时长的容器;依据所述容器信息计算目标卷的存储容量,得到第一存储容量,其中,所述目标卷用于存储所述目标容器所属容器组共享的临时数据;依据所述容器信息计算所述目标容器的根文件系统中临时数据的存储容量,得到第二存储容量;通过容器监控系统对所述第一存储容量和所述第二存储容量进行处理,确定所述容器组的临时存储容量,解决了相关技术中采集容器组的临时存储容量的指标数据时,无法准确地采集到容器组中所有的临时存储容量,导致运维人员无法准确地衡量容器组所占用的存储空间的问题。通过确定目标容器和目标容器的容器信息,能够获取到目标容器所属容器组中目标卷的临时数据的存储容量,以及每个容器的根文件目录下临时数据的存储容量,从而能够准确地获取到该容器组中临时数据的存储容量,避免了该容器组中部分临时数据没有被统计,使得错误地确定该容器组占用的存储空间,进而导致应用程序崩溃或集群性能下降的问题,提高了运维人员的工作效率,达到了提高业务稳定性和服务可用性的效果。

附图说明

构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请实施例一提供的现有的容器组临时存储容量的采集方法的示意图一;

图2是根据本申请实施例一提供的现有的容器组临时存储容量的采集方法的示意图二;

图3是根据本申请实施例一提供的现有的容器组临时存储容量的采集方法的示意图三;

图4是根据本申请实施例一提供的容器组临时存储容量的确定方法的流程图;

图5是根据本申请实施例一提供的可选的容器组临时存储容量的确定方法的示意图;

图6是根据本申请实施例二提供的容器组临时存储容量的确定装置的示意图;

图7是根据本申请实施例五提供的容器组临时存储容量的确定电子设备的示意图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

需要说明的是,本申请文件的处理方法、装置、处理器及电子设备确定的方法和装置可用于金融科技领域在运维人员管理容器组的存储空间时,提高了运维人员的工作效率,也可用于除金融科技领域之外的任意领域,本申请文件的处理方法、装置、处理器及电子设备的方法和装置的应用领域不做限定。

需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息、集群中存储的用户信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据、集群中存储的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:

Cadvisor是一款开源的容器性能监控工具,全称为Container Advisor。它是由Google开发并维护的项目,用于监控容器的资源使用情况和性能指标。Cadvisor可以监控多种容器平台上运行的容器,如Docker、Kubernetes等。它提供了实时的容器资源使用情况统计,包括CPU、内存、网络、磁盘等方面的指标。同时,Cadvisor还可以通过收集容器的性能数据,生成可视化的图表和报告,方便用户进行性能分析和故障排查。

Prometheus是一款开源的监控和报警系统,它可以收集各种指标数据,并提供强大的查询语言和灵活的报警规则配置。在Kubernetes中,Prometheus可以通过与Kubernetes API交互,自动发现和监控各个组件和服务的运行状态和性能指标、资源使用情况、节点和容器的健康状态、网络流量、应用程序的请求和响应时间等等。

实施例一

下面结合优选的实施步骤对本发明进行说明,图4是根据本申请实施例一提供的容器组临时存储容量的确定方法的流程图,如图4所示,该方法包括如下步骤:

步骤S401,在集群中存在目标容器的情况下,获取目标容器的容器信息,其中,目标容器是指集群中启动时长不超过第一预设时长的容器。

在本实施例一中,集群可以是通过Kubernetes(K8s)管理集群节点和容器化应用程序的集群,K8s集群是一个开源的容器编排系统,用于自动化部署、扩展和操作容器化的应用程序。目标容器是指集群中新启动的容器,即上述的集群中启动时长不超过第一预设时长的容器。目标容器的容器信息包括但不限于目标容器的容器名称、容器ID、创建时间和标签信息等信息。

步骤S402,依据容器信息计算目标卷的存储容量,得到第一存储容量,其中,目标卷用于存储目标容器所属容器组共享的临时数据。

在本实施例一中,容器组(pod)是K8s集群中由至少一个容器组成的。目标卷是指K8s集群中目标容器所属容器组中所有容器的共享临时文件或目录,即emptydir卷。emptydir卷是K8s集群中的一个卷类型,是一个空目录,由K8s集群自动创建并挂载到容器组中,提供给该容器组内的容器使用。

步骤S403,依据容器信息计算目标容器的根文件系统中临时数据的存储容量,得到第二存储容量。

在本实施例一中,目标容器的根文件系统是指目标容器中文件系统的根目录,根目录是目标容器内部所有文件和目录的起点。目标容器的根文件系统中除了包括持久存储的数据之外,还包括临时存储的数据(即上述的目标容器的根文件系统中临时数据)。

步骤S404,通过容器监控系统对第一存储容量和第二存储容量进行处理,确定容器组的临时存储容量。

在本实施例一中,通过计算目标容器所属容器组中每个容器的临时数据的存储容量(即上述的第二存储容量),以及该容器组中目标卷(即emptydir卷)的临时数据的存储容量(即上述的第一存储容量),确定该容器组中准确的临时存储容量。

综上所述,本申请实施例一提供的容器组临时存储容量的确定方法,通过在集群中存在目标容器的情况下,获取目标容器的容器信息,其中,目标容器是指集群中启动时长不超过第一预设时长的容器;依据容器信息计算目标卷的存储容量,得到第一存储容量,其中,目标卷用于存储目标容器所属容器组共享的临时数据;依据容器信息计算目标容器的根文件系统中临时数据的存储容量,得到第二存储容量;通过容器监控系统对第一存储容量和第二存储容量进行处理,确定容器组的临时存储容量,解决了相关技术中采集容器组的临时存储容量的指标数据时,无法准确地采集到容器组中所有的临时存储容量,导致运维人员无法准确地衡量容器组所占用的存储空间的问题。通过确定目标容器和目标容器的容器信息,能够获取到目标容器所属容器组中目标卷的临时数据的存储容量,以及每个容器的根文件目录下临时数据的存储容量,从而能够准确地获取到该容器组中临时数据的存储容量,避免了该容器组中部分临时数据没有被统计,使得错误地确定该容器组占用的存储空间,进而导致应用程序崩溃或集群性能下降的问题,提高了运维人员的工作效率,达到了提高业务稳定性和服务可用性的效果。

可选地,在本申请实施例一提供的容器组临时存储容量的确定方法中,获取目标容器的容器信息包括:通过命令行工具获取目标容器的容器名称,得到目标名称;依据目标名称确定目标容器的容器信息。

在本实施例一中,可以通过Docker命令行获取目标容器的容器名称,例如,若输入docker ps,则返回所有正在运行的容器的基本信息,包括:容器ID、容器名称、使用的镜像信息、端口映射等信息;若输入docker logs[目标容器的容器ID或目标容器的容器名称],则返回目标容器输出的日志信息。除此之外,还可以通过CRI客户端反向查询目标容器的容器信息。

通过查询目标容器的容器名称和其它容器信息,有利于确定目标容器所属的容器组以及获取该容器组中目标卷的临时数据的存储路径。

可选地,在本申请实施例一提供的容器组临时存储容量的确定方法中,依据容器信息计算目标卷的存储容量,得到第一存储容量包括:在目标名称为预设字符串的情况下,获取目标容器的标签信息,得到目标标签;依据目标标签确定容器组的容器ID,得到目标容器ID;依据目标容器ID确定目标卷的文件路径,得到第一文件路径;依据第一文件路径确定目标卷中存储的临时数据,得到第一临时数据;每经过第二预设时长确定第一临时数据占用的存储空间,得到第一存储容量。

在本实施例一中,当目标名称为预设字符串时,表示目标容器是所属容器组的中的Pause容器。Pause容器是容器组中一个虚拟的容器,该容器组中的其它业务容器可以通过共享Pause容器的网络命名空间来实现业务容器之间的网络通信。

具体地,在获取到目标名称后,根据目标名称判断目标容器是否属于Pause容器。例如,若目标名称为“POD”,则确定目标容器为Pause容器。然后,在目标容器是Pause容器的情况下,获取目标容器的标签信息。例如,通过Docker命令行“docker inspect--format='{{json.Config.Labels}}'<目标名称>”获取目标容器的标签信息,再根据目标容器的标签信息反向查询目标容器所属容器组的容器ID。其次,根据目标容器ID确定目标卷的文件路径,得到第一文件路径(例如,/var/lib/docker/pods/0e24e319-c0ec-4d1d-88cd-90cac64c1894/volumes/kubernetes.io~empt y-dir)。最后,每经过第二预设时长根据第一文件路径确定目标卷中存储的临时数据占用的存储空间,得到第一存储容量。

通过查询目标容器所属容器组的目标容器ID,能够获取到该容器组的emptydir卷(即上述的目标卷)的文件路径,从而有利于确定该容器组的临时存储容量。

可选地,在本申请实施例一提供的容器组临时存储容量的确定方法中,依据容器信息计算目标容器的根文件系统中临时数据的存储容量,得到第二存储容量包括:在目标名称不为预设字符串的情况下,依据目标名称获取目标容器的根文件系统的临时数据的文件路径,得到第二文件路径;依据第二文件路径确定根文件系统中存储的临时数据,得到第二临时数据;每经过第二预设时长确定第二临时数据占用的存储空间,得到第二存储容量。

在本实施例一中,在目标容器不属于Pause容器的情况下,即可确定目标容器为业务容器,从而可以根据目标容器的目标名称获取目标容器的根文件目录,然后根据根文件目录确定目标容器的根文件目录下的临时数据的第二文件路径,最后每经过第二预设时长可以根据第二文件路径确定目标容器中临时数据的第二存储容量。

通过目标容器的目标名称获取目标容器存储临时数据的第二文件路径,可以统计到容器组中业务容器所存储的临时数据的存储容量。

可选地,在本申请实施例一提供的容器组临时存储容量的确定方法中,通过容器监控系统对第一存储容量和第二存储容量进行处理,确定容器组的临时存储容量包括:将第一存储容量和第二存储容量写入内存中;将内存中的第一存储容量和第二存储容量传输至容器监控系统中,其中,容器监控系统依据容器的标签信息和第二存储容量确定容器组中每个容器的临时存储容量;依据容器组中每个容器的临时存储容量和第一存储容量确定容器组的临时存储容量。

在实际生成场景中,集群计算好的第一存储容量和第二存储容量仅能在集群内部进行查询,无法通过一些监控集群性能的监控工具或可视化工具向运维人员直观地展示。此外,现有技术中可以通过Kubelet中的eviction-Manager获取容器组的临时存储容量,但通过这种方式获取到的临时存储容量仅能展示整个容器组的临时数据占用的临时存储容量,无法具体地展示该容器组中每个容器的临时数据的临时存储容量,给运维人员的维护工作带来的困难,降低了运维人员的工作效率。

在本实施例一中将本方案应用于实际生产场景时,为了获取容器组的临时存储容量的详细情况,需要对计算好的第一存储容量和第二存储容量进行处理。

具体地,将第一存储容量和第二存储容量写入内存中。然后,可以通过监控工具Cadvisor将第一存储容量和第二存储容量传输至容器监控系统Prometheus中。由于Prometheus获取到的第二存储容量可能包含多个目标容器的临时存储容量,所以Prometheus可以确定每个目标容器对应的第二存储容量,再根据容器标签确定每个目标容器所属的容器组。最后,计算容器组中每个容器的临时存储容量和第一存储容量的总和,以确定容器组的临时存储容量。

通过使用监控工具Cadvisor和监控系统Prometheus,能够准确地获取到容器组中每个容器的临时存储容量,使得该容器组占用存储空间较大时,运维人员能够快速且及时地定位容器组中出现异常的容器,有利于运维人员对容器组进行维护,提高了运维人员的工作效率,达到了提高业务稳定性的效果。

可选地,在本申请实施例一提供的容器组临时存储容量的确定方法中,将内存中的第一存储容量和第二存储容量传输至容器监控系统中包括:通过容器监控工具的目标接口获取内存中的第一存储容量和第二存储容量,其中,目标接口是指获取容器指标数据的接口;通过容器监控工具将第一存储容量和第二存储容量传输至容器监控系统中。

在本实施例一中,容器监控工具可以是Cadvisor,容器监控系统可以是Prometheus。为了直观地展示容器组的临时存储容量,可以通过Cadvisor的metrics接口从内存中获取第一存储容量和第二存储容量,然后通过Prometheus访问Cadvisor的metrics接口获取第一存储容量和第二存储容量,以便Prometheus根据获取到的第一存储容量和第二存储容量生成可视化展示数据。

可选地,在本申请实施例一提供的容器组临时存储容量的确定方法中,在通过容器监控系统对第一存储容量和第二存储容量进行处理,确定容器组的临时存储容量之后,上述的方法还包括:获取集群中容器组中存储的目标数据,其中,目标数据是指容器组中除临时存储容量包括的数据之外的数据;在临时存储容量和目标数据的存储容量的和超过预设存储容量的情况下,生成容器组的存储容量的报警信息;将报警信息发送至目标对象,其中,目标对象依据报警信息对容器组进行处理。

在本实施例一中,在获取容器组的临时存储容量之后,容器监控系统Prometheus可以对容器组的临时存储容量进行可视化处理,将容器组中每个容器的临时存储容量展示给运维人员。

此外,为了保障容器组的稳定运行,可以通过Prometheus监控容器组中存储的所有数据的存储容量,即容器组中目标数据的存储容量与临时存储容量的和,若容器组的存储容量超过预设存储容量,则需要生成相应的报警信息,并提醒目标对象(例如,运维人员、业务人员、项目管理员等)对容器组的存储空间进行及时地响应,以避免容器组出现异常。

通过统计容器组的临时存储容量以及持久化存储的目标数据的存储容量,能够准确地确定容器组所占用的存储容量,避免了由于监控工具或监控系统统计不到部分存储容量,导致运维人员无法正确定位原因的问题,提高了运维人员的工作效率,达到了提高业务稳定性的效果。

可选地,在本实施例一中,本方案确定容器组的临时存储容量的流程可以如图5所示。首先,检测集群中是否存在目标容器,通过Docker命令行获取目标容器的容器信息;然后,判断目标容器的目标名称是否为预设字符串,若目标名称为预设字符串,则获取根据目标容器的容器信息确定标签信息,反向查询目标容器ID,根据目标容器ID确定目标容器所属容器组的emptydir卷的路径,并计算emptydir卷中的第一存储容量,若目标名称不为预设字符串,则获取目标容器的根文件系统的临时存储容量,并根据标签信息汇总容器组中所有目标容器的第二存储容量;最后,根据第一存储容量和第二存储容量,确定容器组所有的临时存储容量。

需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

实施例二

本申请实施例二还提供了一种容器组临时存储容量的确定装置,需要说明的是,本申请实施例二的容器组临时存储容量的确定装置可以用于执行本申请实施例一所提供的用于容器组临时存储容量的确定方法。以下对本申请实施例二提供的容器组临时存储容量的确定装置进行介绍。

图6是根据本申请实施例二的容器组临时存储容量的确定装置的示意图。如图6所示,该装置包括:第一获取单元601、第一计算单元602、第二计算单元603和确定单元604。

具体地,第一获取单元601,用于在集群中存在目标容器的情况下,获取目标容器的容器信息,其中,目标容器是指集群中启动时长不超过第一预设时长的容器。

第一计算单元602,用于依据容器信息计算目标卷的存储容量,得到第一存储容量,其中,目标卷用于存储目标容器所属容器组共享的临时数据。

第二计算单元603,用于依据容器信息计算目标容器的根文件系统中临时数据的存储容量,得到第二存储容量。

确定单元604,用于通过容器监控系统对第一存储容量和第二存储容量进行处理,确定容器组的临时存储容量。

本申请实施例二提供的容器组临时存储容量的确定装置,通过第一获取单元601在集群中存在目标容器的情况下,获取目标容器的容器信息,其中,目标容器是指集群中启动时长不超过第一预设时长的容器;第一计算单元602依据容器信息计算目标卷的存储容量,得到第一存储容量,其中,目标卷用于存储目标容器所属容器组共享的临时数据;第二计算单元603依据容器信息计算目标容器的根文件系统中临时数据的存储容量,得到第二存储容量;确定单元604通过容器监控系统对第一存储容量和第二存储容量进行处理,确定容器组的临时存储容量,解决了相关技术中采集容器组的临时存储容量的指标数据时,无法准确地采集到容器组中所有的临时存储容量,导致运维人员无法准确地衡量容器组所占用的存储空间的问题。通过确定目标容器和目标容器的容器信息,能够获取到目标容器所属容器组中目标卷的临时数据的存储容量,以及每个容器的根文件目录下临时数据的存储容量,从而能够准确地获取到该容器组中临时数据的存储容量,避免了该容器组中部分临时数据没有被统计,使得错误地确定该容器组占用的存储空间,进而导致应用程序崩溃或集群性能下降的问题,提高了运维人员的工作效率,达到了提高业务稳定性和服务可用性的效果。

可选地,在本申请实施例二提供的容器组临时存储容量的确定装置中,上述的获取单元601包括:第一获取子单元,用于通过命令行工具获取目标容器的容器名称,得到目标名称;第一确定子单元,用于依据目标名称确定目标容器的容器信息。

可选地,在本申请实施例二提供的容器组临时存储容量的确定装置中,上述的第一计算单元602包括:第二获取子单元,用于在目标名称为预设字符串的情况下,获取目标容器的标签信息,得到目标标签;第二确定子单元,用于依据目标标签确定容器组的容器ID,得到目标容器ID;第三确定子单元,用于依据目标容器ID确定目标卷的文件路径,得到第一文件路径;第四确定子单元,用于依据第一文件路径确定目标卷中存储的临时数据,得到第一临时数据;第五确定子单元,用于每经过第二预设时长确定第一临时数据占用的存储空间,得到第一存储容量。

可选地,在本申请实施例二提供的容器组临时存储容量的确定装置中,上述的第二计算单元603包括:第三获取子单元,用于在目标名称不为预设字符串的情况下,依据目标名称获取目标容器的根文件系统的临时数据的文件路径,得到第二文件路径;第六确定子单元,用于依据第二文件路径确定根文件系统中存储的临时数据,得到第二临时数据;第七确定子单元,用于每经过第二预设时长确定第二临时数据占用的存储空间,得到第二存储容量。

可选地,在本申请实施例二提供的容器组临时存储容量的确定装置中,上述的确定单元604包括:写入子单元,用于将第一存储容量和第二存储容量写入内存中;传输子单元,用于将内存中的第一存储容量和第二存储容量传输至容器监控系统中,其中,容器监控系统依据容器的标签信息和第二存储容量确定容器组中每个容器的临时存储容量;第八确定子单元,用于依据容器组中每个容器的临时存储容量和第一存储容量确定容器组的临时存储容量。

可选地,在本申请实施例二提供的容器组临时存储容量的确定装置中,上述的传输子单元包括:获取模块,用于通过容器监控工具的目标接口获取内存中的第一存储容量和第二存储容量,其中,目标接口是指获取容器指标数据的接口;传输模块,用于通过容器监控工具将第一存储容量和第二存储容量传输至容器监控系统中。

可选地,在本申请实施例二提供的容器组临时存储容量的确定装置中,上述的装置还包括:第二获取单元,用于在通过容器监控系统对第一存储容量和第二存储容量进行处理,确定容器组的临时存储容量之后,获取集群中容器组中存储的目标数据,其中,目标数据是指容器组中除临时存储容量包括的数据之外的数据;生成单元,用于在临时存储容量和目标数据的存储容量的和超过预设存储容量的情况下,生成容器组的存储容量的报警信息;发送单元,用于将报警信息发送至目标对象,其中,目标对象依据报警信息对容器组进行处理。

所述容器组临时存储容量的确定装置包括处理器和存储器,上述的第一获取单元601、第一计算单元602、第二计算单元603和确定单元604等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来提高运维人员的工作效率。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。

本发明实施例三提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现容器组临时存储容量的确定方法。

本发明实施例四提供了一种处理器,处理器用于运行程序,其中,程序运行时执行容器组临时存储容量的确定方法。

如图7所示,本发明实施例五提供了一种电子设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:在集群中存在目标容器的情况下,获取目标容器的容器信息,其中,目标容器是指集群中启动时长不超过第一预设时长的容器;依据容器信息计算目标卷的存储容量,得到第一存储容量,其中,目标卷用于存储目标容器所属容器组共享的临时数据;依据容器信息计算目标容器的根文件系统中临时数据的存储容量,得到第二存储容量;通过容器监控系统对第一存储容量和第二存储容量进行处理,确定容器组的临时存储容量。

处理器执行程序时还实现以下步骤:获取目标容器的容器信息包括:通过命令行工具获取目标容器的容器名称,得到目标名称;依据目标名称确定目标容器的容器信息。

处理器执行程序时还实现以下步骤:依据容器信息计算目标卷的存储容量,得到第一存储容量包括:在目标名称为预设字符串的情况下,获取目标容器的标签信息,得到目标标签;依据目标标签确定容器组的容器ID,得到目标容器ID;依据目标容器ID确定目标卷的文件路径,得到第一文件路径;依据第一文件路径确定目标卷中存储的临时数据,得到第一临时数据;每经过第二预设时长确定第一临时数据占用的存储空间,得到第一存储容量。

处理器执行程序时还实现以下步骤:依据容器信息计算目标容器的根文件系统中临时数据的存储容量,得到第二存储容量包括:在目标名称不为预设字符串的情况下,依据目标名称获取目标容器的根文件系统的临时数据的文件路径,得到第二文件路径;依据第二文件路径确定根文件系统中存储的临时数据,得到第二临时数据;每经过第二预设时长确定第二临时数据占用的存储空间,得到第二存储容量。

处理器执行程序时还实现以下步骤:通过容器监控系统对第一存储容量和第二存储容量进行处理,确定容器组的临时存储容量包括:将第一存储容量和第二存储容量写入内存中;将内存中的第一存储容量和第二存储容量传输至容器监控系统中,其中,容器监控系统依据容器的标签信息和第二存储容量确定容器组中每个容器的临时存储容量;依据容器组中每个容器的临时存储容量和第一存储容量确定容器组的临时存储容量。

处理器执行程序时还实现以下步骤:将内存中的第一存储容量和第二存储容量传输至容器监控系统中包括:通过容器监控工具的目标接口获取内存中的第一存储容量和第二存储容量,其中,目标接口是指获取容器指标数据的接口;通过容器监控工具将第一存储容量和第二存储容量传输至容器监控系统中。

处理器执行程序时还实现以下步骤:在通过容器监控系统对第一存储容量和第二存储容量进行处理,确定容器组的临时存储容量之后,上述的方法还包括:获取集群中容器组中存储的目标数据,其中,目标数据是指容器组中除临时存储容量包括的数据之外的数据;在临时存储容量和目标数据的存储容量的和超过预设存储容量的情况下,生成容器组的存储容量的报警信息;将报警信息发送至目标对象,其中,目标对象依据报警信息对容器组进行处理。

本文中的设备可以是服务器、PC、PAD、手机等。

本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:在集群中存在目标容器的情况下,获取目标容器的容器信息,其中,目标容器是指集群中启动时长不超过第一预设时长的容器;依据容器信息计算目标卷的存储容量,得到第一存储容量,其中,目标卷用于存储目标容器所属容器组共享的临时数据;依据容器信息计算目标容器的根文件系统中临时数据的存储容量,得到第二存储容量;通过容器监控系统对第一存储容量和第二存储容量进行处理,确定容器组的临时存储容量。

当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:获取目标容器的容器信息包括:通过命令行工具获取目标容器的容器名称,得到目标名称;依据目标名称确定目标容器的容器信息。

当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:依据容器信息计算目标卷的存储容量,得到第一存储容量包括:在目标名称为预设字符串的情况下,获取目标容器的标签信息,得到目标标签;依据目标标签确定容器组的容器ID,得到目标容器ID;依据目标容器ID确定目标卷的文件路径,得到第一文件路径;依据第一文件路径确定目标卷中存储的临时数据,得到第一临时数据;每经过第二预设时长确定第一临时数据占用的存储空间,得到第一存储容量。

当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:依据容器信息计算目标容器的根文件系统中临时数据的存储容量,得到第二存储容量包括:在目标名称不为预设字符串的情况下,依据目标名称获取目标容器的根文件系统的临时数据的文件路径,得到第二文件路径;依据第二文件路径确定根文件系统中存储的临时数据,得到第二临时数据;每经过第二预设时长确定第二临时数据占用的存储空间,得到第二存储容量。

当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:通过容器监控系统对第一存储容量和第二存储容量进行处理,确定容器组的临时存储容量包括:将第一存储容量和第二存储容量写入内存中;将内存中的第一存储容量和第二存储容量传输至容器监控系统中,其中,容器监控系统依据容器的标签信息和第二存储容量确定容器组中每个容器的临时存储容量;依据容器组中每个容器的临时存储容量和第一存储容量确定容器组的临时存储容量。

当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:将内存中的第一存储容量和第二存储容量传输至容器监控系统中包括:通过容器监控工具的目标接口获取内存中的第一存储容量和第二存储容量,其中,目标接口是指获取容器指标数据的接口;通过容器监控工具将第一存储容量和第二存储容量传输至容器监控系统中。

当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:在通过容器监控系统对第一存储容量和第二存储容量进行处理,确定容器组的临时存储容量之后,上述的方法还包括:获取集群中容器组中存储的目标数据,其中,目标数据是指容器组中除临时存储容量包括的数据之外的数据;在临时存储容量和目标数据的存储容量的和超过预设存储容量的情况下,生成容器组的存储容量的报警信息;将报警信息发送至目标对象,其中,目标对象依据报警信息对容器组进行处理。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

技术分类

06120116556880