【问题标题】:How to fix cadvisor error `devicemapper filesystem stats will not be reported`?如何修复 cadvisor 错误“不会报告 devicemapper 文件系统统计信息”?
【发布时间】:2017-03-19 09:17:40
【问题描述】:

我正在按照here的说明运行官方的cadvisor Docker镜像google/cadvisor:v0.24.1(只用当前版本替换了标签而不是latest):

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:v0.24.1

查看容器内的日志,我看到了:

W0318 17:50:00.775708       1 fs.go:209] Could not get Docker devicemapper device: exit status 1
E0318 17:50:00.840177       1 factory.go:291] devicemapper filesystem stats will not be reported: stat /dev/mapper/dockervg-dockerlv_tmeta: no such file or directory

docker 命令将宿主机的根文件系统挂载到容器内/rootfs 下。 cadvisor不应该访问那里的dm设备吗?

我发现没有设置可以将 cadvisor 更改为真正的 rootfs。

我是否必须将 /dev/mapper 挂载到 /dev/mapper 的容器中?


是的,我正在使用 devicemapper:

$ docker info -f '{{ .Driver }}'
devicemapper

只是容器内部,/dev/mapper只有一个文件:

$ docker exec cadvisor  ls /dev/mapper -l
total 0
crw-------    1 root     root       10, 236 Mar 18 17:50 control

主机的真实/dev/mapper目录可以在容器内/rootfs/dev/mapper访问,但cadvisor只是不使用它...


在查看了一些 BMHATK 源代码之后,我认为 cadvisor 不支持这个用例,参见。 https://github.com/google/cadvisor/blob/master/utils/docker/docker.go#L64

metadataDevice = fmt.Sprintf("/dev/mapper/%s_tmeta", poolName)

所以它总是在/dev 而不是/rootfs 中寻找设备。此外,由于 iops 过多,下一个版本默认禁用 Thin_ls 观察程序。所以,没有它我可能就活不下去了。

【问题讨论】:

  • 你在使用 devicemapper 吗?包括docker info -f '{{ .Driver }}'的输出
  • 另外,您的 docker 主机使用什么。 Debian、Ubuntu、RHEL、CentOS、D4W、D4M 还是云提供商?
  • 我使用的是 CentOS 7。
  • 您是否还包括您使用的docker run 命令?谢谢。

标签: docker cadvisor


【解决方案1】:

CentOS 的说明包括您的docker run 命令中所需的额外参数(特权和映射 /cgroup 卷):

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  --privileged=true \
  --volume=/cgroup:/cgroup:ro \
  google/cadvisor:v0.24.1

更多详情请见these instructions

【讨论】:

  • 是的,文档中这么说,但我不使用 SELinux,所以我认为我不需要这个。我现在已经尝试过了,不幸的是,它不起作用。日志中显示相同的错误。无论如何感谢您的帮助!
  • 看起来--privileged 不包括我的设备文件夹中的符号链接,您可以直接将目录挂载为卷以使用-v /dev/mapper:/dev/mapper 解决此问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-07
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 2020-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多