一、Docker的监控
Docker自带的监控命令
简单命令介绍
ps
docker container ps 是我们早已熟悉的命令了,方便我们查看当前运行的容器。新版的 Docker 提供了一个新命令 docker container ls,其作用和用法与 docker container ps 完全一样。不过 ls 含义可能比 ps 更准确,所以更推荐使用。
top
如果想知道某个容器中运行了哪些进程,可以执行 docker container top [container] 命令。命令后面还可以跟上 Linux 操作系统 ps 命令的参数显示特定的信息,比如 -au。
stats
docker container stats 用于显示每个容器各种资源的使用情况。默认会显示一个实时变化的列表,展示每个容器的 CPU 使用率,内存使用量和可用量。注意:容器启动时如果没有特别指定内存 limit,stats 命令会显示 host 的内存总量,但这并不意味着每个 container 都能使用到这么多的内存。
除此之外 docker container stats 命令还会显示容器网络和磁盘的 IO 数据。默认的输出有个缺点,显示的是容器 ID 而非名字。我们可以在 stats 命令后面指定容器的名称只显示某些容器的数据。比如 docker container stats sysdig weave。
命令执行
1.ps
[root@docker01 ~]# docker ps
//查看容器信息
2.top
[root@docker01 ~]# docker top 容器名称
[root@docker01 ~]# docker top wordpress_wordpress_1
//查看容器中运行的进程信息,支持 ps 命令参数。
3.stats
[root@docker01 ~]# docker stats wordpress_wordpress_1
//实时查看容器统计信息,查看容器的CPU利用率、内存的使用量以及可用内存总量。
默认会显示一个实时变化的列表,展示每个容器的CPU使用率,内存使用量和可用量
注意:容器启动时如果没有特别指定内存limit,stats命令会显示host的内存总量,但这并不意味着每个container都能使用到这么多的内存
除此之外docker container stats命令还会显示容器网络和磁盘的IO数据
默认的输出有个缺点,显示的是容器ID而非名字。我们可以在stats命令后面指定容器的名称只显示某些容器的数据。比如docker container stats test1 test2
[root@docker01 ~]# docker logs 容器名称
[root@docker01 ~]# docker logs wordpress_wordpress_1
//查看容器的日志
二、用 Sysdig 监控服务器
[root@docker01 ~]# docker pull sysdig
//下载sysdig镜像
通过sysdig运行容器
[root@docker01 ~]# docker run -it --rm --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
下载插件失败后可以运行下边命令,重新下载
root@10ccab83a512:/# system-sysdig-loader
//下载插件失败后可以运行下边命令,重新下载
下载成功后,可以运行sysdig命令,查看监控项
root@10ccab83a512:/# sysdig
//运行sysdig命令,查看监控项,它会动态查看
使用 csysdig
csysdig 就是运 ncurses 库的用户界面的 sysdig 软件包,Ncurses 是一个能提供功能键定义 ( 快捷键 ), 屏幕绘制以及基于文本终端的图形互动功能的动态库。在 sysdig 软件包里还提供了一个工具 csysdig,该工具执行后,运行界面和 top 命令类似。csysdig 工作界面如图 5。
运行csysdig命令,查看监控项
root@10ccab83a512:/# csysdig
//运行csysdig命令,图形化界面查看监控项,它会动态查看
csysdig 使用如下快捷键:
P:暂停屏幕输出信息
Enter:进入当前突出显示的条目。
Ctrl+F:列表搜索。
F1- 帮助信息
F2- 显示视图选择器。这将让你切换到另一个视图。
F4- 使用过滤器
F5- 查看 IO 输出信息
F7 显示帮助页面当前显示的视图。
F8 打开视图的操作面板。
F9,打开列排序面板。
Q 放弃退出。
Arrows, PgUP, PgDn, Home, End:图标上下左右的移动控制。
sysdig按不同的View来监控不同类型的资源,点击底部Views菜单(或者按F2),显示View选择列表
我们将光标移到Containers这一项,界面右边立即显示出此view的功能介绍,回车或者双击Containers,进入容器监控界面
sysdig会显示该host所有的容器的实时数据,每两秒刷新一次。各列数据的含义也是自解释的,如果不清楚,可以点一下底部的Legend,如果想按某一列排序,比如按使用的内存量,点一下列头VIRT
如果想查看某个容器的进程,将光标移动到目标容器,然后回车或者双击
还可以继续双击查看进程中的线程
返回上一级,按退格键即可
sysdig的交互功能很强,如果界面显示的条目很多,可以点击底部Search菜单,然后输入关键字进行查找
如果觉得界面刷新太快,看不清楚关注的信息,可以点击底部的Pause菜单
sysdig的特点:
(1)监控信息全,包括Linux操作系统和容器
(2)界面交互性强
其缺点是sysdig显示的是实时数据,看不到变化和趋势。而且是命令行操作方式,需要ssh到host上执行,不是太方便
总结
这些示例仅仅是展示了 Sysdig 能力的冰山一角,在目前的其他系统监控类工具中,笔者还没有看到像 Sysdig 这样功能如此强大、而又对容器支持这样好的。所以,对于经常使用服务器特别是 Docker 容器作为产品运行方式的用户,这是一款值得使用的系统工具。
三、Docker监控方案之Weave Scope
Weave Scope 的最大特点是会自动生成一张 Docker 容器地图,让我们能够直观地理解、监控和控制容器。千言万语不及一张图,先感受一下。
[root@docker01 ~]# docker pull scope
//下载scope镜像
执行如下脚本安装运行Weave Scope
[root@docker01 ~]# curl -L git.io/scope -o /usr/local/bin/scope
[root@docker01 ~]# chmod +x /usr/local/bin/scope
[root@docker01 ~]# scope launch
浏览器访问http://192.168.1.11:4040/
然后就可以更好的监控,管理docker中的容器了
开启第docker02,加入docker01监控项
docker01
删除weavescope容器
[root@docker01 ~]# docker stop weavescope
weavescope
[root@docker01 ~]# docker rm weavescope
weavescope
docker02
[root@docker01 ~]# docker pull scope
//下载scope镜像
[root@docker01 ~]# curl -L git.io/scope -o /usr/local/bin/scope
[root@docker01 ~]# chmod +x /usr/local/bin/scope
[root@docker01 ~]# scope launch
docker01
[root@docker01 ~]# scope launch 192.168.1.11 192.168.1.13
docker02
[root@docker02 ~]# scope launch 192.168.1.13 192.168.1.11
浏览器访问http://192.168.1.11:4040/
浏览器访问http://192.168.1.13:4040/也是可以的