cAdvisor 使用体验:Docker容器监控神器

a year ago

cAdvisor 是什么?

cAdvisor(Container Advisor)是 Google 开源的一个容器监控工具,说白了就是个"体检医生",专门负责检查你的容器们是不是健康,吃了多少内存,CPU 跑得怎么样。

功能特点:

  • 零配置启动:基本上拉个镜像就能用,不需要复杂的配置文件
  • 实时监控:不是那种过几分钟才更新一次的垃圾,是真正的实时
  • Web 界面:有个还算好看的网页界面,点点鼠标就能看数据
  • 资源占用小:监控工具本身不会吃太多资源
  • 支持多种导出:可以把数据喂给 Prometheus、InfluxDB 等其他工具

https://appstore.lazycat.cloud/#/shop/detail/wcloud.gblw.app.cadvisor

快速上手

应用安装后,打开主页面,它就像一个概览仪表盘,把当前服务器的资源使用情况和所有正在运行的容器都列出来了。

image.png

/ (root) 这个是整个服务器的全局概览。 Docker Containers 和 Podman Containers 这是 cAdvisor 最核心的功能!它会自动检测你服务器上正在运行的容器引擎。

image.png Docker Containers:如果你点击这个链接,它会列出所有由 Docker 引擎启动的容器。你可以看到每个容器的 ID、名字,以及它们正在使用的资源

image.png

Podman Containers:如果你用的是 Podman 而不是 Docker,cAdvisor 也能识别出来。点击这个链接,你就能看到 Podman 启动的所有容器。

点击任何一个容器,你就能进入到那个容器的专属监控页面,看到它详细的 CPU、内存、网络、磁盘等资源使用图表。

image.png

Subcontainers 这个部分稍微复杂一点,但你可以把它理解为更细粒度的资源分组。

image.png 在 Linux 系统里,资源管理是通过 cgroup (Control Group) 来实现的。cAdvisor 把这些 cgroup 里的资源分组也展示出来了。

/init.scope、/zcapp.slice、/sys_docker.slice 等等,这些都是系统根据不同的服务和进程自动创建的 cgroup。

sys_docker.slice 这个比较常见,它通常代表了 Docker 服务本身和它管理的所有容器。

对普通用户来说,你可能不需要经常关注这个部分。

它主要用于更底层的资源分析和故障排查。如果你发现某个容器有问题,但从容器级别看不出端倪,可以来这里看看它所在的 cgroup 有没有异常。

solation 这个部分展示的是服务器的硬件资源隔离情况。

image.png CPU:Allowed Cores 后面列出的 0 1 2 3 4 5 6 7 表示这个服务器总共有 8 个 CPU 核心(编号从 0 到 7),并且所有的核心都可供使用。

Memory:这里会显示服务器的总内存大小。

image.png 纵坐标(Cores):单位是“核心数”。如果 CPU 使用量是 1.0,就意味着它正在消耗一个完整核心的计算资源。如果是 2.0,就是两个核心。

横坐标:是时间轴,显示了 CPU 使用量随时间的变化。

看图中的曲线,它在 1.0 到 2.0 之间上下波动,说明这个容器一直在繁忙工作,平均使用了约 1.5 个核心的计算资源。这个数据非常直观,能让你一眼看出你的应用是不是很“吃”CPU。

image.png

蓝色曲线 (Total):

这条线代表了总的内存使用量。它包含了容器(或系统)使用的所有内存,包括应用程序直接使用的、缓存的、以及其他被系统占用的部分。

在图上,蓝色曲线一开始在 13,000 兆字节左右,然后突然降到了 12,400 兆字节左右,之后就保持平稳了。

红色曲线 (Hot):

这条线代表了**“热”内存使用量**,也就是应用程序真正正在使用的、活跃的内存。 在 11:42:20 AM 左右,两条曲线都出现了一个明显的下降。这通常意味着应用程序在这个时间点释放了大量的内存。

总结

cAdvisor 确实是个好东西,特别是对于那些想要简单快速监控 Docker 容器的同学。

作者
天天