监控利器sysdig(实时查看)
sysdig 是一个轻量级的系统监控工具,同时它还原生支持容器。通过 sysdig 我们可以近距离观察 linux 操作系统和容器的行为。 Linux 上有很多常用的监控工具,比如 strace,tcpdump,htop, iftop,lsof ...... 而 sysdig 则是将这些工具的功能集成到一个工具中,并且提供一个友好统一的操作界面。
//安装和运行sysdig的最简单方法就是运行docker容器,命令为:[root@sqm-docker01 ~]# docker run -it --rm --name=sysdig --privileged=true -v /var/run/docker.sock:/host/var/run/docker.sock -v /dev:/host/dev -v /proc:/host/proc:ro -v /boot:/host/boot:ro -v /lib/modules:/host/lib/module:ro -v /usr:/host/usr:ro sysdig/sysdig
//如果提示下载失败,运行下边这条命令:
sysdig-probe-loader
可以看到,sysdig 容器是以 privileged 方式运行,而且会读取操作系统 /dev,/proc 等数据,这是为了获取足够的系统信息。 启动后,通过 docker container exec -it sysdig bash 进入容器。
//成功之后执行 csysdig 命令,将以交互方式启动 sysdig:
root@971f955c2f7b:/# csysdig
进入界面后点击“F2(Views)”,然后双击“Containers”。
该界面可以实时监控容器的各种信息:
如果想看某个容器运行的进程,比如 nginx,将光标移到目标容器,然后回车或者双击。
还可以继续双击查看进程中的线程。
返回上一级,按退格键即可。 sysdig 的交互功能很强,如果界面显示的条目很多,可以点击底部 Search菜单,然后输入关键字进行查找。如下图,关键字为 service。
如果觉得界面刷新太快,看不清楚关注的信息,可以点击底部 Pause 菜单。 sysdig 的特点如下: 监控信息全,包括 Linux 操作系统和容器。 界面交互性强。
不过 sysdig 显示的是实时数据,看不到变化和趋势。而且是命令行操作方式,需要 ssh 到 Host 上执行,会带来一些不便。
2, 监控利器Weave Scope:
Weave Scope 的最大特点是会自动生成一张 Docker 容器地图,让我们能够直观地理解、监控和控制容器。
1,安装scope:
在github上下载源代码:
[root@sqm-docker01 ~]# wget https://github.com/weaveworks/scope/archive/v1.11.0.tar.gz
[root@sqm-docker01 ~]# cd /usr/local/bin/scope-1.11.0/
[root@sqm-docker01 ~]# cd /usr/local/bin/scope-1.11.0/
[root@sqm-docker01 scope-1.11.0]# mv scope /usr/local/bin/
[root@sqm-docker01 scope-1.11.0]# chmod +x /usr/local/bin/scope
[root@sqm-docker01 scope-1.11.0]# scope launch
如果现在有多台dockerhost时,又该如何部署。
(1)下载weave/scope镜像
[root@sqm-docker02 ~]# docker pull weaveworks/scope
(2)下载v1.11.0源码包,并进行解压(该软件包是支持下面的执行命令)
[root@sqm-docker02 ~]# tar zxf v1.11.0.tar.gz
[root@sqm-docker02 ~]# cd scope-1.11.0/
[root@sqm-docker02 scope-1.11.0]# cp scope /usr/local/bin/
[root@sqm-docker02 scope-1.11.0]# chmod +x /usr/local/bin/scope
(3)接下来在docker01上添加监控主机:[root@sqm-docker01 scope-1.11.0]# scope launch 172.16.1.30 172.16.1.31 #注意本机ip在前,其他主机在后
docker02上相同的操作:
[root@sqm-docker02 scope-1.11.0]# scope launch 172.16.1.31 172.16.1.30
访问网页:(随便其中一台主机的地址都是可以的)
发现可以分别监控到两台docker主机上所运行的容器。
scope监控针对的是容器的信息,它依赖于防火墙,所以无法实现远程控制,且对用户没有限制,安全系数较低。
———————— 本文至此结束,感谢阅读 ————————