cAdvisor (Container Advisor) provides container users an understanding of the resource usage and performance characteristics of their running containers. It is a running daemon that collects, aggregates, processes, and exports information about running containers. Specifically, for each container it keeps resource isolation parameters, historical resource usage, histograms of complete historical resource usage and network statistics. This data is exported by container and machine-wide.

前言

cAdvisor 是 google 开源的分析容器使用和性能特性的 工具。如果说节点运行着 kubectl,那我们就可以非常方便的集成 cdvisor(容器)监控。在默认情况下,可以通过 http://<host_ip>:4194 访问 cAdvisor 的管理界面。

Github 地址: cAdvisor

  • cAdvisor 可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况;
  • cAdvisor集成在Kubelet中,当kubelet启动时会自动启动cAdvisor,即一个cAdvisor仅对一台Node机器进行监控,kubelet的启动参数 –cadvisor-port 可以定义cAdvisor对外提供服务的端口,默认为4194
  • cAdvisor原生支持 Docker 容器,cAdvisor 容器是基于Google的 Imctfy 开发
  • cAdvisor 运行一个守护进程用来收集每一个容器的数据

执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
VERSION=v0.36.0 # use the latest release version from https://github.com/google/cadvisor/releases
sudo docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--publish=4194:4194 \
--detach=true \
--name=cadvisor \
--privileged \
--device=/dev/kmsg \
--volume=/cgroup:/cgroup:ro \
--privileged=true \
google/cadvisor:v0.33.0

注意:

  1. 在 Centos 系统中,SELinux 加强了安全策略,除了 Centos 系统,还有 Ret Hat ,Fedora
1
--privileged=true
  • 设置为 true 后, 容器内的 root 才能真的拥有 root 权限,否则就是一个 普通 用户;
    1. 由于cadvisor需要通过socket访问docker守护进程,在Centos和RHEL系统中需要这个选项:
    1
    --volume=/cgroup:/cgroup:ro 

然后我们看下这个监控的页面: http://{ip}:8080 , 不出意外的话,我们看到的是这个玩意:
cAdvisor

metrics

我们执行 curl http://127.0.0.1:4194/metrics

然后就可以看到一堆指标了