使用 cAdvisor 监控容器
1.启动两个容器用于测试
[root@host1 ~]# docker run --rm -d --name redis redis; \
docker run --rm -d -p 80:80 --name myweb httpd
91c25ff670d44495358476dc68c2e97b8f0db6df5c8f87c43d227ddf153cce8f
6365631d9ffd81b30ad003335a7e1110cc43ef95bdbd0800286de104c084ea28
[root@host1 ~]# docker ps | grep -E "redis|myweb"
6365631d9ffd httpd "httpd-foreground" 7 seconds ago Up 6 seconds 0.0.0.0:80->80/tcp, [::]:80-
>80/tcp myweb
91c25ff670d4 redis "docker-entrypoint.s…" 7 seconds ago Up 6 seconds 6379/tcp redis
2.创建并启动 cAdvisor 容器
[root@host1 ~]# docker run --privileged -d \
--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 \
--name=cadvisor \
lagoudocker/cadvisor:v0.37.0
Unable to find image 'lagoudocker/cadvisor:v0.37.0' locally
v0.37.0: Pulling from lagoudocker/cadvisor
df20fa9351a1: Pull complete
69166b12f0e3: Pull complete
843794b5c008: Pull complete
99bbb51fff9a: Pull complete
Digest: sha256:aa9694377d3be56d53b81b0aeecd5880c0832100923e3ed50a8229ef3e1704b1
Status: Downloaded newer image for lagoudocker/cadvisor:v0.37.0
0dbc8a6698d23b1b346559e03b43b40c6f928ab12bf90053ed018086f8646e72
3.访问 cAdvisor 监控服务
(http://192.168.197.9:8080/)
进入 Docker Containers 界面
Subcontainers 显示正在运行的容器列表
4.cAdvisor 配置
[root@host1 ~]# docker run --volume /:/rootfs:ro \
> --volume /var/run:/var/run:rw \
> --volume /sys:/sys:ro \
> --volume /var/lib/docker/:/var/lib/docker:ro \
> --volume /dev/disk/:/dev/disk:ro \
> --publish 8080:8080 \
> --name cadvisor-stdout \
> lagoudocker/cadvisor:v0.37.0 \
> --storage_duration=5m0s --storage_driver=stdout >> data
W0915 15:08:04.595937 1 manager.go:159] Cannot detect current cgroup on cgroup v2
W0915 15:08:04.619068 1 nvidia.go:61] NVIDIA GPU metrics will not be available: no NVIDIA devices found
W0915 15:08:04.636104 1 manager.go:288] Could not configure a source for OOM detection, disabling OOM events: open /dev/kmsg: no such file or directory
^C
I0915 15:25:36.960861 1 manager.go:1185] Exiting thread watching subcontainers
I0915 15:25:36.960875 1 manager.go:403] Exiting global housekeeping thread
I0915 15:25:36.961011 1 cadvisor.go:245] Exiting given signal: interrupt
注意:
这些是 cadvisor 启动时的警告信息(非致命错误),不会影响其核心监控功能,容器通常已正常启动。以下是具体解释和验证方法:
-
Cannot detect current cgroup on cgroup v2
- 原因:你的系统使用了
cgroup v2
(新一代进程资源管理机制),而 cadvisor 对 cgroup v2 的兼容检测存在小问题。 - 影响:不影响基本的容器 / 主机资源监控(CPU、内存、磁盘等核心指标仍可采集)。
- 原因:你的系统使用了
-
NVIDIA GPU metrics will not be available: no NVIDIA devices found
- 原因:系统中没有 NVIDIA 显卡,cadvisor 无法采集 GPU 相关指标。
- 影响:仅 GPU 监控不可用,其他监控不受影响(如果你的环境没有 GPU,此警告可忽略)。
-
Could not configure a source for OOM detection... open /dev/kmsg: no such file or directory
- 原因:容器默认没有权限访问主机的
/dev/kmsg
设备(用于检测内存溢出事件)。 - 影响:OOM(内存溢出)事件监控不可用,但不影响常规资源监控。
- 原因:容器默认没有权限访问主机的
总结:这些警告是 cadvisor 对特定环境(如无 GPU、cgroup v2、权限限制)的正常提示,核心监控功能已正常工作,直接使用即可。