Docker的监控(简单部署Sysdig和Weave Scope)

一、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
//查看容器信息

Docker的监控(简单部署Sysdig和Weave Scope)

2.top

[root@docker01 ~]# docker top 容器名称
[root@docker01 ~]# docker top wordpress_wordpress_1 
//查看容器中运行的进程信息,支持 ps 命令参数。

Docker的监控(简单部署Sysdig和Weave Scope)

3.stats

[root@docker01 ~]# docker stats wordpress_wordpress_1 
//实时查看容器统计信息,查看容器的CPU利用率、内存的使用量以及可用内存总量。

Docker的监控(简单部署Sysdig和Weave Scope)
默认会显示一个实时变化的列表,展示每个容器的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。

Docker的监控(简单部署Sysdig和Weave Scope)

运行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 容器地图,让我们能够直观地理解、监控和控制容器。千言万语不及一张图,先感受一下。
Docker的监控(简单部署Sysdig和Weave Scope)

[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

Docker的监控(简单部署Sysdig和Weave Scope)

浏览器访问http://192.168.1.11:4040/

Docker的监控(简单部署Sysdig和Weave Scope)

然后就可以更好的监控,管理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/

Docker的监控(简单部署Sysdig和Weave Scope)

浏览器访问http://192.168.1.13:4040/也是可以的

Docker的监控(简单部署Sysdig和Weave Scope)

猜你喜欢

转载自blog.51cto.com/14320361/2460996