系统分析工具 Sysdig 详解

Sysdig 是 Sysdig Cloud 开发的主要基于Lua语言的一个开源系统分析工具。Sysdig 能从运行的系统中,获取系统状态和行为,做过滤分析,功能上超同类开源工具。Sysdig 可以看做是 strace + tcpdump + lsof + htop + iftop 以及其他系统分析工具的合集 。

系统分析工具 Sysdig 详解

此外 Sysdig 还能对容器(如docker、coreOS、LXC)进行监控。 Sysdig 也支持windows平台和mac平台。下面我们以 Linux系统为例,举例说明 Sysdig 的用法,你也可以参考官方原文

网络

  • 查看占用网络带宽最多的进程:
    sysdig -c topprocs_net
  • 显示主机192.168.0.1的网络传输数据 as binary:
    sysdig -s2000 -X -c echo_fds fd.cip=192.168.0.1
    as 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地址中,连接数最多的 IP:
    sysdig -c fdcount_by fd.cip "evt.type=accept"
    查看客户端IP地址中,数据传输量最高的 IP:
    sysdig -c fdbytes_by fd.cip
  • 列出所有的请求链接中,不是访问 apache服务的链接:
    sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"

容器

  • 查看机器上运行的容器列表及其资源使用情况:sudo csysdig -vcontainers
  • 查看容器上下文的进程列表:sudo csysdig -pc
  • 查看运行在debian.cn容器里CPU的使用率:sudo sysdig -pc -c topprocs_cpu container.name=debian.cn
  • 查看运行在 debian.cn 容器里网络带宽的使用率:sudo sysdig -pc -c topprocs_net container.name=debian.cn
  • 查看在 debian.cn 容器里使用网络带宽最多的进程:sudo sysdig -pc -c topprocs_net container.name=debian.cn
  • 查看在 debian.cn 容器里占用 I/O 字节最多的文件:sudo sysdig -pc -c topfiles_bytes container.name=debian.cn
  • 查看在 debian.cn 容器里网络连接的排名情况:sudo sysdig -pc -c topconns container.name=debian.cn
  • 显示 debian.cn 容器里所有命令执行的情况:sudo sysdig -pc -c spy_users container.name=debian.cn

应用

  • 查看机器所有的HTTP请求:sudo sysdig -s 2000 -A -c echo_fds fd.port=80 and evt.buffer contains GET
  • 查看机器所有的SQL select查询:sudo sysdig -s 2000 -A -c echo_fds evt.buffer contains SELECT
  • 查看本地Apache对外部MySQL的实时查询:sysdig -s 2000 -A -c echo_fds fd.sip=192.168.30.5 and proc.name=apache2 and evt.buffer contains SELECT

硬盘 I/O

  • 查看使用硬盘带宽最多的进程:sysdig -c topprocs_file
  • 列出使用大量文件描述符的进程:sysdig -c fdcount_by proc.name "fd.type=file"
  • 查看读写字节数最频繁的前10个文件:sysdig -c topfiles_bytes
  • 列出Apache进程读取或写入最频繁的文件:sysdig -c topfiles_bytes proc.name=httpd
  • 监听对 snoop 的系统调用:sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open
  • See the top directories in terms of R+W disk activity:sysdig -c fdbytes_by fd.directory "fd.type=file"
  • See the top files in terms of R+W disk activity in the /tmp directory:sysdig -c fdbytes_by fd.filename "fd.directory=/tmp/"
  • Observe the I/O activity on all the files named 'passwd':sysdig -A -c echo_fds "fd.filename=passwd"
  • Display I/O activity by FD type:sysdig -c fdbytes_by fd.type

进程和CPU使用率

  • See the top processes in terms of CPU usage:sysdig -c topprocs_cpu
  • See the top processes for CPU 0:sysdig -c topprocs_cpu evt.cpu=0
  • Observe the standard output of a process:sysdig -s4096 -A -c stdout proc.name=cat

性能和错误

  • See the files where most time has been spent:sysdig -c topfiles_time
  • See the files where apache spent most time:sysdig -c topfiles_time proc.name=httpd
  • See the top processes in terms of I/O errors:sysdig -c topprocs_errors
  • See the top files in terms of I/O errors:sysdig -c topfiles_errors
  • See all the failed disk I/O calls:sysdig fd.type=file and evt.failed=true
  • See all the failed file opens by httpd:sysdig "proc.name=httpd and evt.type=open and evt.failed=true"
  • See the system calls where most time has been spent:sysdig -c topscalls_time
  • See the top system calls returning errors:sysdig -c topscalls "evt.failed=true"
  • snoop failed file opens as they occur:sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open and evt.failed=true
  • Print the file I/O calls that have a latency greater than 1ms:sysdig -c fileslower 1

安全

  • Show the directories that the user "root" visits:sysdig -p"%evt.arg.path" "evt.type=chdir and user.name=root"
  • Observe ssh activity:sysdig -A -c echo_fds fd.name=/dev/ptmx and proc.name=sshd
  • Show every file open that happens in /etc:sysdig evt.type=open and fd.name contains /etc
  • Show the ID of all the login shells that have launched the "tar" command:sysdig -r file.scap -c list_login_shells tar
  • Show all the commands executed by the login shell with the given ID:sysdig -r trace.scap.gz -c spy_users proc.loginshellid=5459
继续阅读
avatar
  • 本文由 发表于 2020年8月9日
  • 除非特殊声明,本站文章许可协议为"署名-非商用-相同方式共享 4.0",转载请保留原链、作者等信息。