监控容器的方法及系统的制作方法

文档序号:9234738阅读:338来源:国知局
监控容器的方法及系统的制作方法
【技术领域】
[0001] 本发明设及互联网技术领域,具体设及一种监控容器的方法及系统。
【背景技术】
[0002] LXC(LinuxContainer)容器是一种内核虚拟化技术,可W提供轻量级的虚拟化, W便隔离进程和资源,而且不需要提供指令解释机制W及全虚拟化的其他复杂性。相当于 C++中的命名空间(Namespace)。容器有效地将由单个操作系统管理的资源划分到孤立的 组中,W更好地在孤立的组之间平衡有冲突的资源使用需求。
[0003]Docker是化aS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托 管在Github上,基于go语言并遵从Apache2. 0协议开源。简单得来说,Docker是一个由 GO语言写的程序运行的"容器"(Linux containers, LXCs);目前云服务的基石是操作系统 级别的隔离,在同一台宿主机上虚拟出多个主机。Docker则实现了一种应用程序级别的隔 离,它改变我们基本的开发、操作单元,由直接操作虚拟主机(VM)转换到操作程序运行的 "容器"上来。
[0004] Z油bix是一个基于肥B界面的提供分布式系统监视W及网络监视功能的企业级 的开源解决方案。Z油bix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活 的通知机制W让系统管理员快速定位/解决存在的各种问题。Z油bix由2部分构成,Z油bix 服务器(Z油bix server)与可选组件Z油bix代理(Z油bix agent)。Z油bix服务器可W提 供对基于Docker应用容器引擎的服务器值ocker宿主机)的监视功能,Z油bix服务器内 部的数据库需要记录Docker宿主机内处于存活状态的容器的监控项。
[0005] 随着Docker的发展,在一台Docker宿主机中启动的容器越来越多。而且,Docker 宿主机内部的容器数量和状态经常发生变化。现有技术中,若Docker宿主机内部启动了 新的容器,需要在zabbix数据库中手动添加新的容器对应的监控项,该种手动添加的方式 非常繁琐,尤其对于同时运行很多容器的Docker宿主机来说,Z油bix数据库同步的效率低 下,导致Z油bix服务器不能实时监视各个容器的运行状态。

【发明内容】

