Prometheus监控docker,需要安装cadvisior,命令如下

官方参考 https://github.com/google/cadvisor/blob/master/docs/running.md

命令1
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 \
    --restart=always \
    google/cadvisor:latest

执行完成后,发现容器一直在重启,查看日志报错

思考过程

因为字面意思是找不到cpu挂载点的问题,我猜可能是挂载了" / , /sys"等特殊目录,后来按照官方的建议试了各种命令都没成功能

方案一 让使用官方推荐的测试后发现,由于众所周知的原因无法访问网络原因失败

gcr.io/cadvisor/cadvisor:vxxx

解决方案二:使用其他镜像源,参考 成功创建https://www.cnblogs.com/odetocherryblossoms/p/16433547.html

命令2
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 \
  --detach=true \
  --name=cadvisor \
  --privileged \
  --device=/dev/kmsg \
  lagoudocker/cadvisor:v0.37.0

测试访问 ip:8080/metrics 

解决方案3 我出现此问题的原因

因为我之前在vmware环境+centos7虚拟机的环境下:执行是没问题的,现在的运行环境是pve的lxc容器中的docker,于是我在pve的虚拟机上试了一下,命令1也正常能执行范围正常。

所以分析猜测可能是cadvisior采集器对docker宿主机的环境有什么限制,因为lxc本质上也是一种容器它复用系统的cpu等设备,此时就相当于容器套娃了,当时lxc安装docker时也无法直接启动,需要修改配置后才能启动。

当然也有可能是我lxc用的centos 8 的原因,未验证。

希望对大家有所帮助

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