基于容器技术的进程信息获取方法及装置的制造方法

xiaoxiao2020-10-23  15

基于容器技术的进程信息获取方法及装置的制造方法
【技术领域】
[0001]本发明涉及web平台技术领域,尤其涉及一种基于容器技术的进程信息获取方法及装置。
【背景技术】
[0002]LXC为Linux Container的简写。Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与传统虚拟化技术相比Linux Container是一种轻量级的虚拟化的手段,提供了在单一可控主机节点上支持多个相互隔离的server container同时执行的机制,同时也提供了一个拥有自己进程和网络空间的虚拟环境。
[0003]LXC在资源管理方面依赖于Linux内核的cgroups子系统,cgroups子系统是Linux内核提供的一个基于进程组的资源管理的框架,可以为特定的进程组限定可以使用的资源。但由于LXC在资源管理方面共享Linux内核,因此在使用现有的方式获取容器中的进程参数时,只能获取到整个Linux内核的相关特性,而无法针对单个容器中的进程信息进行查询。

【发明内容】

[0004]有鉴于此,本发明提供一种基于容器技术的进程信息获取方法及装置,能够获取单个容器中进程的参数以及状态信息。
[0005]依据本发明一个方面,提出了一种基于容器技术的进程信息获取方法,该方法包括:
[0006]获取物理机上运行的至少一个容器的名称;
[0007]根据所述容器的名称查询所述容器的地址;
[0008]根据所述容器的地址获取所述容器的进程信息。
[0009]依据本发明另一个方面,还提出了一种基于容器技术的进程信息获取装置,该装置包括:
[0010]第一获取单元,用于获取物理机上运行的至少一个容器的名称;
[0011]查询单元,用于根据所述获取单元获取的名称查询所述容器的地址;
[0012]第二获取单元,用于根据所述查询单元查询的地址获取所述容器的进程信息。
[0013]依据本发明另一个方面,还提出了一种监控客户端该监控客户端包括有上述的基于容器技术的进程信息获取装置。
[0014]本发明所采用的基于容器技术的进程信息获取方法及装置,是在容器化技术的环境下,通过获取物理机上运行的容器名称,查询该容器的地址,在根据该地址来获取容器的进程信息。相比于现有的进程信息获取的方式,通过指定的调用指令来获取对应的进程信息,由于在容器技术的环境内,所有容器共享Linux内核,导致获取的进程信息为整个Linux内核的相关特性。而本发明可以将物理机中单个容器内的进程信息提取出来,通过统计、分析还可以对该容器内的进程实现实时监控与报警,从而提高了系统运行的稳定性与安全性。
[0015]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0016]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0017]图1示出了本发明实施例提出的第一种基于容器技术的进程信息获取方法流程图;
[0018]图2示出了本发明实施例提出的第二种基于容器技术的进程信息获取方法流程图;
[0019]图3示出了本发明实施例提出的第一种基于容器技术的进程信息获取装置的组成框图;
[0020]图4示出了本发明实施例提出的第二种基于容器技术的进程信息获取装置的组成框图;
[0021]图5示出了本发明实施例提出的第三种基于容器技术的进程信息获取装置的组成框图;
[0022]图6示出了本发明实施例提出的第四种基于容器技术的进程信息获取装置的组成框图;
[0023]图7示出了本发明实施例提出的第五种基于容器技术的进程信息获取装置的组成框图。
【具体实施方式】
[0024]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0025]本发明实施例提供的基于容器技术的进程信息获取方法,如图1所示,该方法应用于在容器化技术环境下安装有监控客户端的物理机上,并且该物理机上运行有多个容器,具体步骤包括:
[0026]101、获取物理机上运行的至少一个容器的名称。
[0027]容器技术,可以视作一种轻量级的虚拟化技术手段。基于虚拟化技术,对已有的资源进行更细粒度的资源控制,为此,在Linux内核通过添加众所周知的cgroup技术,对服务运行时的环境进行隔离,被隔离出来的运行环境就称为容器。一般情况下,一台应用容器技术的物理机上会同时运行有多个容器,以供物理机同时执行多个服务进程。
[0028]为了对容器中运行的进程,即在该容器内运行的服务或任务,实施有效的监控与管理,首先需要对物理机上当前所有运行着的容器加以区分,在本发明实施例中,通过监控客户端向物理机发送容器名称获取指令,由物理机的Linux内核进行响应,将该物理机上当前运行的容器的名称发送给监控客户端。需要说明的是,物理机在反馈容器的名称时,可以是逐条的发送,再由监控客户端进行整理、制成列表等工作,也可以是在发送前将所有的容器名称制成名称列表后再发送给监控客户端,本实施例对此不进行具体限定。
[0029]102、根据容器的名称查询该容器的地址。
[0030]监控客户端在获取到容器的名称后,将根据该名称在物理机上查找为该容器内的进程所分配的地址空间。Iinux操作系统采用虚拟内存技术,所有进程之间以虚拟方式共享内存。进程地址空间由每个进程中的线性地址区组成,而且更为重要的特点是内核允许进程使用该空间中的地址。通常情况况下,每个进程都有唯一的地址空间,而且进程地址空间之间彼此互不相干。因此,所查询到的容器进程的地址在同一个物理机上是相对唯一的。
[0031]103、根据容器的地址获取该容器的进程信息。
[0032]在确定容器进程的地址后,监控客户端将根据容器的地址获取该容器内进程的相关进程信息。在容器化技术中,所使用的资源管理手段为Cgroups,groups是controlgroups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu, memory, 1等等)的机制。Cgroups最初的目标是为资源管理提供的一个统一的框架,既整合现有的cpuset等子系统,也为未来开发新的子系统提供接口。现在的cgroups适用于多种应用场景,从单个进程的资源控制,到实现操作系统层次的虚拟化(OS Level Virtualizat1n)。Cgroups可以提供以下功能:
[0033]1.限制进程组可以使用的资源数量(Resource limiting)。比如:memory子系统可以为进程组设定一个memory使用上限,一旦进程组使用的内存达到限额再申请内存,就会出发 00M(out of memory) ο
[0034]2.进程组的优先级控制(Pr1ritizat1n)。比如:可以使用cpu子系统为某个进程组分配特定cpu share。
[0035]3.记录进程组使用的资源数量(Accounting)。比 如:可以使用cpuacct子系统记录某个进程组使用的cpu时间
[0036]4.进程组隔离(Isolat1n)。比如:使用ns子系统可以使不同的进程组使用不同的namespace,以达到隔离的目的,不同的进程组有各自的进程、网络、文件系统挂载空间。
[0037]5.进程组控制(Cont1l)。比如:使用freezer子系统可以将进程组挂起和恢复。
[0038]其中,cgroups子系统共有9个,分别为:
[0039]blk1-这个子系统为块设备设定输入/输出限制,比如物理设备(磁盘,固态硬盘,USB等等)ο
[0040]cpu—这个子系统使用调度程序提供对CPU的cgroup任务访问。
[0041]cpuacct—这个子系统自动生成cgroup中任务所使用的CPU报告。
[0042]cpuset—这个子系统为cgroup中的任务分配独立CPU(在多核系统)和内存节点。
[0043]devices—这个子系统可允许或者拒绝cgroup中的任务访问设备。
[0044]freezer—这个子系统挂起或者恢复cgroup中的任务。
[0045]memory—这个子系统设定cgroup中任务使用的内存限制,并自动生成由那些任务使用的内存资源报告。
[0046]net_cls—这个子系统使用等级识别符(classid)标记网络数据包,可允许Linux流量控制程序(tc)识别从具体cgroup中生成的数据包。
[0047]ns—名称空间子系统。
[0048]通过在包括有上述cgroups子系统的Cgroup文件系统中就可以查找到同一物理机中不同容器的进程信息。
[0049]结合上述的实现方式可以看出,本发明实施例所采用的基于容器技术的进程信息获取方法,是在容器化技术的环境下,通过获取物理机上运行的容器名称,查询该容器的地址,在根据该地址来获取容器的进程信息。相比于现有的进程信息获取的方式,通过指定的调用指令来获取对应的进程信息,由于在容器技术的环境内,所有容器共享Linux内核,导致获取的进程信息为整个Linux内核的相关特性。而本发明实施例可以将物理机中单个容器内的进程信息提取出来,再通过统计、分析还可以对固定容器内的进程实现实时监控与报警,从而提高了系统运行的稳定性与安全性。
[0050]为了更加详细地说明本发明提出的基于容器技术的进程信息获取方法,本发明实施例还提供一种基于容器技术的进程信息获取方法,如图2所示,该方法包括:
[0051]201、获取物理机上运行的至少一个容器的名称。
[0052]相对于步骤101的实现方式,本步骤具体细化的是在物理机接收到监控客户端所发送的容器名称获取指令后,由物理机的Linux内核响应的具体方式。首先,需要在物理机内设置一个容器识别模块,该容器识别模块是由监控客户端通过获取具有自动识别功能的脚本文件,并将该脚本文件解析后,添加上容器自动识别功能而构建出的一个具有容器自动识别功能的模块。其中,监控客户端在获取到具有自动识别功能的脚本文件后,首先需要确认该脚本文件可以在当前物理机系统下被识别,如果无法识别,则需要对该脚本文件进行适配,获得可以在当前系统下识别的格式文件,在适配过程中可能涉及变量名称的更改、源代码的替换、改变调用的函数、初始化状态等操作。由于具体的适配方式已是现有技术手段,因此,其具体做法在本实施例中就不再详细说明。
[0053]此外,容器识别获取模块在将获取到的脚本文件解析后,可以取得该脚本文件的源代码,之后在源代码中提取其中的自动识别功能的字段,然后修改该段源代码,将自动识别功能的识别范围限定为容器,之后将修改后的源代码进行格式化编译就获得了具有容器自动识别功能的脚本文件,通过该脚本文件的执行,就可令容器识别模块在物理机上自动识别获取容器了。
[0054]通过容器识别获取模块,监控客户端可以自动获取物理机中当前运行的容器。由于物理机上运行的容器数量并非是固定不变的,因此,监控客户端在每次执行监控指令时,都要先运行容器识别获取模块,以达到更新物理机当前系统中运行的容器数量的目的。
[0055]其次,在构建完成容器识别获取模块后,监控客户端会将该模块设置在物理机上,等待监控客户端的监控指令。当监控客户端启动,容器识别获取模块也将接收到执行指令,自动获取当前物理机上运行的所有容器的容器名称,并将所获取到的名称以列表的形式发送给监控客户端。
[0056]202、根据容器的名称查询该容器的地址。
[0057]通过上述102中的介绍,可以看出物理机上每创建一个容器,系统就会为该容器分配一个地址空间,用来运行该容器中的进程,因此,在一般情况下容器的名称与地址是一一对应的。因此,在确定了容器的名称后,基本上就可以确定该容器的地址。而在一些特殊情况下,如果有容器的名称相一致时,如果要确定容器的地址,则需要对该容器的名称进行分析,加以区分,也可以采用步骤201的方式,来获取容器其它的区别属性信息,进而来确定该容器所对应的地址。
[0058]203、根据容器的地址查询物理机的内存读取对应容器的分组信息。
[0059]根据在步骤103中的介绍,容器是采用Cgroup技术来进行资源管理的,在Cgroup文件系统中下设有9个cgroups子系统,通过不同的子系统可以实现对容器资源的有效管理,其中也包括对容器中进程的管理。
[0060]上述的9个子系统将容器的信息划分为多组的组信息,监控客户端可以根据容器的地址来查询该物理机的内存,进而获取到该容器分组信息。例如,获取容器的CPU资源报告,可以通过查看cgroups子系统中的cpuacct的文件目录下进行查找,相对应所给出的查询路径为“/cgroup/ID/cpuacct”,其中,“/cgroup”为Cgroup文件系统的根目录,“/ID”为容器的地址,“/cpuacct”为cpuacct子系统的系统信息目录。同理,想要获取容器的内存资源报告,可以通过“/cgroup/ID/memory”的查询路径来获取对应的内存资源信息。通过这样的方式,还可以获取进程是否允许访问设备的信息,进程被挂起或者恢复的信息等。
[0061]204、根据分组信息逐条读取其内包含的信息获取容器对应的进程信息。
[0062]在获取到分组信息后,监控客户端会对所在组别的目录内对所有的信息进行逐条读取,获取需要的进程信息。例如,在获取CPU资源报告的进程信息时,在cpuacct的文件目录内,读取CPU资源使用信息。该信息所表示的为该容器中的进程在当前运行状态下所占用的CPU资源。
[0063]进一步的,通过获取到的信息,还可以统计出在一定时间段内,该容器内进程所占用的CPU资源总量。并且通过与从物理机上获取的CPU总量进行计算,得出在该段时间内该容器中进程的CPU占用率。
[0064]同理,在获取对应容器的内存资源信息后,可以采用同样的方式来获取该容器中进程的内存使用情况以及内存的占用率。
[0065]通过计算后得到的数值可以作为监控客户端监控该物理机中容器的采样值,用于对该容器的监控调节。
[0066]进一步的,作为对上述方法的实现,本发明实施例提供了一种基于容器技术的进程信息获取装置,该装置设置于使用了容器化技术的物理机内,如图3所示,该装置包括:
[0067]第一获取单元31,用于获取物理机上运行的至少一个容器的名称。其中,在物理机在反馈容器的名称时,可以是逐条的发送,再由监控客户端进行整理、制成列表等工作,也可以是在发送前将所有的容器名称制成名称列表后再发送给监控客户端,本实施例对此不进行具体限定。
[0068]查询单元32,用于根据所述第一获取单元31获取的名称查询所述容器的地址。其中,所述容器的地址是指该容器内的进程所分配的地址空间。
[0069]第二获取单元33,用于根据所述查询单元32查询的地址 获取所述容器的进程信息。其中,所述容器的进程信息是通过Cgroup文件系统中的cgroups子系统获取的。
[0070]进一步的,如图4所示,所述第一获取单元31包括:
[0071]设置子单元311,用于在物理机上设置具有自动识别功能的容器识别获取模块。其中,容器识别获取模块用于自动获取当前物理机上运行的容器。
[0072]运行子单元312,用于运行所述设置子单元311设置的容器识别获取模块获取物理机上运行的至少一个容器的名称。
[0073]进一步的,如图5所示,所述设置子单元311包括:
[0074]构建模块3111,用于获取具有自动识别功能的脚本文件,对所述脚本文件进行解析,将容器自动识别功能添加到所述脚本文件中,得到所述容器识别获取模块。
[0075]设置模块3112,用于将所述构建模块3111构建的容器识别获取模块设置在所述物理机上。
[0076]进一步的,所述查询单元32还用于,对所述容器的名称进行分析,确定与所述容器的名称对应的地址。
[0077]进一步的,如图6所示,所述第二获取单元33包括:
[0078]查询子单元331,用于根据所述容器的地址查询所述物理机的内存。
[0079]读取子单元332,用于根据所述查询子单元331查询的内存读取对应容器的分组信息。其中,对应容器的分组信息为该容器中所有的cgroups子系统的信息。
[0080]所述读取子单元332还用于,根据所述分组信息逐条读取其内包含的信息。
[0081]获取子单元333,用于根据所述读取子单元332读取的信息获取所述容器对应的进程信息。该进程信息为不同的cgroups子系统内所含有的关于进程的信息。
[0082]进一步的,所述读取子单元332读取对应容器的分组信息包括CPU资源报告,内存限制以及产生内存资源报告。还可以获取进程是否允许访问设备的信息,进程被挂起或者恢复的信息等。
[0083]进一步的,所述读取子单元332读取的CPU资源报告包括所述容器内的进程所占用的CPU资源信息。
[0084]进一步的,如图7所示,该装置还包括:
[0085]统计单元34,用于对所述第二获取单元33获取的CPU资源进行统计,获取一定时间段内,所述容器占用的CUP总量。
[0086]进一步的,如图7所示,该装置还包括:
[0087]计算单元35,用于将所述统计单元34获取的所述容器占用的CPU总量和物理机上获取的CPU总量进行运算,得到所述容器的CUP占用率。
[0088]此外,本发明实施例还提供了一种监控客户端,在监控客户端内设置有上述的基于容器技术的进程信息获取装置,该监控客户端安装在应用了容器化技术的物理机上,用于获取物理机上运行的至少一个容器的名称,并根据该容器的名称查询容器的地址,再根据该容器的地址获取容器的进程信息。
[0089]综上所述,本发明实施例所采用的基于容器技术的进程信息获取方法及装置,是在容器化技术的环境下,通过获取物理机上运行的容器名称,查询该容器的地址,在根据该地址来获取容器的进程信息。相比于现有的进程信息获取的方式,通过指定的调用指令来获取对应的进程信息,由于在容器技术的环境内,所有容器共享Linux内核,导致获取的进程信息为整个Linux内核的相关特性。而本发明实施例可以将物理机中单个容器内的进程信息提取出来,再通过统计、分析还可以对固定容器内的进程实现实时监控与报警,从而提高了系统运行的稳定性与安全性。
[0090]本发明还公开了下述方案:
[0091]Al、一种基于容器技术的进程信息获取方法,所述方法包括:
[0092]获取物理机上运行的至少一个容器的名称;
[0093]根据所述容器的名称查询所述容器的地址;
[0094]根据所述容器的地址获取所述容器的进程信息。
[0095]A2、根据Al所述的方法,所述获取物理机上运行的至少一个容器的名称包括:
[0096]在物理机上设置具有自动识别功能的容器识别获取模块;
[0097]运行所述容器识别获取模块获取物理机上运行的至少一个容器的名称。
[0098]A3、根据A2所述的方法,所述在物理机上设置具有自动识别功能的容器识别获取模块包括:
[0099]构建所述容器识别获取模块;
[0100]将所述容器识别获取模块设置在所述物理机上。
[0101]A4、根据A3所述的方法,所述构建所述容器识别获取模块包括:
[0102]获取具有自动识别功能的脚本文件;
[0103]对所述脚本文件进行解析,将容器自动识别功能添加到所述脚本文件中,得到所述容器识别获取模块。
[0104]A5、根据A1-A4中任一项所述方法,所述根据所述容器的名称查询所述容器的地址包括:
[0105]对所述容器的名称进行分析,确定与所述容器的名称对应的地址。
[0106]A6、根据A5所述方法,所述根据所述容器的地址获取所述容器的进程信息包括:
[0107]根据所述容器的地址查询所述物理机的内存读取对应容器的分组信息;
[0108]根据所述分组信息逐条读取其内包含的信息获取所述容器对应的进程信息。
[0109]A7、根据A6所述的方法,所述分组信息包括CPU资源报告,内存限制以及产生内存资源报告。
[0110]AS、根据A7所述的方法,所述CPU资源报告包括所述容器内的进程所占用的CPU
资源信息。
[0111]A9、根据A8所述的方法,还包括:
[0112]对所述容器内的进程所占用的CPU资源进行统计,获取一定时间段内,所述容器占用的CUP总量。
[0113]A10、根据权利要去A9所述的方法,还包括:
[0114]将所述容器占用的CPU总量和物理机上获取的CPU总量进行运算,得到所述容器的CUP占用率。
[0115]B11、一种基于容器技术的进程信息获取装置,所述装置包括:
[0116]第一获取单元,用于获取物理机上运行的至少一个容器的名称;
[0117]查询单元,用于根据所述第一获取单元获取的名称查询所述容器的地址;
[0118]第二获取单元,用于根据所述查询单元查询的地址获取所述容器的进程信息。
[0119]B12、根据Bll所述的装置,所述第一获取单元包括:
[0120]设置子单元,用于在物理机上设置具有自动识别功能的容器识别获取模块;
[0121]运行子单元,用于运行所述设置子单元设置的容器识别获取模块获取物理机上运行的至少一个容器的名称。
[0122]B13、根据B12所述的装置,所述设置子单元包括:
[0123]构建模块,用于获取具有自动识别功能的脚本文件,对所述脚本文件进行解析,将容器自动识别功能添加到所述脚本文件中,得到所述容器识别获取模块;
[0124]设置模块,用于将所述构建模块构建的容器识别获取模块设置在所述物理机上。
[0125]B14、根据B11-B13中任一项所述装置,所述查询单元还用于,对所述容器的名称进行分析,确定与所述容器的名称对应的地址。
[0126]B15、根据B14所述装置,所述第二获取单元包括:
[0127]查询子单元,用于根据所述容器的地址查询所述物理机的内存;
[0128]读取子单元,用于根据所述查询子单元查询的内存读取对应容器的分组信息;
[0129]所述读取子单元还用于,根据所述分组信息逐条读取其内包含的信息;
[0130]获取子单元,用于根据所述读取子单元读取的信息获取所述容器对应的进程信息。
[0131]B16、根据B15所述的装置,所述读取子单元读取对应容器的分组信息包括CPU资源报告,内存限 制以及产生内存资源报告。
[0132]B17、根据B16所述的装置,所述读取子单元读取的CPU资源报告包括所述容器内的进程所占用的CPU资源信息。
[0133]B18、根据B17所述的装置,还包括:
[0134]统计单元,用于对所述第二获取单元获取的CPU资源进行统计,获取一定时间段内,所述容器占用的CUP总量。
[0135]B19、根据权利要去B18所述的装置,还包括:
[0136]计算单元,用于将所述统计单元获取的所述容器占用的CPU总量和物理机上获取的CPU总量进行运算,得到所述容器的CUP占用率。
[0137]C20、一种监控客户端,包括如B11-B19中任一项所述的容器进程监控装置。
[0138]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0139]可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
[0140]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0141]在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0142]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0143]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0144]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0145]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0146]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的发明名称(如确定网站内链接等级的装置)中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0147]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
【主权项】
1.一种基于容器技术的进程信息获取方法,其特征在于,所述方法包括: 获取物理机上运行的至少一个容器的名称; 根据所述容器的名称查询所述容器的地址; 根据所述容器的地址获取所述容器的进程信息。2.根据权利要求1所述的方法,其特征在于,所述获取物理机上运行的至少一个容器的名称包括: 在物理机上设置具有自动识别功能的容器识别获取模块; 运行所述容器识别获取模块获取物理机上运行的至少一个容器的名称。3.根据权利要求2所述的方法,其特征在于,所述在物理机上设置具有自动识别功能的容器识别获取模块包括: 构建所述容器识别获取模块; 将所述容器识别获取模块设置在所述物理机上。4.根据权利要求3所述的方法,其特征在于,所述构建所述容器识别获取模块包括: 获取具有自动识别功能的脚本文件; 对所述脚本文件进行解析,将容器自动识别功能添加到所述脚本文件中,得到所述容器识别获取模块。5.根据权利要求1-4中任一项所述方法,其特征在于,所述根据所述容器的名称查询所述容器的地址包括: 对所述容器的名称进行分析,确定与所述容器的名称对应的地址。6.根据权利要求5所述方法,其特征在于,所述根据所述容器的地址获取所述容器的进程信息包括: 根据所述容器的地址查询所述物理机的内存读取对应容器的分组信息; 根据所述分组信息逐条读取其内包含的信息获取所述容器对应的进程信息。7.根据权利要求6所述的方法,其特征在于,所述分组信息包括CPU资源报告,内存限制以及产生内存资源报告。8.根据权利要求7所述的方法,其特征在于,所述CPU资源报告包括所述容器内的进程所占用的CPU资源信息。9.一种基于容器技术的进程信息获取装置,其特征在于,所述装置包括: 第一获取单元,用于获取物理机上运行的至少一个容器的名称; 查询单元,用于根据所述第一获取单元获取的名称查询所述容器的地址; 第二获取单元,用于根据所述查询单元查询的地址获取所述容器的进程信息。10.一种监控客户端,其特征在于,包括如权利要求9所述的容器进程监控装置。
【专利摘要】本发明公开了基于容器技术的进程信息获取方法及装置,涉及web平台技术领域,解决了使用现有的方式获取容器中的进程参数时,只能获取到整个Linux内核的相关特性,而无法针对单个容器中的进程信息进行查询的问题。本发明主要的技术方案为:获取物理机上运行的至少一个容器的名称;根据所述容器的名称查询所述容器的地址;根据所述容器的地址获取所述容器的进程信息。本发明主要用于容器化技术中获取单个容器内的进程信息。
【IPC分类】G06F11/30, G06F9/455, G06F9/50
【公开号】CN104899077
【申请号】CN201510375130
【发明人】许斯亮, 赵鹏
【申请人】北京奇虎科技有限公司, 奇智软件(北京)有限公司
【公开日】2015年9月9日
【申请日】2015年6月30日

最新回复(0)