[发明专利]一种宿主机上监控容器进程的方法、装置及计算设备有效
申请号: | 202010679211.8 | 申请日: | 2020-07-15 |
公开(公告)号: | CN111563024B | 公开(公告)日: | 2020-10-16 |
发明(设计)人: | 高斌 | 申请(专利权)人: | 北京升鑫网络科技有限公司 |
主分类号: | G06F11/30 | 分类号: | G06F11/30 |
代理公司: | 北京鼎承知识产权代理有限公司 11551 | 代理人: | 顾可嘉;夏华栋 |
地址: | 102199 北京市大兴区北京经济*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 宿主 监控 容器 进程 方法 装置 计算 设备 | ||
本发明实施例提供了一种宿主机上监控容器进程的方法、装置、可读存储介质及计算设备,用以实时地获取准确的容器视角的进程信息,方法包括:注册宿主机进程监听;当监听到进程创建事件时,获取创建的进程对应的宿主机内进程信息;根据所述宿主机内进程信息,确定所述创建的进程对应的容器信息;根据所述宿主机内进程信息,确定所述创建的进程对应的容器内进程信息;将所述创建的进程对应的容器信息和容器内进程信息通知上层业务应用。
技术领域
本发明涉及计算机容器技术领域,尤其涉及一种宿主机上监控容器进程的方法、装置、可读存储介质及计算设备。
背景技术
容器是一个独立的运行时环境。通过将软件应用和应用所依赖的库、配置、工具等打包在一起,实现应用的快速和敏捷部署。容器和虚拟机相比更加轻量,容器所在的主机称为宿主机。
以docker为代表的容器引擎技术是一种虚拟化技术,基于Linux内核提供的命名空间(namespace)特性将容器资源进行隔离,命名空间(namespace)使用inode号唯一标识。进程命名空间(pid namespace)是对进程的容器虚拟化,一个容器内的进程具有相同的进程命名空间(pid namespace),不同的容器一般具有不同的进程命名空间(pidnamespace)。一个容器内进程只能看到和自己具有相同进程命名空间(pid namespace)的进程,即只能看到本容器内的进程,从而在某种程度上实现了容器间的隔离。
目前容器技术作为云原生技术的基石,应用越来越广泛。在宿主机上进行容器进程监控是一类通用需求。宿主机上的所有容器共用宿主机内核,因此在宿主机上能看到所有主机进程和容器进程,但是由于进程命名空间(pid namespace)的存在,以目前的技术,从宿主机上无法获取到的容器内进程信息,返回结果存在一定程度的失真,例如宿主机上看到的进程号(pid)和容器内看到的不一致,宿主机上获取到的进程所属用户(uid)不是容器内的用户。
docker提供了docker top命令,用来查看容器内的进程信息,docker top需要传入容器名或者容器id信息,返回容器内所有进程的详细信息。docker top命令实际上是通过在容器内执行ps命令获取容器内所有进程的快照,无法实时监控进程;而且,docker top无法准确获取到容器视角的进程信息,容器内进程信息存在失真。
发明内容
为此,本发明提供了一种宿主机上监控容器进程的方法、装置、可读存储介质及计算设备,以力图解决或者至少缓解上面存在的至少一个问题。
根据本发明实施例的一个方面,提供了一种宿主机上监控容器进程的方法,包括:
注册宿主机进程监听;
当监听到进程创建事件时,获取创建的进程对应的宿主机内进程信息;
根据宿主机内进程信息,确定创建的进程对应的容器信息;
根据宿主机内进程信息和创建的进程对应的容器信息,确定创建的进程对应的容器内进程信息;
将创建的进程对应的容器信息和容器内进程信息通知上层业务应用。
可选地,根据宿主机内进程信息,确定创建的进程对应的容器信息,包括:
根据宿主机内进程信息包括的进程号,查询创建的进程的命名空间inode号;
获取多个容器的启动进程的进程号;
根据多个容器的启动进程的进程号,查询多个容器的启动进程的命名空间inode号;
根据多个容器的启动进程的命名空间inode号和创建的进程的命名空间inode号,确定创建的进程对应的容器;
获取创建的进程对应的容器信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京升鑫网络科技有限公司,未经北京升鑫网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010679211.8/2.html,转载请声明来源钻瓜专利网。