前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sysdig命令参考手册

sysdig命令参考手册

原创
作者头像
用户10638239
发布2024-03-27 11:38:55
3280
发布2024-03-27 11:38:55
举报
文章被收录于专栏:LlinuxLlinux

六-r < filename >

-c < chiselname > < chiselargs >

指定打印事件时使用的格式。

-p < output_format>, --print=< output_format>,

使用-pc或-pcontainer 容器友好的格式,

使用-pk或-pkubernetes k8s友好的格式多少秒后停止收集。

-M < num_seconds >

列出可用于过滤和输出的字段。

-L, --list

抓取给定端口的数据交换

spy_port

抓取给定ip的数据交换

spy_ip

输出文件的读写数据,可以提供某个文件名作为参数

spy_file

列出网络连接情况

netsata

输出进程读写数据

echo_fds

fdcount_by 按照建立连接书对进程排序

fdcount_by 按照建立连接书对进程排序

按照网络使用情况对进程排序

topprocs_net

输出按照cpu使用率排序

topprocs_cpu

输出所有的http请求

httplog

说明

事件的参数。如果为系统调用,则对应系统调用的参数

evt.args

事件的名称,比如open、stat等,一般为系统调用

evt.type

evt.dir

thread.tid 线程id,单线程则为进程id

thread.tid 线程id,单线程则为进程id

生成事件的进程名字

proc.name

evt.num 递增的事件号

evt.cpu 事件被捕获时所在cpu

evt.cpu 事件被捕获时所在cpu

evt.time 事件发生的时间

evt.time 事件发生的时间

事件 说明

事件 说明

事件 说明

evt.num 递增的事件号

evt.num 递增的事件号

这个 SYSDIG 快速参考备忘清单显示了常用命令和配置使用清单,

注意事项:此命令需要依赖kernel-devel,且最好为系统自带的大版本,如:contso7 3.10.x,否则需要自己编译处理依赖。

一 命令安装

代码语言:bash
复制
1.导入官方yum源的key,下载官方draios源。
sudo rpm --import https://download.sysdig.com/DRAIOS-GPG-KEY.public  
sudo curl -s -o /etc/yum.repos.d/draios.repo https://download.sysdig.com/stable/rpm/draios.repo

2.配置epel源的目的是需要安装dkms依赖包,后安装sysdig。
sudo yum install epel-release -y
sudo yum -y install sysdig

3.加载到内核中,加载成功可以查看到scap驱动模块。
sudo scap-driver-loader 

二 常用参数

参数

说明

-L, --list

列出可用于过滤和输出的字段。

-M < num_seconds >

多少秒后停止收集。

-p < output_format>, --print=< output_format>, 使用-pc或-pcontainer 容器友好的格式, 使用-pk或-pkubernetes k8s友好的格式

指定打印事件时使用的格式。

-c < chiselname > < chiselargs >

指定内置工具,可直接完成具体的数据聚合、分析工作。

-C 5

每个文件不超过5M

-W 10

保留不超过10个文件

-G 60

每个文件只保留一分钟内的系统活动

-w dump.pcap || -w < filename >

保存到文件 ,特定格式,要用sysdig打开。

-e 1000

每个文件只有1000个事件

-z

参数对保存的内容进行压缩

-A --print-ascii

把buffer中数据按照ASCII格式打印,方便阅读

-x --print-hex

把buffer中数据按照十六进制打印

-X --printhex-ascii

把buffer中数据同时按照ASCII格式和十六进制打印

-s 1024

捕获buffer的数据大小,默认为80,设置过大,文件会很大

-N

不用把端口号转成可读名字

-r < filename >

从文件读取

三 输出含义

事件

说明

evt.num

递增的事件号

evt.time

事件发生的时间

evt.cpu

事件被捕获时所在cpu

proc.name

生成事件的进程名字

thread.tid

线程id,单线程则为进程id

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

抓取给定端口的数据交换

五 命令帮助

