分享好友 最新动态首页 最新动态分类 切换频道
Docker 容器监控原理及 cAdvisor 的安装与使用
2024-12-27 04:23


生产环境中监控容器的运行状况十分重要,通过监控我们可以随时掌握容器的运行状态,做到线上隐患和问题早发现,早解决。所以今天我就和你分享关于容器监控的知识(原理及工具 cAdvisor)。

虽然传统的物理机和虚拟机监控已经有了比较成熟的监控方案,但是容器的监控面临着更大的挑战,因为容器的行为和本质与传统的虚拟机是不一样的,总的来说,容器具有以下特性:

  • 容器是短期存活的,并且可以动态调度
  • 容器的本质是进程,而不是一个完整操作系统
  • 由于容器非常轻量,容器的创建和销毁也会比传统虚拟机更加频繁

 Docker 容器的监控方案有很多,除了 Docker 自带的docker stats命令,还有很多开源的解决方案,例如 sysdig、cAdvisor、Prometheus 等,都是非常优秀的监控工具。

下面我们首先来看下,不借助任何外部工具,如何用 Docker 自带的docker stats命令实现容器的监控。

 


 使用 Docker 自带的docker stats命令可以很方便地看到主机上所有容器的 CPU、内存、网络 IO、磁盘 IO、PID 等资源的使用情况。下面我们可以具体操作看看。

 首先在主机上使用以下命令启动一个资源限制为 1 核 2G 的 nginx 容器:

容器启动后,可以使用​​命令查看容器的资源使用状态:

通过​​命令可以看到容器的运行状态如下:

从容器的运行状态可以看出,​​命令确实可以获取并显示 Docker 容器运行状态。但是它的缺点也很明显,因为它只能获取本机数据,无法查看历史监控数据,没有可视化展示面板。

因此,生产环境中我们通常使用另一种容器监控解决方案 cAdvisor。


cAdvisor 是谷歌开源的一款通用的容器监控解决方案。cAdvisor 不仅可以采集机器上所有运行的容器信息,还提供了基础的查询界面和 HTTP 接口,更方便与外部系统结合。所以,cAdvisor很快成了容器指标监控最常用组件,并且 Kubernetes 也集成了 cAdvisor 作为容器监控指标的默认工具。

 


下面我们以 cAdvisor 0.37.0 版本为例,演示一下 cAdvisor 的安装与使用。

cAdvisor 官方提供了 Docker 镜像,我们只需要拉取镜像并且启动镜像即可。

由于 cAdvisor 镜像存放在谷歌的 gcr.io 镜像仓库中,国内无法访问到。这里我把打好的镜像放在了 Docker Hub。你可以使用 docker pull lagoudocker/cadvisor:v0.37.0 命令从 Docker Hub 拉取。

首先使用以下命令启动 cAdvisor:

 此时,cAdvisor 已经成功启动,我们可以通过访问 ​​http://localhost:8080​​ 访问到 cAdvisor 的 Web 界面。

                                                                                                                                           cAdvisor 首页

cAdvisor 不仅可以监控容器的资源使用情况,还可以监控主机的资源使用情况。下面我们就先看下它是如何查看主机资源使用情况的。

 


 访问 ​​http://localhost:8080/containers/​​ 地址,在首页可以看到主机的资源使用情况,包含 CPU、内存、文件系统、网络等资源,如下图所示。

 


如果你想要查看主机上运行的容器资源使用情况,可以访问 ​​http://localhost:8080/docker/​​,这个页面会列出 Docker 的基本信息和运行的容器情况,如下图所示。

                                                                                                                         图3 Docker 容器

在上图中的 Subcontainers 下会列出当前主机上运行的所有容器,点击其中一个容器即可查看该容器的详细运行状态,如下图所示。

 总体来说,使用 cAdvisor 监控容器具有以下特点:

  • 可以同时采集物理机和容器的状态
  • 可以展示监控历史数据

了解 Docker 的监控工具,你是否想问,这些监控数据是怎么来的呢?下面我就带你了解一下容器监控的原理。

 


我们知道 Docker 是基于 Namespace、Cgroups 和联合文件系统实现的。其中 Cgroups 不仅可以用于容器资源的限制,还可以提供容器的资源使用率。无论何种监控方案的实现,底层数据都来源于 Cgroups。

Cgroups 的工作目录为​​​,​​目录下包含了 Cgroups 的所有内容。Cgroups包含很多子系统,可以用来对不同的资源进行限制。例如对CPU、内存、PID、磁盘 IO等资源进行限制和监控。

为了更详细的了解 Cgroups 的子系统,我们通过 ls -l 命令查看​​文件夹,可以看到很多目录:

 这些目录代表了 Cgroups 的子系统,Docker 会在每一个 Cgroups 子系统下创建 docker 文件夹。这里如果你对 Cgroups 子系统不了解的话,不要着急,这里你只需要明白容器监控数据来源于 Cgroups 即可。

 


下面我们以 memory 子系统(memory 子系统是Cgroups 众多子系统的一个,主要用来限制内存使用)为例,讲解一下监控组件是如何获取到容器的资源限制和使用状态的(即容器的内存限制)。

我们首先在主机上使用以下命令启动一个资源限制为 1 核 2G 的 nginx 容器:

注意:如果你已经创建过名称为 nginx 的容器,请先使用 docker  rm -f nginx 命令删除已经存在的 nginx 容器。

容器启动后,我们通过命令行的输出可以得到容器的 ID,同时 Docker 会在​​目录下以容器 ID 为名称创建对应的文件夹。

