Docker常用的监控方案
Docker自带的监控子命令
ps
docker container ps用来查看当前运行的容器
新版的Docker提供了一个新命令docker container ls,其作用和用法与docker container ps完全一样。不过ls含义可能比ps更准确,所以更推荐使用
top
如果想知道某个容器中运行了哪些进程,可以执行docker container top [container]命令
上面显示了test1这个容器中的进程。命令后面还可以跟上Linux操作系统ps命令的参数显示特定的信息,比如 -au
stats
docker container stats用于显示每个容器各种资源的使用情况
默认会显示一个实时变化的列表,展示每个容器的CPU使用率,内存使用量和可用量
注意:容器启动时如果没有特别指定内存limit,stats命令会显示host的内存总量,但这并不意味着每个container都能使用到这么多的内存
除此之外docker container stats命令还会显示容器网络和磁盘的IO数据
默认的输出有个缺点,显示的是容器ID而非名字。我们可以在stats命令后面指定容器的名称只显示某些容器的数据。比如docker container stats test1 test2
ps,top, stats这几个命令是docker自带的,优点是运行方便,很适合想快速了解容器运行状态的场景。其缺点是输出的数据有限,而且都是实时数据,无法反应历史变化和趋势
监控利器sysdig
安装和运行sysdig的最简单方法是运行Docker容器,命令行为
sudo docker run -it --name sysdig --privileged=true --volume=/var/run/docker.sock:/host/var/run/docker.sock --volume=/dev:/host/dev --volume=/proc:/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
sysdig按不同的View来监控不同类型的资源,点击底部Views菜单(或者按F2),显示View选择列表
我们将光标移到Containers这一项,界面右边立即显示出此view的功能介绍,回车或者双击Containers,进入容器监控界面
sysdig会显示该host所有的容器的实时数据,每两秒刷新一次。各列数据的含义也是自解释的,如果不清楚,可以点一下底部的Legend,如果想按某一列排序,比如按使用的内存量,点一下列头VIRT
如果想查看某个容器的进程,将光标移动到目标容器,然后回车或者双击
还可以继续双击查看进程中的线程
返回上一级,按退格键即可
sysdig的交互功能很强,如果界面显示的条目很多,可以点击底部Search菜单,然后输入关键字进行查找
如果觉得界面刷新太快,看不清楚关注的信息,可以点击底部的Pause菜单
sysdig的特点:
(1)监控信息全,包括Linux操作系统和容器
(2)界面交互性强
其缺点是sysdig显示的是实时数据,看不到变化和趋势。而且是命令行操作方式,需要ssh到host上执行,不是太方便