具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的监控容器的方法的流程图。如图1所示,本方法包括如下步骤:
步骤S101,探测宿主机内的容器列表,获取容器列表中记录的容器的容器标识和容器监控信息。
对于具有多个容器的宿主机,在本地启动定时程序探测容器列表,该容器列表中记录有当前宿主机内处于存活状态的容器的相关信息,一般情况下容器列表中记录的是容器的容器标识。其中,容器标识是标示容器的唯一标识,可采用容器名称作为容器标识。在获得容器标识后,进而获取这些容器的容器监控信息。其中,容器监控信息包含但不限于以下几种信息:cpu占用信息、内存占用信息、网络流量信息以及磁盘占用信息。这几种信息是反映容器运行状态的关键指标信息。
步骤S102,将容器列表中记录的容器的容器标识和容器监控信息提供给数据库进行比对。
在宿主机本地获取到容器标识和容器监控信息之后,宿主机将该信息提供给服务器端的数据库。
步骤S103,如果容器列表中记录有数据库中未记录的容器标识,则根据该容器标识和容器监控信息生成监控项添加到数据库中。
如果容器列表中记录有数据库中未记录的容器标识,表明宿主机内部启动了新的容器,则根据该容器标识和容器监控信息生成监控项添加到数据库中,以便服务器端对该容器进行实时监视;如果数据库中记录有容器列表中未记录的容器标识,表明宿主机内部的原来存活的容器停止运行,则将数据库中该容器标识对应的监控项以及历史信息删除。
根据本实施例提供的方法,宿主机本地启动定时程序探测容器列表,并获取处于存活状态的容器的容器标识和容器监控信息,将这些信息提供给数据库进行比对,如果宿主机本地启动了新的容器,则在数据库中增加该容器的监控项,如果宿主机本地有容器停止运行,则在数据库中删除对应的监控项。通过本方法,服务器端数据库能够自发现宿主机内容器的变化情况,与现有技术繁琐的手动增删监控项的方式相比,大大提高了同步效率,更有利于服务器实时监视各个容器的运行状态。
图2示出了根据本发明另一个实施例的监控容器的方法的流程图。本实施例以宿主机为基于Docker应用容器引擎的服务器为例进行说明,以下称这样的宿主机为Docker宿主机。zabbix服务器提供对Docker宿主机的监视功能,zabbix服务器内部的数据库通过本实施例提供的方法记录Docker宿主机内处于存活状态的容器的监控项。
本实施例中,Docker宿主机内部安装有数据库客户端模块(可理解为zabbix agent)和本地监控模块(zabbix monitor)。数据库客户端模块是zabbix的客户端服务组件,本地监控模块负责探测宿主机本地的容器变化情况。
如图2所示,本方法包括如下步骤:
步骤S201,本地监控模块调用Docker应用容器引擎的接口,获取容器列表。
Docker作为开源工具提供了许多可调用接口,本地监控模块可通过调用对应的接口查找到当前处于存活状态的容器列表。本实施例中,本地监控模块调用容器发现接口,具体代码实现如下:
上述容器发现接口调用后所返回的值就是容器列表,可选地,将容器列表处理为json格式,如下:
{“data”:[{“{#NODE}”:“c0021v.add.bjdt.qihoo.net”},{“{#NODE}”:“c0016v.add.bjdt.qihoo.net”},{“{#NODE}”:“c0010v.add.bjdt.qihoo.net”},{“{#NODE}”:“c0006v.add.bjdt.qihoo.net”},{“{#NODE}”:“c0001v.add.bjdt.qihoo.net”}]}
上述示例中列出了5个容器的容器名称,分别为“c0021v.add.bjdt.qihoo.net”、“c0016v.add.bjdt.qihoo.net”、“c0010v.add.bjdt.qihoo.net”、“c0006v.add.bjdt.qihoo.net”以及“c0001v.add.bjdt.qihoo.net”。
步骤S202,本地监控模块获取容器列表中记录的容器的容器标识和容器监控信息。
容器标识是标示容器的唯一标识,上述容器列表中记录的容器名称可直接作为容器标识。
在获得容器标识后,进而获取这些容器的容器监控信息。其中,容器监控信息包含但不限于以下几种信息:cpu占用信息、内存占用信息、网络流量信息以及磁盘占用信息。这几种信息是反映容器运行状态的关键指标信息。Docker宿主机内具有一指定目录cgroup,cgroup目录下有一些文件是实时更新的,cpu占用信息和内存占用信息可通过读取这些文件记录的数据得到。而网络流量信息和磁盘占用信息可通过调用Docker的exec()接口得到。下面通过几个具体的示例介绍各种容器监控信息的获取方法。
对于cpu占用信息,以cpu空闲率为例进行说明:
(1)首先,本地监控模块在Docker的cgroup目录下读取文件,得到宿主机内部所有cpu的中断值。
cat/proc/stat
cpu 3133469 7401 3104242 3553123569 132473 58 21602 0 0 0
cpu0 251944 9 260082 147709125 8397 0 5074 0 0 0
cpu1 304201 33 145887 147843986 9281 0 1561 0 0 0
cpu2 225218 202 166714 147876139 8957 9 2568 0 0 0
cpu3 215084 140 171011 147888463 8706 0 826 0 0 0
cpu4 266368 12 158857 147866110 8352 0 739 0 0 0
cpu5 203034 50 143072 147945613 7846 0 635 0 0 0
cpu6 105463 1435 210546 147987078 9087 0 2338 0 0 0
cpu7 139176 779 116588 148059723 9221 0 645 0 0 0
cpu8 137439 56 194463 147940180 8667 0 219 0 0 0
cpu9 87186 66 161497 148063120 8368 0 148 0 0 0
cpu10 75995 129 108372 148123556 11497 0 192 0 0 0
cpu11 76255 553 222601 148008104 9589 0 227 0 0 0
cpu12 37616 390 29130 148273198 519 0 104 0 0 0
cpu13 192658 1721 147542 147973978 1709 0 144 0 0 0
cpu14 91335 27 77563 148165505 748 0 102 0 0 0
cpu15 113149 44 135527 148086739 378 0 90 0 0 0
cpu16 74054 24 50266 148206655 1187 6 845 0 0 0
cpu17 56611 11 22716 148251531 1337 5 1075 0 0 0
cpu18 31401 2 38718 148264411 1431 10 611 0 0 0
cpu19 181266 1682 147994 147947551 4622 7 674 0 0 0
cpu20 97981 2 88707 148135665 1732 4 901 0 0 0
cpu21 96187 10 156737 148069044 3637 4 944 0 0 0
cpu22 53852 10 54436 148212130 4637 9 896 0 0 0
cpu23 19986 2 95205 148225954 2557 0 35 0 0 0
本示例中,Docker宿主机内部共有24个cpu,上述第二列信息为各个cpu的中断值。
(2)本地监控模块获取对应容器所占用的cpu总中断值。
cat/cgroup/cpuacct/docker/00bd87b4bd7f2cab5ac6912eda67c1a55a943f825c7624b273d6ff7d497a45df/cpuacct.stat
user 1048888
system 359653
其中,“user 1048888”是容器占用的用户态的中断值,“system 359653”是容器占用的内核态的中断值,这两个数值之和理解为容器所占用的cpu总中断值。
(3)根据宿主机的cpu共享策略,对容器所占用的cpu总中断值进行处理得到容器的cpu空闲率。
这里宿主机的cpu共享策略分为两种,一种是共享cpu,另一种是不共享cpu。对于不同的共享策略,cpu空闲率的计算方式不同:
c_cpu_before,cfs_quota_us,cpu_before=self.get_cpu_time()
time.sleep(1)
c_cpu_after,cfs_quota_us,cpu_after=self.get_cpu_time()
if cfs_quota_us==-1:
c_cpu_idle=((c_cpu_after-c_cpu_before)/(cpu_after-cpu_before))*100
else:
c_cpu_idle=((c_cpu_after-c_cpu_before)/(cfs_quota_us/10000))*100
其中,cfs_quota_us为-1,表示共享cpu,利用容器后一秒的中断值减去前一秒的中断值得到数值a,利用宿主机后一秒的总中断值减去前一秒的总中断值的得到宿主机的总中断值b,a/b*100得到该容器的cpu空闲率c_cpu_idle。
cfs_quota_us为-1,表示不共享cpu,而且cfs_quota_us的数值本身表示分配给该容器的中断比值,利用容器后一秒的中断值减去前一秒的中断值得到数值a,利用cfs_quota_us除以10000得到值b,a/b*100得到该容器的cpu空闲率c_cpu_idle。
对于内存占用信息,以内存占用值和内存占用比例为例说明。
本地监控模块在Docker的cgroup目录下读取文件,得到内存占用信息。
cat/cgroup/memory/docker/00bd87b4bd7f2cab5ac6912eda67c1a55a943f825c7624b273d6ff7d497a45df/memory.stat
cache 1303879680
rss 74170368
rss_huge 8388608
mapped_file 19103744
writeback 0
swap 0
pgpgin 300770031
pgpgout 300439725
pgfault 1104410446
pgmajfault 1068
inactive_anon 602853376
active_anon 74174464
inactive_file 289038336
active_file 411983872
unevictable 0
hierarchical_memory_limit 8589934592
hierarchical_memsw_limit 17179869184
total_cache 1303879680
total_rss 74170368
total_rss_huge 8388608
total_mapped_file 19103744
total_writeback 0
total_swap 0
total_pgpgin 300770031
total_pgpgout 300439725
total_pgfault 1104410446
total_pgmajfault 1068
total_inactive_anon 602853376
total_active_anon 74174464
total_inactive_file 289038336
total_active_file 411983872
total_unevictable 0
其中,“total_rss 74170368”即为容器的内存占用值,根据该内存占用值和分配给容器的内存总大小计算得到内存占用比例。
对于网络流量信息,以网络流量(in)和网络流量(out)为例进行说明:
本地监控模块通过调用Docker的exec()接口得到网络流量信息。
例如,调用exec()接口得到网卡出入站数据:
cat/sys/devices/virtual/net/eth0/statistics/rx_bytes
13210803
cat/sys/devices/virtual/net/eth0/statistics/tx_bytes
32392931
由于网卡出入站数据为流量的累加数据,因此利用后一秒的网卡出入站数据减去前一秒的网卡出入站数据,得到后一秒时刻的网络流量in和out数据。
对于磁盘占用信息,也可通过调用Docker的exec()接口得到磁盘占用值和磁盘占用比例。
步骤S203,本地监控模块将所获取的容器标识和容器监控信息提供给数据库客户端模块。
步骤S204,数据库客户端模块将容器标识和容器监控信息写入配置文件中。
本实施例中,数据库客户端模块维护有配置文件,该配置文件实时保存本地监控模块获取的容器标识和容器监控信息。
步骤S205,数据库客户端模块将配置文件中的容器标识和容器监控信息提供给数据库。
步骤S206,数据库将数据库客户端模块提供的信息与自身记录的信息进行比对,对于容器列表中记录的与数据库记录的一致的容器标识,执行步骤S207;对于容器列表中记录的数据库中未记录的容器标识,执行步骤S208;对于数据库中记录的容器列表中未记录的容器标识,执行步骤S209。
以上述步骤S201所获取的容器标识的示例进行说明,数据库内记录的容器标识包括:“c0021v.add.bjdt.qihoo.net”、“c0016v.add.bjdt.qihoo.net”、“c0010v.add.bjdt.qihoo.net”、“c0006v.add.bjdt.qihoo.net”以及“c0002v.add.bjdt.qihoo.net”。经过对比发现:
容器列表中记录的与数据库记录的一致的容器标识包括:“c0021v.add.bjdt.qihoo.net”、“c0016v.add.bjdt.qihoo.net”、“c0010v.add.bjdt.qihoo.net”和“c0006v.add.bjdt.qihoo.net”;
容器列表中记录的数据库中未记录的容器标识:“c0001v.add.bjdt.qihoo.net”;
数据库中记录的容器列表中未记录的容器标识:“c0002v.add.bjdt.qihoo.net”。
步骤S207,根据容器列表中记录的该容器标识对应的容器监控信息更新数据库。
对于容器列表中记录的与数据库记录的一致的容器标识,数据库记录有这些容器标识的监控项,则根据宿主机提供的这些容器标识对应的容器监控信息更新数据库即可。这里,更新的是各种容器监控信息对应监控项的监控值。
步骤S208,根据该容器标识和容器监控信息生成监控项添加到数据库中。
对于容器列表中记录的数据库中未记录的容器标识“c0001v.add.bjdt.qihoo.net”,在数据库中添加该容器的如下监控项:
docker container[c0001v.add.bjdt.qihoo.net]cpu_usage
docker container[c0001v.add.bjdt.qihoo.net]disk_perc
docker container[c0001v.add.bjdt.qihoo.net]disk_usage
docker container[c0001v.add.bjdt.qihoo.net]incomming
docker container[c0001v.add.bjdt.qihoo.net]mem_perc
docker container[c0001v.add.bjdt.qihoo.net]mem_usage
docker container[c0001v.add.bjdt.qihoo.net]Outgoing
docker container[c0001v.add.bjdt.qihoo.net]state
并对应更新各个监控项的监控值。
步骤S209,将数据库中该容器标识对应的监控项删除。
对于数据库中记录的容器列表中未记录的容器标识“c0002v.add.bjdt.qihoo.net”,将该容器标识对应的监控项及历史信息删除。
本实施例提供的上述监控容器的方法每隔预定时间执行一次,其中预定时间是依据***性能来设定的。
根据本实施例提供的监控容器的方法,宿主机本地监控模块探测容器列表,并获取处于存活状态的容器的容器标识和容器监控信息,将这些信息提供给数据库客户端模块,由数据库客户端模块提交给数据库进行比对,如果宿主机本地启动了新的容器,则在数据库中增加该容器的监控项,如果宿主机本地有容器停止运行,则在数据库中删除对应的监控项。通过本方法,服务器端数据库能够自发现宿主机内容器的变化情况,与现有技术繁琐的手动增删监控项的方式相比,大大提高了同步效率,更有利于服务器实时监视各个容器的运行状态。进一步的,本方法中本地监控模块自动定时探测容器监控信息,对于不同的容器监控信息采取对应的探测方式获取,探测方式自动且灵活,也大大提高了本方法的执行效率。
图3示出了根据本发明一个实施例的监控容器的***的功能框图。如图3所示,该***包括:宿主机310和数据库320。可选地,宿主机为基于Docker应用容器引擎的服务器,即Docker宿主机。数据库320为zabbix服务器300内部的数据库,zabbix服务器提供对Docker宿主机的监视功能,zabbix服务器内部的数据库通过本发明提供的方法记录Docker宿主机内处于存活状态的容器的监控项。
宿主机310包括:本地监控模块314和数据库客户端模块313;数据库客户端模块313是zabbix的客户端服务组件,本地监控模块314负责探测宿主机本地的容器变化情况。本地监控模块314适于探测宿主机内的容器列表,获取容器列表中记录的处于存活状态的容器的容器标识和容器监控信息并发送给数据库客户端模块313;数据库客户端模块313适于将容器列表中记录的容器的容器标识和容器监控信息提供给数据库320。
可选地,本地监控模块314具体适于调用Docker应用容器引擎的接口,获取容器列表。Docker作为开源工具提供了许多可调用接口,本地监控模块314可通过调用对应的接口查找到当前处于存活状态的容器列表。本实施例中,本地监控模块314调用容器发现接口,其返回值就是容器列表。
进一步的,本地监控模块314包括:探测单元311和发送单元315。
探测单元311探测容器监控信息,其中,容器监控信息包含但不限于以下几种信息:cpu占用信息、内存占用信息、网络流量信息以及磁盘占用信息。这几种信息是反映容器运行状态的关键指标信息。Docker宿主机内具有一指定目录cgroup,cgroup目录下有一些文件是实时更新的,cpu占用信息和内存占用信息可通过读取这些文件记录的数据得到。而网络流量信息和磁盘占用信息可通过调用Docker的exec()接口得到。探测单元311探测容器监控信息的方式可参见上面实施例的描述。
发送单元315适于将容器列表中记录的容器的容器标识和容器监控信息提供给数据库客户端模块313。
进一步的,数据库客户端模块313包括:接收单元316、写入单元317和发送端口312。其中,接收单元316适于接收发送单元315发送的容器标识和容器监控信息;写入单元317,适于将容器标识和容器监控信息写入配置文件中;发送端口312适于将配置文件中的容器标识和容器监控信息发送给数据库320。
数据库320适于:将容器列表中记录的容器的容器标识和容器监控信息与数据库记录的信息进行比对,如果容器列表中记录有数据库中未记录的容器标识,则根据该容器标识和容器监控信息生成监控项添加到数据库中;如果数据库中记录有容器列表中未记录的容器标识,则将数据库中该容器标识对应的监控项删除。
数据库320还适于:如果容器列表中记录有与数据库记录的一致的容器标识,则根据容器列表中记录的该容器标识对应的容器监控信息更新数据库。
本实施例提供的上述监控容器的***每隔预定时间运行一次,其中预定时间是依据***性能来设定的。
根据本实施例提供的监控容器的***,宿主机本地监控模块探测容器列表,并获取处于存活状态的容器的容器标识和容器监控信息,将这些信息提供给数据库客户端模块,由数据库客户端模块提交给数据库进行比对,如果宿主机本地启动了新的容器,则在数据库中增加该容器的监控项,如果宿主机本地有容器停止运行,则在数据库中删除对应的监控项。通过本***,服务器端数据库能够自发现宿主机内容器的变化情况,与现有技术繁琐的手动增删监控项的方式相比,大大提高了同步效率,更有利于服务器实时监视各个容器的运行状态。进一步的,本地监控模块自动定时探测容器监控信息,对于不同的容器监控信息采取对应的探测方式获取,探测方式自动且灵活,也大大提高了***的运行效率。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的***中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了:A1、一种监控容器的方法,包括:
探测宿主机内的容器列表,获取所述容器列表中记录的处于存活状态的容器的容器标识和容器监控信息;
将所述容器列表中记录的容器的容器标识和容器监控信息提供给数据库进行比对;
如果所述容器列表中记录有数据库中未记录的容器标识,则根据该容器标识和容器监控信息生成监控项添加到数据库中。
A2、根据A1所述的方法,还包括:如果所述数据库中记录有所述容器列表中未记录的容器标识,则将数据库中该容器标识对应的监控项删除。
A3、根据A1所述的方法,还包括:如果所述容器列表中记录有与数据库记录的一致的容器标识,则根据所述容器列表中记录的该容器标识对应的容器监控信息更新数据库。
A4、根据A1-A3任一项所述的方法,其中,所述宿主机为基于Docker应用容器引擎的服务器;以及
所述探测宿主机内的容器列表进一步包括:调用Docker应用容器引擎的接口,获取容器列表。
A5、根据A1-A4任一项所述的方法,其中,所述将所述容器列表中记录的容器的容器标识和容器监控信息提供给数据库进行比对进一步包括:
将所述容器标识和容器监控信息写入配置文件中;
将配置文件中的容器标识和容器监控信息提供给数据库进行比对。
A6、根据A1-A5任一项所述的方法,其中,所述容器监控信息包含以下信息的一项或多项:cpu占用信息、内存占用信息、网络流量信息以及磁盘占用信息。
A7、根据A1-A6中任一项所述的方法,其中,所述监控容器的方法每隔预定时间执行一次。
A8、根据A7所述的方法,其中,所述预定时间是依据***性能来设定的。
本发明还公开了:B9、一种监控容器的***,包括:宿主机和数据库;
所述宿主机包括:
本地监控模块,适于探测宿主机内的容器列表,获取所述容器列表中记录的处于存活状态的容器的容器标识和容器监控信息并发送给数据库客户端模块;
数据库客户端模块,适于将所述容器列表中记录的容器的容器标识和容器监控信息提供给数据库;
所述数据库,适于将所述容器列表中记录的容器的容器标识和容器监控信息与数据库记录的信息进行比对,如果所述容器列表中记录有数据库中未记录的容器标识,则根据该容器标识和容器监控信息生成监控项添加到数据库中。
B10、根据B9所述的***,其中,所述数据库还适于:如果所述数据库中记录有所述容器列表中未记录的容器标识,则将数据库中该容器标识对应的监控项删除。
B11、根据B9所述的***,其中,所述数据库还适于:如果所述容器列表中记录有与数据库记录的一致的容器标识,则根据所述容器列表中记录的该容器标识对应的容器监控信息更新数据库。
B12、根据B9-B11任一项所述的***,其中,所述宿主机为基于Docker应用容器引擎的服务器;以及
所述本地监控模块进一步适于:调用Docker应用容器引擎的接口,获取容器列表。
B13、根据B9-B12任一项所述的***,其中,所述本地监控模块进一步包括:
探测单元,适于探测宿主机内的容器列表,获取所述容器列表中记录的处于存活状态的容器的容器标识和容器监控信息;
发送单元,适于将所述容器列表中记录的容器的容器标识和容器监控信息发送给所述数据库客户端模块。
B14、根据B9-B13任一项所述的***,其中,所述数据库客户端模块进一步包括:
接收单元,适于接收所述发送单元发送的容器标识和容器监控信息;
写入单元,适于将所述容器标识和容器监控信息写入配置文件中;以及
发送端口,适于将所述配置文件中的所述容器标识和容器监控信息发送给数据库。
B15、根据B9-B14任一项所述的***,其中,所述容器监控信息包含以下信息的一项或多项:cpu占用信息、内存占用信息、网络流量信息以及磁盘占用信息。
B16、根据B9-B15任一项所述的***,其中,所述监控容器的***每隔预定时间运行一次。
B17、根据B16所述的***,其中,所述预定时间是依据***性能来设定的。