该备忘单提供了使用 Sysdig 的常用命令参数和使用案例清单
$ sysdig -p"user:%user.name dir:%evt.arg.path" evt.type=chdir
user:ubuntu dir:/root
user:ubuntu dir:/root/tmp
user:ubuntu dir:/root/Download
字段必须用 % 作为前缀,所有 sysdig -l 列出来的字段都可以使用
如果某个字段在时间中不存在,默认这个事件会过滤掉,在这个字符串最前面加上 * 符号,会打印所有事件,不存在的字段会变成 <NA>
$ sysdig -p"*%evt.type %evt.dir %evt.arg.name" evt.type=open
open > <NA>
open < /proc/1285/task/1399/stat
open > <NA>
open < /proc/1285/task/1400/io
open > <NA>
open < /proc/1285/task/1400/statm
open > <NA>
kubernetes pod 客户端 ip 的 udp 请求# 列出容器监听端口
$ sudo sysdig -pc -A -c netstat container.name=aaa
# 抓取kubernetes pod 的客户端ip为172.119.100.16,3000端口的的请求内容
$ sudo sysdig -A -c echo_fds k8s.pod.name contains datacenter-web-dev and fd.port=3000 and evt.type=read and fd.cip=172.119.100.16 fd.proto=UDP
# 按照建立连接数量对进程排序 并保存到sysdig.pcap文件中
$ sysdig -c fdcount_by fd.sport "evt.type=accept" -w sysdig.pcap
抓取 kubernetes pod 客户端 ip 为 172.119.100.16 的 udp 请求
查看 io 错误最多的进程
$ sysdig -c topprocs_errors
查看io错误最多的文件
$ sysdig -c topfiles_errors
查看磁盘io失败的调用
$ sysdig fd.type=file and evt.failed=true
查看httpd打开失败的文件
$ sysdig "proc.name=httpd and evt.type=open and evt.failed=true"
查看最花费时间的系统调用
$ sysdig -c topscalls_time
查看系统调用失败返回最多的系统调用
$ sysdig -c topscalls "evt.failed=true"
查看打开文件失败
$ sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open and evt.failed=true
打印延迟大于1ms的文件I/O调用
$ sysdig -c fileslower 1
查看使用硬盘带宽最多的进程
$ sysdig -c topprocs_file
列出大量使用文件描述符的进程
$ sysdig -c fdcount_by proc.name "fd.type=file"
查看读写bytes最多的文件
$ sysdig -c topfiles_bytes
打印httpd进程已经读取中和写入中的文件
$ sysdig -c topfiles_bytes proc.name=httpd
基本 opensnoop:snoop 文件在发生时打开
$ sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open
查看活跃中的读和写最多的目录
sysdig -c fdbytes_by fd.directory "fd.type=file"
查看目录/tmp活跃中的读写最多的文件
sysdig -c fdbytes_by fd.filename "fd.directory=/tmp/"
查看所有文件名为passwd的i/O活动
sysdig -A -c echo_fds "fd.filename=passwd"
展示FD类型的活跃I/O
sysdig -c fdbytes_by fd.type
抓取 kubernetes pod 的客户端 ip 为 172.119.100.17,3000 端口的的请求内容
$ sudo sysdig -A -c echo_fds k8s.pod.name contains datacenter-web-dev and fd.port=3000 and evt.type=read and fd.cip=172.119.100.17 fd.proto=UDP
查看占用网络带宽最多的进程
$ sysdig -c topprocs_net
#显示主机192.168.0.1的网络传输数据
#作为二进制:
$ sysdig -s2000 -X -c echo_fds fd.cip=192.168.0.1
#作为 ASCII:
$ sysdig -s2000 -A -c echo_fds fd.cip=192.168.0.1
查看连接最多的服务器端口
#在已建立的连接方面:
$ sysdig -c fdcount_by fd.sport "evt.type=accept"
#就总字节数而言:
$ sysdig -c fdbytes_by fd.sport
查看客户端连接最多的ip
#在已建立的联系方面
$ sysdig -c fdcount_by fd.cip "evt.type=accept"
#就总字节数而言
$ sysdig -c fdbytes_by fd.cip
列出所有不是访问apache服务的访问连接
$ sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"
显示 wordpress1 容器在端口 80 上发送和接收的数据:
$ sysdig -A -cecho_fds container.name=wordpress1 and fd.port=80
实时打印 mysql 容器接收的所有新连接
$ sysdig -p"%fd.name" container.name=mysql and evt.type=accept
查看哪些文件花费时间做多
$ sysdig -c topfiles_time
查看httpd进程哪些文件花费最多时间
$ sysdig -c topfiles_time proc.name=httpd
查看io错误最多的进程
$ sysdig -c topprocs_errors
查看io错误最多的文件
$ sysdig -c topfiles_errors
查看磁盘io失败的调用
$ sysdig fd.type=file and evt.failed=true
查看httpd打开失败的文件
$ sysdig "proc.name=httpd and evt.type=open and evt.failed=true"
查看最花费时间的系统调用
$ sysdig -c topscalls_time
查看系统调用失败返回最多的系统调用
$ sysdig -c topscalls "evt.failed=true"
查看打开文件失败
$ sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open and evt.failed=true
打印延迟大于1ms的文件I/O调用
$ sysdig -c fileslower 1