sysdig-命令参考手册

一给  金牌会员 | 2022-11-1 12:49:29 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 649|帖子 649|积分 1947

SYSDIG 备忘清单

这个 SYSDIG 快速参考备忘清单显示了常用命令和配置使用清单,
注意事项:此命令需要依赖kernel-devel,且最好为系统自带的大版本,如:contso7 3.10.x,否则需要自己编译处理依赖。
入门

命令安装
  1. sudo rpm --import https://download.sysdig.com/DRAIOS-GPG-KEY.public  
  2. sudo curl -s -o /etc/yum.repos.d/draios.repo https://download.sysdig.com/stable/rpm/draios.repo
  3. sudo yum -y install sysdig
复制代码
常用参数

参数说明-C 5每个文件不超过5M-W 10保留不超过10个文件-G 60每个文件只保留一分钟内的系统活动-w  dump.pcap保存到文件-e 1000每个文件只有1000个事件-z参数对保存的内容进行压缩-A --print-ascii把buffer中数据按照ASCII格式打印,方便阅读-x --print-hex把buffer中数据按照十六进制打印-X --printhex-ascii把buffer中数据同时按照ASCII格式和十六进制打印-s 1024捕获buffer的数据大小,默认为80,设置过大,文件会很大-N不用把端口号转成可读名字-r从文件读取输出含义

事件说明evt.num递增的事件号evt.time事件发生的时间evt.cpu事件被捕获时所在cpuproc.name生成事件的进程名字thread.tid线程id,单线程则为进程idevt.dir事件方向(direction), > 代表进入事件, < 代表退出事件evt.type事件的名称,比如open、stat等,一般为系统调用evt.args事件的参数。如果为系统调用,则对应系统调用的参数chisels常用工具

事件说明httplog输出所有的http请求topprocs_cpu输出按照cpu使用率排序topprocs_net按照网络使用情况对进程排序fdcount_by按照建立连接书对进程排序echo_fds输出进程读写数据netsata列出网络连接情况spy_file输出文件的读写数据,可以提供某个文件名作为参数spy_ip抓取给定ip的数据交换spy_port抓取给定端口的数据交换命令帮助
  1. sysdig -l   #事件类型
  2. sysdig -cl  #chisels工具类型
复制代码
常用命令案例:抓取kubernetes pod 客户端ip 为172.27.16.16 的udp请求
  1. # 列出容器监听端口
  2. $ sudo sysdig -pc -A -c netstat container.name=aaa
  3. # 抓取kubernetes pod 的客户端ip为172.27.16.16,3000端口的的请求内容
  4. $ sudo sysdig -A -c echo_fds  k8s.pod.name contains piller-datacenter-guide-web-dev and fd.port=3000 and evt.type=read and fd.cip=172.27.16.16 fd.proto=UDP
  5. # 按照建立连接数量对进程排序 并保存到sysdig.pcap文件中
  6. $ sysdig  -c fdcount_by fd.sport "evt.type=accept"  -w sysdig.pcap
复制代码
自定义输出
  1. $ sysdig -p"user:%user.name dir:%evt.arg.path" evt.type=chdir
  2. user:ubuntu dir:/root
  3. user:ubuntu dir:/root/tmp
  4. user:ubuntu dir:/root/Download
  5. 字段必须用%作为前缀,所有sysdig -l列出来的字段都可以使用
  6. 如果某个字段在时间中不存在,默认这个事件会过滤掉,在这个字符串最前面加上*符号,会打印所有事件,不存在的字段会变成<NA>
  7. $ sysdig -p"*%evt.type %evt.dir %evt.arg.name" evt.type=open
  8. open > <NA>
  9. open < /proc/1285/task/1399/stat
  10. open > <NA>
  11. open < /proc/1285/task/1400/io
  12. open > <NA>
  13. open < /proc/1285/task/1400/statm
  14. open > <NA>