下面我们查看一下​​目录下的文件:

 可以看到 Docker 已经创建了以容器 ID 为名称的目录,我们再使用 ls 命令查看一下该目录的内容:

由上可以看到,容器 ID 的目录下有很多文件,其中 memory.limit_in_bytes 文件代表该容器内存限制大小,单位为 byte,我们使用 cat 命令(cat 命令可以查看文件内容)查看一下文件内容:

这里可以看到memory.limit_in_bytes 的值为2147483648,转换单位后正好为 2G,符合我们启动容器时的内存限制 2G。

通过 memory 子系统的例子,我们可以知道监控组件通过读取 memory.limit_in_bytes 文件即可获取到容器内存的限制值。了解完容器的内存限制我们来了解一下容器的内存使用情况。

可以看到当前内存的使用大小为 4259840 byte,约为 4 M。了解了内存的监控。

 


网络的监控数据来源是从 /proc/{PID}/net/dev 目录下读取的,其中 PID 为容器在主机上的进程 ID。下面我们首先使用 docker inspect 命令查看一下上面启动的 nginx 容器的 PID,命令如下:

可以看到容器的 PID 为 27348,使用 cat 命令查看一下 /proc/27348/net/dev 的内容

/proc/27348/net/dev 文件记录了该容器里每一个网卡的流量接收和发送情况,以及错误数、丢包数等信息。可见容器的网络监控数据都是定时从这里读取并展示的。

总结一下,容器的监控原理其实就是定时读取 Linux 主机上相关的文件并展示给用户。

 


k8s后面使用metrics serve,cAdvisor 是提供底层数据的,metrics-server 底层数据来源是 cAdvisor

最新文章
用AI绘制高清美女写真:搜索最强AI工具指南
综上所述,虽然各个工具都有着独特的优势和劣势,但在众多选择中,【搜狐简单AI】凭借着“功能丰富”、“操作简单”和“免费使用”的特点,成为了各类用户的好选择。无论你是想轻松做个有趣的美女写真,还是图像创作的新手,搜狐简单AI都能
青岛定制网页设计_青岛网页设计定制公司
青岛定制网页设计的优势分析:青岛定制网页设计能够根据企业自身的特点进行专门的设计,提供独一无二的网站体验。这样的设计方式不仅能够满足企业的品牌形象需求,还能有效地提升用户体验。通过定制化的网页设计,企业可以更好地展示自己的
预见2024:2024年中国在线旅游行业市场规模、竞争格局及发展前景预测 未来市场规模将超1.9万亿元
行业主要上市公司:携程(TCOM)、(TOUR)、同程旅行(0780)等本文核心数据:中国在线旅游交易规模;中国在线旅游平台排名;中国在线旅游区域竞争格局行业概况1、定义在线旅游是随着互联网发展而诞生的一种新型旅游商业模式,是指旅游消费者通过
英飞凌科技股份公司宣布已收购位于斯德哥尔摩的初创企业Imagimob有限公司,这是一家领先的平台提供商,致力于为边缘设备上的机器学习(ML)解决方案开发提供助力。通过此次收购,英飞凌进一步加强了其提供
TDK株式会社针对USB-C端口和其他高速接口的ESD保护应用推出一款超紧凑型TVS二极管。对于USB-C等符合USB4(第1版)规范且传输速度高达40 Gbit/s的高速接口 (Tx / Rx),ESD保护应用特别需要具有超低寄生电容和低钳位电压的TVS二极管。新的B74
自考靠谱的机构有哪些特点?
自考靠谱的机构有哪些特点?社会飞速发展,面临升职就业等压力,提升自我优势是必不可少的,拥有一个高学历或好文凭是关键,可以让就业的范围更广升职的机会更多。学历是判断个人素质的重要条件之一,企业也重视高学历的员工。下面本小编为
神马关键词推广_做神马关键词优化软件(神马关键词排名快速优化首页价格)
这个要具体看关键词的啊,差别的词是不一样的, 近来佛山市神马互联网科技有限公司推出关键词按天扣费很火,没有恶性点击,关键词24小时在线, 盼望可以帮到你;环境如下第一种,比方你是推广的北京地区假如你在上海,但是你账户启用了搜刮
阿里巴巴:今年营收 5000 亿,明年GMV要再增一万亿
疫情带来冲击和机遇,阿里稳健前行寻找向上新空间。5 月 22 日,阿里巴巴发布截至 3 月 31 日的 2020 年第四季度财报及全年财报。财报显示,2020 财年,阿里巴巴集团收入为人民币 5097.11 亿元,同比增长 35
Python爬虫教程——7个爬虫小案例(附源码)_爬虫实例
本文介绍了7个Python爬虫小案例,包括爬取豆瓣电影Top250、猫眼电影Top100、全国高校名单、中国天气网、当当网图书、糗事百科段子和新浪微博信息,帮助读者理解并实践Python爬虫基础知识。包含编程资料、学习路线图、源代码、
运动会活动策划书
~  时间一溜烟儿的走了,工作已经告一段落了,前方等待着我们的是新工作目标和挑战,想必现在的你有必要写一写策划书了。是不是无从下笔、没有头绪?下面是我收集整理的运动会活动策划书,仅供参考,欢迎大家阅读。    一、活动前言:
比漫熊漫画,比漫熊漫画安卓最新版,比漫熊漫画下载
比漫熊漫画是一款非常好用的小说漫画软件,比漫熊漫画功能丰富,确实在多个方面为漫画爱好者们提供了优质的阅读体验,用户可以根据类型地区作者等多种方式进行筛选,比漫熊漫画允许用户根据自己的需求切换各种漫画资源源,轻松找到自己喜欢
相关文章
推荐文章
发表评论
0评