[0006] 鉴于上述问题,提出了本发明W便提供一种克服上述问题或者至少部分地解决上 述问题的监控容器的方法及系统。
[0007]根据本发明的一个方面,提供了一种监控容器的方法,包括:
[0008]探测宿主机内的容器列表,获取所述容器列表中记录的处于存活状态的容器的容 器标识和容器监控信息;
[0009]将所述容器列表中记录的容器的容器标识和容器监控信息提供给数据库进行比 对;
[0010] 如果所述容器列表中记录有数据库中未记录的容器标识,则根据该容器标识和容 器监控信息生成监控项添加到数据库中。
[0011] 根据本发明的另一方面,提供了一种监控容器的系统,包括:宿主机和数据库;
[0012] 所述宿主机包括:
[0013] 本地监控模块,适于探测宿主机内的容器列表,获取所述容器列表中记录的处于 存活状态的容器的容器标识和容器监控信息并发送给数据库客户端模块;
[0014] 数据库客户端模块,适于将所述容器列表中记录的容器的容器标识和容器监控信 息提供给数据库;
[0015] 所述数据库适于;将所述容器列表中记录的容器的容器标识和容器监控信息与数 据库记录的信息进行比对,如果所述容器列表中记录有数据库中未记录的容器标识,则根 据该容器标识和容器监控信息生成监控项添加到数据库中。
[0016] 根据本发明提供的监控容器的方法及系统,宿主机本地定时探测容器列表,并获 取处于存活状态的容器的容器标识和容器监控信息,将该些信息提供给数据库进行比对, 如果宿主机本地启动了新的容器,则在数据库中增加该容器的监控项。通过本发明,服务器 端数据库能够自发现宿主机内容器的变化情况,与现有技术繁琐的手动增删监控项的方式 相比,大大提高了同步效率,更有利于服务器实时监视各个容器的运行状态。
[0017] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段, 而可依照说明书的内容予W实施,并且为了让本发明的上述和其它目的、特征和优点能够 更明显易懂,W下特举本发明的【具体实施方式】。
【附图说明】
[0018] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通 技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明 的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0019] 图1示出了根据本发明一个实施例的监控容器的方法的流程图;
[0020] 图2示出了根据本发明另一个实施例的监控容器的方法的流程图;
[0021] 图3示出了根据本发明一个实施例的监控容器的系统的功能框图。
【具体实施方式】
[0022] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开 的示例性实施例,然而应当理解,可各种形式实现本公开而不应被该里阐述的实施例 所限制。相反,提供该些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围 完整的传达给本领域的技术人员。
[0023] 图1示出了根据本发明一个实施例的监控容器的方法的流程图。如图1所示,本 方法包括如下步骤:
[0024] 步骤S101,探测宿主机内的容器列表,获取容器列表中记录的容器的容器标识和 容器监控信息。
[0025] 对于具有多个容器的宿主机,在本地启动定时程序探测容器列表,该容器列表中 记录有当前宿主机内处于存活状态的容器的相关信息,一般情况下容器列表中记录的是容 器的容器标识。其中,容器标识是标示容器的唯一标识,可采用容器名称作为容器标识。在 获得容器标识后,进而获取该些容器的容器监控信息。其中,容器监控信息包含但不限于W 下几种信息;CPU占用信息、内存占用信息、网络流量信息w及磁盘占用信息。该几种信息 是反映容器运行状态的关键指标信息。
[0026] 步骤S102,将容器列表中记录的容器的容器标识和容器监控信息提供给数据库进 行比对。
[0027] 在宿主机本地获取到容器标识和容器监控信息之后,宿主机将该信息提供给服务 器端的数据库。
[0028] 步骤S103,如果容器列表中记录有数据库中未记录的容器标识,则根据该容器标 识和容器监控信息生成监控项添加到数据库中。
[0029] 如果容器列表中记录有数据库中未记录的容器标识,表明宿主机内部启动了新的 容器,则根据该容器标识和容器监控信息生成监控项添加到数据库中,W便服务器端对该 容器进行实时监视;如果数据库中记录有容器列表中未记录的容器标识,表明宿主机内部 的原来存活的容器停止运行,则将数据库中该容器标识对应的监控项W及历史信息删除。
[0030] 根据本实施例提供的方法,宿主机本地启动定时程序探测容器列表,并获取处于 存活状态的容器的容器标识和容器监控信息,将该些信息提供给数据库进行比对,如果宿 主机本地启动了新的容器,则在数据库中增加该容器的监控项,如果宿主机本地有容器停 止运行,则在数据库中删除对应的监控项。通过本方法,服务器端数据库能够自发现宿主机 内容器的变化情况,与现有技术繁琐的手动增删监控项的方式相比,大大提高了同步效率, 更有利于服务器实时监视各个容器的运行状态。
[0031] 图2示出了根据本发明另一个实施例的监控容器的方法的流程图。本实施例W宿 主机为基于Docker应用容器引擎的服务器为例进行说明,W下称该样的宿主机为Docker 宿主机。Z油bix服务器提供对Docker宿主机的监视功能,Z油bix服务器内部的数据库通 过本实施例提供的方法记录Docker宿主机内处于存活状态的容器的监控项。
[0032] 本实施例中,Docker宿主机内部安装有数据库客户端模块(可理解为Z油bix agent)和本地监控模块(Z油bix monitor)。数据库客户端模块是Z油bix的客户端服务组 件,本地监控模块负责探测宿主机本地的容器变化情况。
[0033] 如图2所示,本方法包括如下步骤;
[0034] 步骤S201,本地监控模块调用Docker应用容器引擎的接口,获取容器列表。
[00巧]Docker作为开源工具提供了许多可调用接口,本地监控模块可通过调用对应的接 口查找到当前处于存活状态的容器列表。本实施例中,本地监控模块调用容器发现接口,具 体代码实现如下:
[0036]
[0037] 上述容器发现接口调用后所返回的值就是容器列表,可选地,将容器列表处理为 json格式,如下;
[0038]{"data":[ {"掉N孤巧,':"c0021v. add. bj化.qihoo. net,'},{"掉N孤巧,':"c0016v. add.bjdt.qihoo.net"}, { "{#N0DE}": "cOOlOv.add.bjdt.qihoo. net''}, {"掉NOD巧 '':"c0006v. add. bjdt. qihoo. net''}, {"掉NOD巧 '':"cOOOlv. add. bjdt. qihoo. net" } ]}
[0039] 上述示例中列出了 5个容器的容器名称,分别为"c0021v. add. bj化.qihoo. net"、 "c0016v. add. bjdt. qihoo. net"、"c0010v. add. bjdt. qihoo. net"、"c0006v. add. bjdt. qihoo. net" W及"cOOOlv. add. bjdt. qihoo. net"。
[0040] 步骤S202,本地监控模块获取容器列表中记录的容器的容器标识和容器监控信 息。
[0041] 容器标识是标示容器的唯一标识,上述容器列表中记录的容器名称可直接作为容 器标识。
[0042] 在获得容器标识后,进而获取该些容器的容器监控信息。其中,容器监控信息包 含但不限于W下几种信息;CPU占用信息、内存占用信息、网络流量信息W及磁盘占用信 息。该几种信息是反映容器运行状态的关键指标信息。Docker宿主机内具有一指定目 录cgroup,cgroup目录下有一些文件是实时更新的,cpu占用信息和内存占用信息可通过 读取该些文件记录的数据得到。而网络流量信息和磁盘占用信息可通过
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1