复制代码
io案例
  1. #查看io错误最多的进程
  2. $ sysdig -c topprocs_errors
  3. #查看io错误最多的文件
  4. $ sysdig -c topfiles_errors
  5. #查看磁盘io失败的调用
  6. $ sysdig fd.type=file and evt.failed=true
  7. #查看httpd打开失败的文件
  8. $ sysdig "proc.name=httpd and evt.type=open and evt.failed=true"
  9. #查看最花费时间的系统调用
  10. sysdig -c topscalls_time
  11. #查看系统调用失败返回最多的系统调用
  12. sysdig -c topscalls "evt.failed=true"
  13. #查看打开文件失败
  14. sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open and evt.failed=true
  15. #打印延迟大于1ms的文件I/O调用
  16. sysdig -c fileslower 1
  17. #查看使用硬盘带宽最多的进程
  18. sysdig -c topprocs_file
  19. #列出大量使用文件描述符的进程
  20. sysdig -c fdcount_by proc.name "fd.type=file"
  21. #查看读写bytes最多的文件
  22. sysdig -c topfiles_bytes
  23. #打印httpd进程已经读取中和写入中的文件
  24. sysdig -c topfiles_bytes proc.name=httpd
  25. # Basic opensnoop: snoop file opens as they occur
  26. sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open
  27. #查看活跃中的读和写最多的目录
  28. sysdig -c fdbytes_by fd.directory "fd.type=file"
  29. #查看目录/tmp活跃中的读写最多的文件
  30. sysdig -c fdbytes_by fd.filename "fd.directory=/tmp/"
  31. #查看所有文件名为passwd的i/O活动
  32. sysdig -A -c echo_fds "fd.filename=passwd"
  33. #展示FD类型的活跃I/O
  34. sysdig -c fdbytes_by fd.type
复制代码
网络
  1. #抓取kubernetes pod 的客户端ip为172.27.16.17,3000端口的的请求内容
  2. $ sudo sysdig -A -c echo_fds  k8s.pod.name contains piller-datacenter-guide-web-dev and fd.port=3000 and evt.type=read and fd.cip=172.27.16.17 fd.proto=UDP
  3. #查看占用网络带宽最多的进程
  4. sysdig -c topprocs_net
  5. #显示主机192.168.0.1的网络传输数据
  6. as binary:
  7. sysdig -s2000 -X -c echo_fds fd.cip=192.168.0.1
  8. as ASCII:
  9. sysdig -s2000 -A -c echo_fds fd.cip=192.168.0.1
  10. #查看连接最多的服务器端口
  11. in terms of established connections:
  12. sysdig -c fdcount_by fd.sport "evt.type=accept"
  13. in terms of total bytes:
  14. sysdig -c fdbytes_by fd.sport
  15. #查看客户端连接最多的ip
  16. in terms of established connections
  17. sysdig -c fdcount_by fd.cip "evt.type=accept"
  18. in terms of total bytes
  19. sysdig -c fdbytes_by fd.cip
  20. #列出所有不是访问apache服务的访问连接
  21. sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"
  22. #显示 wordpress1 容器在端口 80 上发送和接收的数据:
  23. sysdig -A -cecho_fds container.name=wordpress1 and fd.port=80
  24. #实时打印 mysql 容器接收的所有新连接
  25. sysdig -p"%fd.name" container.name=mysql and evt.type=accept
复制代码
进程
  1. #查看哪些文件花费时间做多
  2. sysdig -c topfiles_time
  3. #查看httpd进程哪些文件花费最多时间
  4. sysdig -c topfiles_time proc.name=httpd
  5. #查看io错误最多的进程
  6. sysdig -c topprocs_errors
  7. #查看io错误最多的文件
  8. sysdig -c topfiles_errors
  9. #查看磁盘io失败的调用
  10. sysdig fd.type=file and evt.failed=true
  11. #查看httpd打开失败的文件
  12. sysdig "proc.name=httpd and evt.type=open and evt.failed=true"
  13. #查看最花费时间的系统调用
  14. sysdig -c topscalls_time
  15. #查看系统调用失败返回最多的系统调用
  16. sysdig -c topscalls "evt.failed=true"
  17. #查看打开文件失败
  18. sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open and evt.failed=true
  19. #打印延迟大于1ms的文件I/O调用
  20. sysdig -c fileslower 1
复制代码
另见


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

一给

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表