sysdig 是一个轻量级的系统监控工具,同时他还原生支持容器。通过sysdig我们可以近距离观察linux操作系统和容器的行为。
Linux上有很多常用的监控工具,比如 strace tcpdump htop iftop lsof
而 sysdig 则是将这些工具的功能集成到一个工具中,并且提供了一个友好统一的操作界面。
安装和运行 sysdig 的最简单方法就是运行 Docker 容器,
root@host1:~# cat in.sh
docker container 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
root@host1:~# sh in.sh
Unable to find image 'sysdig/sysdig:latest' locally
latest: Pulling from sysdig/sysdig
9f461c014a9f: Pull complete
254ea2590fd1: Pull complete
aa290b1ced07: Pull complete
90cdfadf89d4: Pull complete
13079d00ea2e: Pull complete
2cb517fbc314: Pull complete
77c08c64bff3: Pull complete
a06315c80476: Pull complete
124a264d08c2: Pull complete
c974cacc5050: Pull complete
dbaa2d265332: Pull complete
ec5d18293d21: Pull complete
Digest: sha256:6985c4cb43f8678c444bee7879e80d7965444365f74dab10a07f3108e7bc0963
Status: Downloaded newer image for sysdig/sysdig:latest
* Setting up /usr/src links from host
* Unloading sysdig-probe, if present
* Running dkms install for sysdig
Kernel preparation unnecessary for this kernel. Skipping...
Building module:
cleaning build area...
make -j4 KERNELRELEASE=4.4.0-31-generic -C /lib/modules/4.4.0-31-generic/build M=/var/lib/dkms/sysdig/0.25/build....
cleaning build area...
DKMS: build completed.
sysdig-probe.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/4.4.0-31-generic/kernel/extra/
mkdir: cannot create directory '/lib/modules/4.4.0-31-generic/kernel/extra': Read-only file system
cp: cannot create regular file '/lib/modules/4.4.0-31-generic/kernel/extra/sysdig-probe.ko': No such file or directory
depmod......
DKMS: install completed.
* Trying to load a dkms sysdig-probe, if present
sysdig-probe found and loaded in dkms
root@23f6e4a253ff:/# csysdig
sysdig 容器是以 privileged 方式运行,而且会读取操作系统的 /dev /proc 等数据,这是为了获取足够的系统信息。
后面可以使用命令 docker exec -it sysdig bash 进入容器,执行 csysdig 命令,以交互方式启动 sysdig
sysdig 的界面类似 linux的top,但是功能更强大,点击底部的 View 或者按 F2 可以看到很多监控分类,涵盖了操作系统的各个方面,
这里我们选择 container ,监控容器的状态
点击底部按钮中的 Legend 或者使用快捷键 F7 可以查看上面每一列的说明
点击某一列的表头,即可按照该列内容进行排序
双击某进程,即可查看该进程对应的线程
返回上一级,按 退格键
还可以使用底部的搜索按钮 Search 搜索
监控内容每两秒刷新一次,如果需要暂停 可以按底部的 Pause 按钮
sysdig 的特点如下:
1、监控信息全,包括Linux操作系统和容器
2、界面交互性强
不过 sysdig 显示的是实时数据,看不到变化和趋势。而且是在命令行中进行操作,需要ssh 到host 上执行,会带来一些不便。