cAdvisor监控docker容器

7 篇文章 1 订阅
2 篇文章 0 订阅

背景

一句话说明需求:

  • Prometheus监控单台容器,而不是K8S集群时,推荐使用cAdvisor。
  • 使用cAdvisor容器监控docker容器指标,需要拉取来自DockerHub或gcr.io的cAdvisor镜像。
  • cAdvisor镜像的不同版本差异较大。

一句话说明解决:

  • 拉取不同版本的cAdvisor镜像,创建监控容器后,并进行指标对比。

短话长说:

  • 使用Prometheus监控非K8S的docker服务器有必要使用cadvisor。但Docker和Google两家公司之间不对付,因此Google已经停止在K8S中使用docker(这个是旧闻),而cadvisor在DockerHub上的镜像仓库也已经两年没更新,cadvisor镜像更是五年都没有更新,且已经在DockerHub仓库首页说明“已停用google/cadvisor仓库,使用cadvisor镜像请到gcr.io/cadvisor/cadvisor(谷歌自己家的镜像仓库)”。
    在这里插入图片描述

参考链接

【Docker公司:DockerHub上的Google官方镜像仓库】
【Google公司:gcr.io上的cAdvisor镜像仓库】
【GitHub:Google官方cAdvisor代码仓库】

实际操作

从DockerHub拉取镜像,监控容器

  1. 在安装有DockerDesktop的Windows服务器上拉取cadvisor镜像,打包成tar文件。
    Windows终端执行以下命令。
PS C:\Users\Czm> docker pull google/cadvisor
PS C:\Users\Czm> docker save google/cadvisor:latest -o d:/googleCadvisorLatest231010.tar
  1. 上传tar文件到Linux服务器,在Linux本地加载镜像。
docker load -i googleCadvisorLatest231010.tar 
Loaded image: google/cadvisor:latest
  1. 手动创建cadviso容器监控其它docker容器。
    参考官方说明【GitHub:Google官方cAdvisor代码仓库】,修改docker run命令。
docker run -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker/:/var/lib/docker:ro -v /dev/disk:/dev/disk:ro -p 8082:8080 -d --name=cadvisor google/cadvisor:latest

命令无误的话,可查看容器是否运行正常。

[root@control-plane prometheus]# docker ps
CONTAINER ID   IMAGE                             COMMAND                  CREATED         STATUS        PORTS                                       NAMES
a533a25351b6   google/cadvisor:latest            "/usr/bin/cadvisor -…"   3 seconds ago   Up 1 second   0.0.0.0:8082->8080/tcp, :::8082->8080/tcp   cadvisor
a85dd0af08d3   setzero/kubeadm-ha:1.22.4-amd64   "tini -- /bin/sh -c …"   7 months ago    Up 2 months   0.0.0.0:12480->80/tcp, :::12480->80/tcp     kubeadm-ha

访问web之前记得开放防火墙策略。

[root@control-plane prometheus]# firewall-cmd --zone=public --add-port=8082/tcp --permanent 
success
[root@control-plane prometheus]# firewall-cmd --reload
success
  1. 访问web界面查看相关指标。
    在这里插入图片描述

从gcr.io拉取镜像,监控容器

  1. 在安装有DockerDesktop的Windows服务器上拉取cadvisor镜像,打包成tar文件。
PS C:\Users\Czm> docker pull gcr.io/cadvisor/cadvisor:v0.47.2
PS C:\Users\Czm> docker save gcr.io/cadvisor/cadvisor:v0.47.2 -o d:/gcr.ioCadvisorV0.47.2_20230627.tar
  1. 上传tar文件到Linux服务器,在Linux本地加载镜像。
docker load -i gcr.ioCadvisorV0.47.2_20230627.tar 
  1. 手动创建cadviso容器监控其它docker容器,指定不同的web端口。
docker run -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker/:/var/lib/docker:ro -v /dev/disk:/dev/disk:ro -p 8083:8080 -d --name=cadvisor-0472 gcr.io/cadvisor/cadvisor:v0.47.2

记得放通防火墙策略

firewall-cmd --zone=public --add-port=8083/tcp --permanent 
firewall-cmd --reload
  1. 访问web界面查看相关指标,对比来自不同仓库、不同版本的cadvisor容器监控指标有何不同。
    在这里插入图片描述
    在这里插入图片描述

  2. 结合Prometheus创建job获取各个容器的监控指标。
    (此处不讨论Prometheus,详情请参考我的其它文章)
    在这里插入图片描述
    在这里插入图片描述

cadvisor镜像文件下载地址

【gcr.ioCadvisorV0.47.2_20230627.tar】
【googleCadvisorLatest231010.tar】

结束

确实有些场景,比如docker-compose运行的Harbor服务器就并非K8S集群,需要通过cAdvisor监控容器。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值