有关 cAdvisor 的基础知识、安装和使用方法介绍

1. cAdvisor

cAdvisor 是 Google 用来让容器用户了解其所运行容器的资源使用和性能特征的工具。cAdvisor 是一个用来收集、聚合、处理以及导出正在运行的容器信息的运行时守护进程。

具体来说,对于每个容器 cAdvisor 都保留了其资源隔离参数、历史资源使用情况、以及完整的历史资源使用和网络统计直方图。这个数据,可以通过容器或主机范围内导出。它是除了 Kubernetes 外, Google 支持 Docker 的另一个重要应用.

2. cAdvisor 安装和使用

环境:centos 7.4 amd64

2.1. 通过 Docker 容器运行 cAdvisor

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
$ docker search cadvisor
$ docker pull google/cadvisor
$ docker run \
--volume=/:/rootfs:ro \  
--volume=/var/run:/var/run:rw \  
--volume=/sys:/sys:ro \  
--volume=/var/lib/docker/:/var/lib/docker:ro \  
--volume=/cgroup:/cgroup:ro \
--privileged=true \
--userns=host \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest

$ docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/cgroup:/cgroup:ro --privileged=true --userns=host --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest

Note: 在 Ret Hat, CentOS, Fedora 等发行版上需要传递如下参数,因为 SELinux 加强了安全策略,如不设置可能会导致采集信息失败。上面命令中,根据说明 Running cAdvisor ,附加以下几个命令:

  • –userns=host
  • –privileged=true
  • –volume=/cgroup:/cgroup:ro

运行 cadvisor 容器的 docker run 部分命令选项介绍:

  • –detach=true 指定容器在后台运行
  • –privileged=true 设置为true之后,容器内的root才拥有真正的root权限,可以看到host上的设备,并且可以执行mount;否者容器内的root只是外部的一个普通用户权限
  • –volume=/cgroup:/cgroup:ro 由于cadvisor需要通过socket访问docker守护进程,在CentOs和RHEL系统中需要这个这个选项。

2.1.1. 启动过程中的问题

2.1.2. 使用

打开浏览器,输入:http://Host_IP:8080 ,查看Cadvisor主页。

可以看到:CPU的使用率、内存使用率、网络吞吐量以及磁盘空间利用率,点击界面顶部 docker 可以进入查看某个docker容器的详细信息

2.2. 二进制可执行文件使用 cAdvisor

cAdvisor 项目在他的 release 页面发布了可执行的二进制,这些文件可以直接下载并执行

1
2
3
$ wget https://github.com/google/cadvisor/releases/download/v0.26.1/cadvisor
$ chmod 755 cadvisor 
$ ./cadvisor

默认情况下 cAdvisor 的网页端口为 8080,直接访问本地 http://localhost:8080 即可

2.3. REST API

cadvisor还提供远程调用的REST API,详情可以参考如下文档:https://github.com/google/cadvisor/blob/master/docs/api.md

另外,github上还有提供了一个用Go语言实现的调用REST API的客户端:https://github.com/google/cadvisor/tree/master/client

3. 关于 cAdvisor 数据采集

Ref: https://blog.opskumu.com/cadvisor.html

4. See Also

Thanks to the authors 🙂