代码语言:bash
复制
sysdig -l   #事件类型
sysdig -cl  #chisels工具类型

六 IO

代码语言:bash
复制
#查看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"

#打印延迟大于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

#打印nginx进程已经读取中和写入中的文件
sysdig -c topfiles_bytes proc.name=nginx

#查看活跃中的读和写最多的目录
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

七 网络

代码语言:bash
复制
#抓取kubernetes pod 的客户端ip为172.119.110.17,3000端口的的请求内容
$ sudo sysdig -A -c echo_fds  k8s.pod.name contains piller-datacenter-web-dev and fd.port=3000 and evt.type=read and fd.cip=172.119.110.17 fd.proto=UDP

#查看占用网络带宽最多的进程
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

#查看连接最多的服务器端口
in terms of established connections:
sysdig -c fdcount_by fd.sport "evt.type=accept"
in terms of total bytes:
sysdig -c fdbytes_by fd.sport

#查看客户端连接最多的ip
in terms of established connections
sysdig -c fdcount_by fd.cip "evt.type=accept"
in terms of total bytes
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

八 进程

代码语言:bash
复制
#查看哪些文件花费时间做多
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

九 常用

9.1 采集分析

采集数据示例:

59509 23:59:19.023099531 0 kubelet (1738) < epoll_ctl

采集数据格式:

%evt.num %evt.outputtime %evt.cpu %proc.name (%thread.tid) %evt.dir %evt.type %evt.info

字段说明:

evt.num: 递增的事件号。

evt.time: 事件发生的时间。

evt.cpu: 事件被捕获时所在的 CPU,也就是系统调用是在哪个 CPU 执行的。

proc.name: 生成事件的进程名字。

thread.tid: 线程的 id,如果是单线程的程序,这也是进程的 pid。

evt.dir: 事件的方向(direction),> 代表进入事件,< 代表退出事件。

evt.type: 事件的名称,比如 open、stat等,一般是系统调用。

evt.args: 事件的参数。如果是系统调用,这些对应着系统调用的参数

9.2 采集系统调用事件。

65611 05:29:20.772919597 1 sshd (22944.22944) > write fd=3(<4t>192.168.130.1:58986->192.168.130.147:22) size=4148

第一列(65611):事件编号,从1开始记录。

第二列(05:29:20.772919597):时间。

第三列(1):进程当前工作所在的cpu编号,从0开始。

第四列(sshd):进程名称。

第五列(22944.22944) :括号里是线程id,两个数值相同说明就一个线程。

第六列( > ): 进入事件,<代表退出事件。

第七列(write):事件名称。

第八列:事件信息,fd=3 是指打开的文件描述符是3,这里就是建立了一条TCP链接。

9.3 自定义过滤条件采集数据,对系统调用的事件编号和cpu进行采集1秒。

代码语言:javascript
复制
sysdig -M 1 -p "%evt.num,%evt.cpu"

9.4 示例

sysdig常用过滤目标:

fd:根据文件描述符过滤,比如 fd 标号(fd.num)、fd 名字(fd.name)

process:根据进程信息过滤,比如进程 id(proc.id)、进程名(proc.name)

evt:根据事件信息过滤,比如事件编号、事件名

user:根据用户信息过滤,比如用户 id、用户名、用户 home 目录

syslog:根据系统日志过滤,比如日志的严重程度、日志的内容

container:根据容器信息过滤,比如容器ID、容器名称、容器镜像

支持运算操作符:

=、!=、>=、>、<、<=、contains、in 、exists、and、or、not

9.5 查看某进程系统调用事件

9.5.1 查看kubelet进程的系统调用。

代码语言:javascript
复制
sysdig proc.name=kubelet

9.5.2 查看nginx进程的系统调用。

代码语言:javascript
复制
sysdig proc.name=nginx

9.6 查看建立TCP连接事件

tcp三次握手时,有个标识是accept。

代码语言:javascript
复制
sysdig evt.type=accept

