热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux系统调试工具之sysdig使用详解

一、安装本篇主要介绍在centos下的用法安装和测试,后面也会提到在ubuntu类平台下的安装。其支持在centos6和centos7上安装,安装方法十

一、安装

本篇主要介绍在centos下的用法安装和测试,后面也会提到在ubuntu类平台下的安装。其支持在centos6和centos7上安装,安装方法十分简洁:

1centos下的安装

1.1一键安装

  1. curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash

上面是一个shell 脚本,会识别常用的linux发行版本,并根据对应的版本配置源,最后是安装sysdig包。在redhat/centos上首先会配置的是epel 源 ,配置该源的目的是安装dkms包;然后会配置draios源,通过该源可以安装sysdig包。最后在装sysdig包之前还会先安装kernel-devel包。

1.2、分步安装

由于使用的源都是国外源,会出现安装比较慢的情况,所以使用一键安装失败时,可以使用分解步骤安装。在内网环境下的也可以将依赖包都下下来再安装。

  1. #导入draios源
  2. rpm --import https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public
  3. curl -s -o /etc/yum.repos.d/draios.repo http://download.draios.com/stable/rpm/draios.repo
  4. #导入epel 源
  5. rpm -i http://mirror.us.leaseweb.net/epel/6/x86_64/epel-release-6-8.noarch.rpm
  6. #装包
  7. yum -y install kernel-devel*  dkms  sysdig

sysdig依赖的两个包,一个是kernel-devel ,一个是dkms包,DKMS全称是Dynamic Kernel Module Support (动态内核模块支持),即在内核版本变动之后可以自动重新生成新驱动模块。想要了解的可以自行GOOGLE 。

2ubuntu下的安装

  1. curl -s https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public | apt-key add -
  2. curl -s -o /etc/apt/sources.list.d/draios.list http://download.draios.com/stable/deb/draios.list
  3. apt-get update
  4. apt-get -y install linux-headers-$(uname -r)
  5. apt-get -y install sysdig

windows、Mac OS及其他linux发行版的安装,可以参看官方安装文档。

二、常用用法

默认按上面的方法安装好以后,执行sysdig是会出错的。提示如下:

  1. # sysdig
  2. Unable to load the driver
  3. error opening device /dev/sysdig0. Make sure you have root credentials and that the sysdig-probe module is loaded.

所以执行之前还需要使用/usr/bin/sysdig-probe-loader命令装载内核模块,该命令也是一个shell脚本,执行时会从aws s3上下载一个ko模块文件。不过我在linux测试主机上下载多次都未成功。查看该脚本文件后,发现其调用下载的地址是:

centos7

https://s3.amazonaws.com/download.draios.com/stable/sysdig-probe-binaries/sysdig-probe-0.21.0-x86_64-3.10.0-693.21.1.el7.x86_64-9df7f67292ca873f1d3b016b35438cfb.ko

注:该ko文件的URL不用记,执行该脚本时会有相应的提示“Trying to download precompiled module from” ,而且不同的内核版本下的对应ko文件也是不同的。我这里的内核版本是2.6.32-504.el6 。下载完成后会存放在~/.sysdig 目录。

完成后再执行sysdig-probe-loader命令就可以执行sysdig命令了,而且开机后不会自动加载,所以在不使用的情况下,该包是对主机无影响的。

1、网络

查看占用网络带宽最多的进程:

  1. sysdig -c topprocs_net

显示主机192.168.0.1的网络传输数据:

  1. as binary:
  2. sysdig -s2000 -X -c echo_fds fd.cip=192.168.0.1
  3. as ASCII:
  4. sysdig -s2000 -A -c echo_fds fd.cip=192.168.0.1

这里显示网络传输功能,实际效果和tcpdump抓包是一样的。而且其本身也支持sysdig -w dump.scap抓包保存(可以配置-X或-A使用),抓好包也支持sysdir -r dump.scap读取。

查看连接最多的服务器端口:

  1. in terms of established connections:
  2. sysdig -c fdcount_by fd.sport "evt.type=accept"
  3. in terms of total bytes:
  4. sysdig -c fdbytes_by fd.sport

查看客户端连接最多的ip:

  1. in terms of established connections
  2. sysdig -c fdcount_by fd.cip "evt.type=accept"
  3. in terms of total bytes
  4. sysdig -c fdbytes_by fd.cip

列出所有不是访问apache服务的访问连接:

  1. sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"

2、硬盘 I/O

查看使用硬盘带宽最多的进程:

  1. sysdig -c topprocs_file

列出使用大量文件描述符的进程

  1. sysdig -c fdcount_by proc.name "fd.type=file"

See the top files in terms of read+write bytes

  1. sysdig -c topfiles_bytes

Print the top files that apache has been reading from or writing to

  1. sysdig -c topfiles_bytes proc.name=httpd

Basic opensnoop: snoop file opens as they occur

  1. 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

  1. sysdig -c fdbytes_by fd.directory "fd.type=file"

