CN104950757A - 监控容器的方法及系统 - Google Patents

监控容器的方法及系统 Download PDF

Info

Publication number
CN104950757A
CN104950757A CN201510325837.8A CN201510325837A CN104950757A CN 104950757 A CN104950757 A CN 104950757A CN 201510325837 A CN201510325837 A CN 201510325837A CN 104950757 A CN104950757 A CN 104950757A
Authority
CN
China
Prior art keywords
container
database
list
identification
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510325837.8A
Other languages
English (en)
Other versions
CN104950757B (zh
Inventor
赵鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing 360 Zhiling Technology Co ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510325837.8A priority Critical patent/CN104950757B/zh
Publication of CN104950757A publication Critical patent/CN104950757A/zh
Application granted granted Critical
Publication of CN104950757B publication Critical patent/CN104950757B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种监控容器的方法及系统。其中,方法包括:探测宿主机内的容器列表,获取所述容器列表中记录的处于存活状态的容器的容器标识和容器监控信息;将所述容器列表中记录的容器的容器标识和容器监控信息提供给数据库进行比对;如果所述容器列表中记录有数据库中未记录的容器标识,则根据该容器标识和容器监控信息生成监控项添加到数据库中。通过本发明,服务器端数据库能够自发现宿主机内容器的变化情况,与现有技术繁琐的手动增删监控项的方式相比,大大提高了同步效率,更有利于服务器实时监视各个容器的运行状态。

Description

监控容器的方法及系统
技术领域
本发明涉及互联网技术领域,具体涉及一种监控容器的方法及系统。
背景技术
LXC(Linux Container)容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的命名空间(NameSpace)。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。
Docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。简单得来说,Docker是一个由GO语言写的程序运行的“容器”(Linux containers,LXCs);目前云服务的基石是操作系统级别的隔离,在同一台宿主机上虚拟出多个主机。Docker则实现了一种应用程序级别的隔离,它改变我们基本的开发、操作单元,由直接操作虚拟主机(VM)转换到操作程序运行的“容器”上来。
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。zabbix由2部分构成,zabbix服务器(zabbix server)与可选组件zabbix代理(zabbix agent)。zabbix服务器可以提供对基于Docker应用容器引擎的服务器(Docker宿主机)的监视功能,zabbix服务器内部的数据库需要记录Docker宿主机内处于存活状态的容器的监控项。
随着Docker的发展,在一台Docker宿主机中启动的容器越来越多。而且,Docker宿主机内部的容器数量和状态经常发生变化。现有技术中,若Docker宿主机内部启动了新的容器,需要在zabbix数据库中手动添加新的容器对应的监控项,这种手动添加的方式非常繁琐,尤其对于同时运行很多容器的Docker宿主机来说,zabbix数据库同步的效率低下,导致zabbix服务器不能实时监视各个容器的运行状态。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的监控容器的方法及系统。
根据本发明的一个方面,提供了一种监控容器的方法,包括:
探测宿主机内的容器列表,获取所述容器列表中记录的处于存活状态的容器的容器标识和容器监控信息;
将所述容器列表中记录的容器的容器标识和容器监控信息提供给数据库进行比对;
如果所述容器列表中记录有数据库中未记录的容器标识,则根据该容器标识和容器监控信息生成监控项添加到数据库中。
根据本发明的另一方面,提供了一种监控容器的系统,包括:宿主机和数据库;
所述宿主机包括:
本地监控模块,适于探测宿主机内的容器列表,获取所述容器列表中记录的处于存活状态的容器的容器标识和容器监控信息并发送给数据库客户端模块;
数据库客户端模块,适于将所述容器列表中记录的容器的容器标识和容器监控信息提供给数据库;
所述数据库适于:将所述容器列表中记录的容器的容器标识和容器监控信息与数据库记录的信息进行比对,如果所述容器列表中记录有数据库中未记录的容器标识,则根据该容器标识和容器监控信息生成监控项添加到数据库中。
根据本发明提供的监控容器的方法及系统,宿主机本地定时探测容器列表,并获取处于存活状态的容器的容器标识和容器监控信息,将这些信息提供给数据库进行比对,如果宿主机本地启动了新的容器,则在数据库中增加该容器的监控项。通过本发明,服务器端数据库能够自发现宿主机内容器的变化情况,与现有技术繁琐的手动增删监控项的方式相比,大大提高了同步效率,更有利于服务器实时监视各个容器的运行状态。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的监控容器的方法的流程图;
图2示出了根据本发明另一个实施例的监控容器的方法的流程图;
图3示出了根据本发明一个实施例的监控容器的系统的功能框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图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所述的系统,其中,所述预定时间是依据系统性能来设定的。

Claims (10)

1.一种监控容器的方法,包括:
探测宿主机内的容器列表,获取所述容器列表中记录的处于存活状态的容器的容器标识和容器监控信息;
将所述容器列表中记录的容器的容器标识和容器监控信息提供给数据库进行比对;
如果所述容器列表中记录有数据库中未记录的容器标识,则根据该容器标识和容器监控信息生成监控项添加到数据库中。
2.根据权利要求1所述的方法,还包括:如果所述数据库中记录有所述容器列表中未记录的容器标识,则将数据库中该容器标识对应的监控项删除。
3.根据权利要求1所述的方法,还包括:如果所述容器列表中记录有与数据库记录的一致的容器标识,则根据所述容器列表中记录的该容器标识对应的容器监控信息更新数据库。
4.根据权利要求1-3任一项所述的方法,其中,所述宿主机为基于Docker应用容器引擎的服务器;以及
所述探测宿主机内的容器列表进一步包括:调用Docker应用容器引擎的接口,获取容器列表。
5.根据权利要求1-4任一项所述的方法,其中,所述将所述容器列表中记录的容器的容器标识和容器监控信息提供给数据库进行比对进一步包括:
将所述容器标识和容器监控信息写入配置文件中;
将配置文件中的容器标识和容器监控信息提供给数据库进行比对。
6.根据权利要求1-5任一项所述的方法,其中,所述容器监控信息包含以下信息的一项或多项:cpu占用信息、内存占用信息、网络流量信息以及磁盘占用信息。
7.根据权利要求1-6中任一项所述的方法,其中,所述监控容器的方法每隔预定时间执行一次。
8.根据权利要求7所述的方法,其中,所述预定时间是依据系统性能来设定的。
9.一种监控容器的系统,包括:宿主机和数据库;
所述宿主机包括:
本地监控模块,适于探测宿主机内的容器列表,获取所述容器列表中记录的处于存活状态的容器的容器标识和容器监控信息并发送给数据库客户端模块;
数据库客户端模块,适于将所述容器列表中记录的容器的容器标识和容器监控信息提供给数据库;
所述数据库,适于将所述容器列表中记录的容器的容器标识和容器监控信息与数据库记录的信息进行比对,如果所述容器列表中记录有数据库中未记录的容器标识,则根据该容器标识和容器监控信息生成监控项添加到数据库中。
10.根据权利要求9所述的系统,其中,所述数据库还适于:如果所述数据库中记录有所述容器列表中未记录的容器标识,则将数据库中该容器标识对应的监控项删除。
CN201510325837.8A 2015-06-12 2015-06-12 监控容器的方法及系统 Active CN104950757B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510325837.8A CN104950757B (zh) 2015-06-12 2015-06-12 监控容器的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510325837.8A CN104950757B (zh) 2015-06-12 2015-06-12 监控容器的方法及系统

Publications (2)

Publication Number Publication Date
CN104950757A true CN104950757A (zh) 2015-09-30
CN104950757B CN104950757B (zh) 2018-03-16

Family

ID=54165486

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510325837.8A Active CN104950757B (zh) 2015-06-12 2015-06-12 监控容器的方法及系统

Country Status (1)

Country Link
CN (1) CN104950757B (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105530145A (zh) * 2015-12-23 2016-04-27 中国电子科技集团公司第三十研究所 一种基于zabbix框架的无代理设备监控网络、组网方法以及监控方法
CN105630653A (zh) * 2016-03-15 2016-06-01 青岛海信传媒网络技术有限公司 Docker容器的CPU空闲率确定方法及装置
CN105791011A (zh) * 2016-03-08 2016-07-20 浪潮集团有限公司 一种基于Docker实现统一化网管平台的系统及方法
CN106445634A (zh) * 2016-09-22 2017-02-22 乐视控股(北京)有限公司 一种容器的监控方法及装置
CN106789284A (zh) * 2016-12-28 2017-05-31 郑州云海信息技术有限公司 一种基于Zabbix和Docker的监控系统和方法
CN107070860A (zh) * 2016-12-27 2017-08-18 北京粉笔蓝天科技有限公司 一种监控数据的收集方法、装置和系统
CN107247648A (zh) * 2016-09-30 2017-10-13 北京赢点科技有限公司 基于Docker实现远程项目系统监管的方法、装置及系统
CN107294772A (zh) * 2017-05-23 2017-10-24 甘肃万维信息技术有限责任公司 一种结合Docker实现动态管理监控服务系统
CN107395651A (zh) * 2017-09-07 2017-11-24 赛尔网络有限公司 服务系统及信息处理方法
CN107515783A (zh) * 2016-06-16 2017-12-26 阿里巴巴集团控股有限公司 基于应用容器集群工具的应用容器管控方法及装置
CN108089863A (zh) * 2016-11-21 2018-05-29 财团法人资讯工业策进会 协助用户管理软件容器的计算机装置与方法
CN108228313A (zh) * 2017-11-30 2018-06-29 中国联合网络通信集团有限公司 下游容器的发现方法及装置
CN108243055A (zh) * 2016-12-27 2018-07-03 中国移动通信集团浙江有限公司 一种容器云自动发现与注册系统及方法
CN109086119A (zh) * 2018-07-30 2018-12-25 南京卓盛云信息科技有限公司 一种快速检测容器运行状态的方法
CN109783533A (zh) * 2018-12-13 2019-05-21 平安科技(深圳)有限公司 数据采集方法、装置、计算机设备及存储介质
CN109871303A (zh) * 2017-12-04 2019-06-11 北京京东尚科信息技术有限公司 信息处理方法及其系统、计算机系统及可读存储介质
CN110825580A (zh) * 2019-10-11 2020-02-21 紫光云(南京)数字技术有限公司 Kuberrnates Pod健康监控方法
CN112416719A (zh) * 2020-12-04 2021-02-26 中国建设银行股份有限公司 针对数据库容器的监控处理方法、系统、设备和存储介质
CN115118626A (zh) * 2022-07-27 2022-09-27 济南浪潮数据技术有限公司 一种管理方法、计算机可读存储介质、系统及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1341076A2 (en) * 2002-02-22 2003-09-03 Xerox Corporation Printer driver user interface and system
CN1757216A (zh) * 2002-12-26 2006-04-05 捷讯研究有限公司 创建基于无线应用程序的组件并与之通信的系统和方法
CN1842078A (zh) * 2005-03-28 2006-10-04 北京航空航天大学 网格服务容器
CN101324843A (zh) * 2008-07-16 2008-12-17 广州复旦奥特科技股份有限公司 通用网关设计的对象模型
CN101741614A (zh) * 2009-11-20 2010-06-16 中国地质调查局发展研究中心 对等式结点管理器及对等式结点管理方法
CN104468282A (zh) * 2014-12-23 2015-03-25 携程计算机技术(上海)有限公司 集群监控处理系统及方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1341076A2 (en) * 2002-02-22 2003-09-03 Xerox Corporation Printer driver user interface and system
CN1757216A (zh) * 2002-12-26 2006-04-05 捷讯研究有限公司 创建基于无线应用程序的组件并与之通信的系统和方法
CN1842078A (zh) * 2005-03-28 2006-10-04 北京航空航天大学 网格服务容器
CN101324843A (zh) * 2008-07-16 2008-12-17 广州复旦奥特科技股份有限公司 通用网关设计的对象模型
CN101741614A (zh) * 2009-11-20 2010-06-16 中国地质调查局发展研究中心 对等式结点管理器及对等式结点管理方法
CN104468282A (zh) * 2014-12-23 2015-03-25 携程计算机技术(上海)有限公司 集群监控处理系统及方法

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105530145A (zh) * 2015-12-23 2016-04-27 中国电子科技集团公司第三十研究所 一种基于zabbix框架的无代理设备监控网络、组网方法以及监控方法
CN105791011A (zh) * 2016-03-08 2016-07-20 浪潮集团有限公司 一种基于Docker实现统一化网管平台的系统及方法
CN105630653A (zh) * 2016-03-15 2016-06-01 青岛海信传媒网络技术有限公司 Docker容器的CPU空闲率确定方法及装置
CN107515783A (zh) * 2016-06-16 2017-12-26 阿里巴巴集团控股有限公司 基于应用容器集群工具的应用容器管控方法及装置
CN107515783B (zh) * 2016-06-16 2021-01-22 阿里巴巴集团控股有限公司 基于应用容器集群工具的应用容器管控方法及装置
CN106445634A (zh) * 2016-09-22 2017-02-22 乐视控股(北京)有限公司 一种容器的监控方法及装置
CN107247648B (zh) * 2016-09-30 2020-07-17 北京赢点科技有限公司 基于Docker实现远程项目系统监管的方法、装置及系统
CN107247648A (zh) * 2016-09-30 2017-10-13 北京赢点科技有限公司 基于Docker实现远程项目系统监管的方法、装置及系统
CN108089863A (zh) * 2016-11-21 2018-05-29 财团法人资讯工业策进会 协助用户管理软件容器的计算机装置与方法
CN108243055A (zh) * 2016-12-27 2018-07-03 中国移动通信集团浙江有限公司 一种容器云自动发现与注册系统及方法
CN107070860A (zh) * 2016-12-27 2017-08-18 北京粉笔蓝天科技有限公司 一种监控数据的收集方法、装置和系统
CN106789284B (zh) * 2016-12-28 2020-03-27 郑州云海信息技术有限公司 一种基于Zabbix和Docker的监控系统和方法
CN106789284A (zh) * 2016-12-28 2017-05-31 郑州云海信息技术有限公司 一种基于Zabbix和Docker的监控系统和方法
CN107294772A (zh) * 2017-05-23 2017-10-24 甘肃万维信息技术有限责任公司 一种结合Docker实现动态管理监控服务系统
CN107395651A (zh) * 2017-09-07 2017-11-24 赛尔网络有限公司 服务系统及信息处理方法
CN108228313A (zh) * 2017-11-30 2018-06-29 中国联合网络通信集团有限公司 下游容器的发现方法及装置
CN108228313B (zh) * 2017-11-30 2021-11-30 中国联合网络通信集团有限公司 下游容器的发现方法及装置
CN109871303A (zh) * 2017-12-04 2019-06-11 北京京东尚科信息技术有限公司 信息处理方法及其系统、计算机系统及可读存储介质
CN109871303B (zh) * 2017-12-04 2023-03-10 北京京东尚科信息技术有限公司 信息处理方法及其系统、计算机系统及可读存储介质
CN109086119A (zh) * 2018-07-30 2018-12-25 南京卓盛云信息科技有限公司 一种快速检测容器运行状态的方法
CN109783533A (zh) * 2018-12-13 2019-05-21 平安科技(深圳)有限公司 数据采集方法、装置、计算机设备及存储介质
CN110825580A (zh) * 2019-10-11 2020-02-21 紫光云(南京)数字技术有限公司 Kuberrnates Pod健康监控方法
CN112416719A (zh) * 2020-12-04 2021-02-26 中国建设银行股份有限公司 针对数据库容器的监控处理方法、系统、设备和存储介质
CN112416719B (zh) * 2020-12-04 2024-01-26 中国建设银行股份有限公司 针对数据库容器的监控处理方法、系统、设备和存储介质
CN115118626A (zh) * 2022-07-27 2022-09-27 济南浪潮数据技术有限公司 一种管理方法、计算机可读存储介质、系统及装置

Also Published As

Publication number Publication date
CN104950757B (zh) 2018-03-16

Similar Documents

Publication Publication Date Title
CN104950757A (zh) 监控容器的方法及系统
CN104899126A (zh) 对宿主机中容器进行本地实时监控的方法、装置及系统
US10929045B2 (en) Data migration for applications on a mobile device
US10560544B2 (en) Data caching in a collaborative file sharing system
Seifzadeh et al. A survey of dynamic software updating
US10324754B2 (en) Managing virtual machine patterns
US20170168917A1 (en) Dynamic trace level control
US20140164620A1 (en) Cloud-shared resource providing system
CN103034540A (zh) 分布式消息系统及其设备和协调方法
US10764295B2 (en) Monitoring service policy management
US11526501B2 (en) Materialized views assistant
US10127270B1 (en) Transaction processing using a key-value store
CN111279323A (zh) 通过多个处理器对共享高速缓存行的并发修改
CN108446182A (zh) 一种基于共享内存的跨进程通信方法及装置
CN115136133A (zh) 按需代码执行的单次使用执行环境
KR20220054814A (ko) 시스템 보안 유지
CN104573496A (zh) 一种禁止启动项启动的方法和装置
US11656888B2 (en) Performing an application snapshot using process virtual machine resources
US10169113B2 (en) Storage and application intercommunication using ACPI
WO2022078060A1 (en) Tag-driven scheduling of computing resources for function execution
US11416468B2 (en) Active-active system index management
CN118056183A (zh) 优化即时编译过程
US11520612B2 (en) Virtual machine migration detection by a hosted operating system
US20220114024A1 (en) Parallel task initialization on dynamic compute resources
US20210342290A1 (en) Technique selection for file system utilization prediction

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220729

Address after: 300450 No. 9-3-401, No. 39, Gaoxin 6th Road, Binhai Science Park, Binhai New Area, Tianjin

Patentee after: 3600 Technology Group Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230711

Address after: 1765, floor 17, floor 15, building 3, No. 10 Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: Beijing Hongxiang Technical Service Co.,Ltd.

Address before: 300450 No. 9-3-401, No. 39, Gaoxin 6th Road, Binhai Science Park, Binhai New Area, Tianjin

Patentee before: 3600 Technology Group Co.,Ltd.

CP03 Change of name, title or address

Address after: 1765, floor 17, floor 15, building 3, No. 10 Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: Beijing 360 Zhiling Technology Co.,Ltd.

Country or region after: China

Address before: 1765, floor 17, floor 15, building 3, No. 10 Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee before: Beijing Hongxiang Technical Service Co.,Ltd.

Country or region before: China