9.7 查看某目录下打开的文件描述符

9.7.1 查看/etc/当前目录下打开的文件描述符。

代码语言:bash
复制
sysdig fd.name=/etc

9.7.2 查看/etc/目录下所有目录打开的文件描述符。

代码语言:javascript
复制
sysdig fd.name contains /etc

9.8 Chisels工具

Chisels是个实用的工具箱,一组预定义的功能集合,用来分析特定的场景。

sysdig –cl 列出所有Chisels,常用的如下:

topprocs_cpu:输出按照 CPU 使用率排序的进程列表

topprocs_net:输出进程使用网络TOP

topprocs_file:进程读写磁盘文件TOP

topfiles_bytes:读写磁盘文件TOP

netstat:列出网络的连接情况

9.8.1 网络类

代码语言:bash
复制
sysdig -c topprocs_net	                                查看使用网络的进程TOP
sysdig -c fdcount_by fd.sport “evt.type=accept” -M 10	查看建立连接的端口
sysdig -c fdbytes_by fd.sport	                        查看建立连接的端口
sysdig -c fdcount_by fd.cip “evt.type=accept” -M 10	    查看建立连接的IP
sysdig -c fdbytes_by fd.cip	                            查看建立连接的IP

9.8.2 硬盘类

代码语言:bash
复制
sysdig -c topprocs_file                                查看进程磁盘I/O读写
sysdig -c fdcount_by proc.name “fd.type=file” -M 10    查看进程打开的文件描述符数量
sysdig -c topfiles_bytes||sysdig -c topfiles_bytes proc.name=etcd        查看读写磁盘文件
sysdig -c fdbytes_by fd.filename “fd.directory=/tmp/”    查看/tmp目录读写磁盘活动文件

9.8.3 cpu类

代码语言:bash
复制
sysdig -c topprocs_cpu	                          查看CPU使用率TOP
sysdig -pc -c topprocs_cpu container.name=web     查看容器CPU使用率TOP
sysdig -pc -c topprocs_cpu container.id=web	      查看容器CPU使用率TOP

9.8.4 容器类

代码语言:bash
复制
csysdig –vcontainers	查看机器上容器列表及资源使用情况
sysdig -c topcontainers_cpu/topcontainers_net/topcontainers_file	查看容器资源使用TOP

9.9 示例

1.查看当前系统cpu使用占比最高的进程。

代码语言:bash
复制
sysdig -c  topprocs_cpu

2.查看网络。

代码语言:bash
复制
sysdig -c  topprocs_net

3.查看哪些进程在磁盘读写。

代码语言:bash
复制
sysdig -c  topprocs_file

4.查看哪些文件在磁盘读写。

代码语言:bash
复制
sysdig -c  topfiles_bytes

5.查看端口被链接的数量。

代码语言:bash
复制
sysdig -c fdcount_by fd.sport

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 命令安装
  • 二 常用参数
  • 三 输出含义
  • 四 chisels常用工具
  • 五 命令帮助
  • 六 IO
  • 七 网络
  • 八 进程
  • 九 常用
    • 9.1 采集分析
      • 9.2 采集系统调用事件。
        • 9.3 自定义过滤条件采集数据,对系统调用的事件编号和cpu进行采集1秒。
          • 9.4 示例
            • 9.5 查看某进程系统调用事件
              • 9.5.1 查看kubelet进程的系统调用。
              • 9.5.2 查看nginx进程的系统调用。
            • 9.6 查看建立TCP连接事件
              • 9.7 查看某目录下打开的文件描述符
                • 9.7.1 查看/etc/当前目录下打开的文件描述符。
                • 9.7.2 查看/etc/目录下所有目录打开的文件描述符。
              • 9.8 Chisels工具
                • 9.8.1 网络类
                • 9.8.2 硬盘类
                • 9.8.3 cpu类
                • 9.8.4 容器类
              • 9.9 示例
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档