Docker自带的监控子命令及sysdig

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上执行,不是太方便

原文地址:https://www.cnblogs.com/chenjin2018/p/9928244.html