一、sysdig安装
sysdig是强大的系统监控工具,其在github上开源
这里是Ubuntu18.04的安装
这是GitHub上sysdig的官方介绍文档,里面有安装教程和使用介绍
https://github.com/draios/sysdig/wiki
syadig安装文档https://github.com/draios/sysdig/wiki/How-to-Install-Sysdig-for-Linux
sysdig 能获取实时的系统数据,也能把信息保存到文件中以供后面分析。捕获的数据包含系统的个个方面,包括CPU、memory、Disk IO、网络 、IO进程、文件、网络连接等
:
1.
curl -s https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public | sudo apt-key add -
sudo curl -s -o /etc/apt/sources.list.d/draios.list https://s3.amazonaws.com/download.draios.com/stable/deb/draios.list
sudo apt-get update
sudo apt-get -y install linux-headers-$(uname -r)
sudo apt-get -y install sysdig
sudo sysdig
131013 11:09:51.558067775 1 gnome-terminal- (5479) < read res=-11(EAGAIN) data=
131014 11:09:51.558068043 1 gnome-terminal- (5479) > write fd=4(<e>) size=8
131015 11:09:51.558068328 1 gnome-terminal- (5479) < write res=8 data=........
131016 11:09:51.558068975 1 gnome-terminal- (5479) > recvmsg fd=3(<u>)
131017 11:09:51.558069413 1 gnome-terminal- (5479) < recvmsg res=-11(EAGAIN) size=4096 data= tuple=NUL
格式:
%evt.num %evt.outputtime %evt.cpu %proc.name (%thread.tid) %evt.dir %evt.type %evt.info
含义:
evt.num: 递增的事件号
evt.time: 事件发生的时间
evt.cpu: 事件被捕获时所在的 CPU,也就是系统调用是在哪个 CPU 执行的。比较上面的例子中,值 0 代表机器的第一个 CPU
proc.name: 生成事件的进程名字,也就是哪个进程在运行
thread.tid: 线程的 id,如果是单线程的程序,这也是进程的 pid
evt.dir: 事件的方向(direction),> 代表进入事件,< 代表退出事件
evt.type: 事件的名称,比如 open、stat等,一般是系统调用
evt.args: 事件的参数。如果是系统调用,这些对应着系统调用的参数
sudo sysdig -l
#过滤器列表信息
示例:
sudo sysdig evt.type=accept
219944 14:37:28.845970671 4 fcitx (1587) > accept
219949 14:37:28.845979942 4 fcitx (1587) < accept fd=-11(EAGAIN) tuple=NULL queuepct=0 queuelen=0 queuemax=10
221406 14:37:28.854087205 4 fcitx (1587) > accept
221408 14:37:28.854093990 4 fcitx (1587) < accept fd=-11(EAGAIN) tuple=NULL queuepct=0 queuelen=0 queuemax=10
221423 14:37:28.854119977 4 fcitx (1587) > accept
221424 14:37:28.854122222 4 fcitx (1587) < accept fd=-11(EAGAIN) tuple=NULL queuepct=0 queuelen=0 queuemax=10
221989 14:37:28.859280843 4 fcitx (1587) > accept
221991 14:37:28.859286135 4 fcitx (1587) < accept fd=-11(EAGAIN) tuple=NULL queuepct=0 queuelen=0 queuemax=10
$sudo sysdig -p"user:%user.name dir:%evt.arg.path" evt.type=chdir
输出
user:root dir:/
字段必须用 % 作为前缀,所有在 sysdig -l 中列出来的字段都可以使用。
你可以在字符串中加入其他可读性的内容,它们会如实打印出来
如果某个字段在时间中不存在,默认这个事件会过滤掉,在这个字符串最前面加上 * 符号,会打印出所有的事件,不存在的字段会变成 NA。
sudo sysdig -w sysdig-trace-file.scap