当我们想知道docker容器的运行状态时,我们通常会使用docker stats命令,进行查看,但每次查看都要进入服务器(当然其实还可以通过docker API,这里就不展开了),而且没有可视化
然后发现一个工具cAdvisor,虽然功能相对其他监控没有那么强大,但平时查看容器运行状态也够用了,而且镜像比较小,才70M而已,于是乎~尝试下
1 拉取最新版cAdvisor镜像
docker pull google/cadvisor:latest
2 启动cAdvisor
我把端口绑到了8088
docker run -v /:/rootfs:ro \
-v /var/run:/var/run:rw \
-v /sys:/sys:ro \
-v /var/lib/docker/:/var/lib/docker:ro \
-p 8088:8080 \
--detach=true \
--privileged=true \
--name=cadvisor \
-m 100m \
--restart=always google/cadvisor:latest
3 解决cAdvisor无法启动的问题
浏览器访问:
ip地址:8088看看
发现访问不了
查看下docker的日志
docker logs -f cadvisor
附docker logs相关选项说明
Options:
--details 显示更多的信息
-f, --follow 跟踪实时日志
--since string 显示自某个timestamp之后的日志,或相对时间,如40m(即40分钟)
--tail string 从日志末尾显示多少行日志, 默认是all
-t, --timestamps 显示时间戳
--until string 显示自某个timestamp之前的日志,或相对时间,如40m(即40分钟)
结果发现日志报错
Failed to start container manager: inotify_add_watch
/sys/fs/cgroup/cpuacct,cpu: no such file or directory
找了下,找到解决方法
sudo mount -o remount,rw '/sys/fs/cgroup'
sudo ln -s /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/cpuacct,cpu
rm容器,重新启动,再去浏览器看看,可以成功访问了
可以在里面看到容器的运行情况
4 后记
cAdvisor挺方便的,但是对网络的要求还是比较高的(对于自己的云服务器的小水管来说...),所以会感到响应比较慢,而且进云服务器的监控页面看,会发现带宽都给用满了=。=因为cAdvisor会一直传输数据给客户端,所以对于小带宽来说还是没事别一直开着监控页面,不然其他服务没法用了=。=