一、docker监控
当docker部署规划逐步变大后,可视化监控容器环境的性能和健康状态将会变得越来越重要。
docker自带的几个监控子命令:ps top 和stats,然后是几个功能更强的开源监控工具 sysdig、weave,scope,cadvisor prometheus.
二、docker自带的监控子命令
1.ps
docker container ps 是我们早已熟悉的命令,方便我们查看当前运行的容器
docker container ps
docker提供了一个新的命令 docker container ls ,其作用和用法与docker container完全一样
2.top
如果想知道某个容器中运行了那些进程,可以执行docker container top [镜像名]
docker container top test
上面显示sysdig这个容器中的进程,命令后面还可以跟上linux操作系统ps命令的参数显示特定的信息,
docker container top web -au
3.stats
docker container stats 用于显示每个容器各种资源的使用情况。
docker container stats
默认会显示一个实时变化的列表,展示每个容器的cpu使用率,内存使用量和可变量。注意:容器启动时如果没有特别指定内存limit stats命令会显示host的内存总量,但这并不意味着每个container都能使用带这么多内存,除此之外,docker container stats
命令还会显示容器网络和磁盘的io数据,默认的输出有个缺点,显示的是容器id而飞名字,
我们可以在stats命令后面指定容器的名称只显示某些容器的数据
docker container stats test
ps top stats 这几个命令是docker自带的 ,有点事运行方便 ,很适合想快速了解容器运行状态的场景。其缺点就是输出的数据有限,而且都是实时数据,无法反应历史变化和趋势。
三、sysdig
sysdig是一个轻量级的系统监控工具,同时他还原生支持容器,通过sysdig我们可以近距离观察linux操作系统和容器的行为。linux上有很多常用的监控工具。
比如strace tcpdump htop iftop lsof.... 而sysdig则是将这些工具的功能集成到一个工具中,并且提供一个统一的操作界面,安装和运行sysdig的最简单方法是运行docker容器:
docker container run -it --rm --name=sydig --privileged=true \
--volume=/var/run/docker.sock:/host/var/run/docker.sock \
--volume=/dev:/host/dev \
--volume=/porc:/host/proc:ro \
--volume=/boot:/host/boot:ro \
--volume=/lib/modules:/host/lib/modules:ro \
--volume=/usr:/host/usr:ro \
sysdig/sysdig
可以看到,sysdig容器是一privileged方式运行,而且会读取操作系统 /dev /proc数据,这是为了获取足够的系统信息,,启动后 通过 docker container exec -it sysdig bash 进入容器 执行csysdig命令,将以交互方式启动sysdig。
这是一个类似linux top命令的界面,但要强大太多,sysdig按不同的view来监控,点击底部views菜单或者按F2,显示view选择列表。
界面左右列出了sysdig支持的view,一共30多项,涵盖了操作系统的个个方面,因为这里主要是讨论容器监控,所以我们将光标移到containers这一项,界面右边立即显示出此view的功能介绍。回车或者双击containers,进入容器监控界面。
sysdig会显示显示该host的所有容器的实时数据,每两秒刷新一次。
如果想按某一个列排序,比如按使用的内存量,很简单,点一下列头virt
如果想看某个容器运行程序,将光标移动到目标容器,然后回车或者双击。还可以继续双击查看进程中的线程。
四、weave scope
weave scope最大特点是会自动生成一张docker容器地图,让我们能够直观的理解、监控和控制容器
1.安装:
curl -L git.io/scope -o /usr/local/bin/scope
chmod a+x /usr/local/bin/scope
scope launch
scope launch将以容器方式启动
weave scope访问地址为http://{host}":4040/
1. 容器监控:
weave scope地图中间显示了host当前运行的容器,不过少了几个weave相关的容器,weavescope将容器分为两类:
weave自己的容器 system container 和其他容器 application container 默认只显示后者。weave scope界面是一个可交互的地图,使用起来很方便。比如点击地图左下角选择开关all。
地图上会立刻显示所有容器。
点击cpu选择器。
weabe scope将一高低水位显示容器cpu使用量。
如果此时我们要将鼠标放到容器图标上,则会显示具体的cpu%
如果要查看容器详细的信息,比如sysdig 可以点击该容器图标。
2.详细信息包括那么几部分:
status cpu 内存的实时使用情况以及历史曲线。info容器images,启动命令 状态 网络等信息
在容器信息的上面还有一排操作按钮分别是:
attach到容器启动进程, 相当于执行docker container attach
打开shell, 相当于执行docker container exec
重启容题, 相当于执行docker container restart
智停容器, 相当于执行docker container pause
关闭容器, 相当于执行docker containers top
这排按钮便我们能够远程控制容器,相当方便。