See the top files in terms of R+W disk activity in the /tmp directory

  1. sysdig -c fdbytes_by fd.filename "fd.directory=/tmp/"

Observe the I/O activity on all the files named 'passwd'

  1. sysdig -A -c echo_fds "fd.filename=passwd"

Display I/O activity by FD type

  1. sysdig -c fdbytes_by fd.type

3、进程和CPU使用率

See the top processes in terms of CPU usage

  1. sysdig -c topprocs_cpu

See the top processes for CPU 0

  1. sysdig -c topprocs_cpu evt.cpu=0

Observe the standard output of a process

  1. sysdig -s4096 -A -c stdout proc.name=cat

4、应用

查看机器所有的HTTP请求

  1.  sudo sysdig -s 2000 -A -c echo_fds fd.port=80 and evt.buffer contains GET

查看机器所有的SQL select查询

  1.  sudo sysdig -s 2000 -A -c echo_fds evt.buffer contains SELECT

See queries made via apache to an external MySQL server happening in real time

  1.  sysdig -s 2000 -A -c echo_fds fd.sip=192.168.30.5 and proc.name=apache2 and evt.buffer contains SELECT

5、性能和错误

See the files where most time has been spent

  1. sysdig -c topfiles_time

See the files where apache spent most time

  1. sysdig -c topfiles_time proc.name=httpd

See the top processes in terms of I/O errors

  1. sysdig -c topprocs_errors

See the top files in terms of I/O errors

  1. sysdig -c topfiles_errors

See all the failed disk I/O calls

  1. sysdig fd.type=file and evt.failed=true

See all the failed file opens by httpd

  1. sysdig "proc.name=httpd and evt.type=open and evt.failed=true"

See the system calls where most time has been spent

  1. sysdig -c topscalls_time

See the top system calls returning errors

  1. sysdig -c topscalls "evt.failed=true"

snoop failed file opens as they occur

  1. 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:

  1. sysdig -c fileslower 1

6、安全

Show the directories that the user "root" visits

  1. sysdig -p"%evt.arg.path" "evt.type=chdir and user.name=root"

Observe ssh activity

  1. sysdig -A -c echo_fds fd.name=/dev/pretmx and proc.name=sshd

Show every file open that happens in /etc

  1. sysdig evt.type=open and fd.name contains /etc

Show the ID of all the login shells that have launched the "tar" command

  1. sysdig -r file.scap -c list_login_shells tar

Show all the commands executed by the login shell with the given ID

  1. sysdig -r trace.scap.gz -c spy_users proc.loginshellid=5459

7、容器

查看机器上运行的容器列表及其资源使用情况

  1.  sudo csysdig -vcontainers

查看容器上下文的进程列表

  1.  sudo csysdig -pc

查看运行在wordpress1容器里CPU的使用率

  1.  sudo sysdig -pc -c topprocs_cpu container.name=wordpress1

查看运行在wordpress1容器里网络带宽的使用率

  1.  sudo sysdig -pc -c topprocs_net container.name=wordpress1

查看在wordpress1容器里使用网络带宽最多的进程

  1.  sudo sysdig -pc -c topprocs_net container.name=wordpress1

查看在wordpress1 容器里占用 I/O 字节最多的文件

  1.  sudo sysdig -pc -c topfiles_bytes container.name=wordpress1

查看在wordpress1 容器里网络连接的排名情况

  1.  sudo sysdig -pc -c topconns container.name=wordpress1

显示wordpress1容器里所有命令执行的情况

  1.  sudo sysdig -pc -c spy_users container.name=wordpress1

功能是不是很强大,不过记起来有点麻烦,可以在使用的时候使用sysdig -l 查看所支持的事件列表,使用sysdig -L 查看事件所支持的过滤列表。具体也可以参看官方guide文档。

三、csysdig交互式处理

感觉上面的方法还是比较麻烦怎么办?可以不可以交互式选择呢?当然没问题,在sysdig包里还提供了一个工具csysdig,该工具执行后,效果和top命令类似 ,见下图:

 

通过F1~F8 及crtl + F 等功能键可以方便的切换视图和filter过滤。该功能可以参看youtube上的官方出的视频 :https://www.youtube.com/watch?v=UJ4wVrbP-Q8 (需FQ)

 

转:https://www.cnblogs.com/dpwindy/p/9088292.html



推荐阅读
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • LINUX学习之centos7营救模式
    今天卸载软件的时候,不小心把GNOME的一些组件给卸了,导致桌面无法正常开启,会卡在启动过程中,而我的开机启动模式又是设置为图形界面,所以一开LINUX就卡住了,进入不了命令行界面 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 进入配置文件目录:[rootlinuxidcresin-4.0.]#cdusrlocalresinconf查看都有哪些配置文件:[rootlinuxid ... [详细]
author-avatar
麦尔小哈PICA
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有