Monitor | cAdvisor 基础
Contents
有关 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. 启动过程中的问题
Issue-1
Failed to start container manager: inotify_add_watch /sys/fs/cgroup/cpuacct,cpu: no such file or directory
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 🙂