首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >sysdig命令参考手册

sysdig命令参考手册

原创
作者头像
用户10638239
发布于 2024-03-27 03:38:55
发布于 2024-03-27 03:38:55
1.2K00
代码可运行
举报
文章被收录于专栏:LlinuxLlinux
运行总次数:0
代码可运行

六-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
AI代码解释
复制
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
AI代码解释
复制
sysdig -l   #事件类型
sysdig -cl  #chisels工具类型

六 IO

代码语言:bash
AI代码解释
复制
#查看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
AI代码解释
复制
#抓取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
AI代码解释
复制
#查看哪些文件花费时间做多
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
sysdig proc.name=kubelet

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sysdig proc.name=nginx

9.6 查看建立TCP连接事件

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sysdig evt.type=accept

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
AI代码解释
复制
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
AI代码解释
复制
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
AI代码解释
复制
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
AI代码解释
复制
csysdig –vcontainers	查看机器上容器列表及资源使用情况
sysdig -c topcontainers_cpu/topcontainers_net/topcontainers_file	查看容器资源使用TOP

9.9 示例

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

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

2.查看网络。

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

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

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

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

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

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

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

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
超级系统工具Sysdig,比 strace、tcpdump、lsof 加起来还强大
可以用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 查看连接最多的服务器端口 in terms of established connections: sysd
小小科
2018/05/03
1.2K0
Sysdig:Linux系统监控与分析的全能利器
Sysdig的官网上自我介绍为:“具有原生容器支持的开源通用系统可视化工具”。这一定位准确概括了Sysdig的三大优势:整合性、强大的监控分析能力、以及灵活性。
五分钟学SRE
2024/04/16
2K0
Sysdig:Linux系统监控与分析的全能利器
Linux 监控和调试利器 Sysdig 入门教程
Open Source Universal System Visibility With Native Contaier Support.
233333
2023/01/01
2.4K0
Linux 监控和调试利器 Sysdig 入门教程
系统之锹sysdig:Linux服务器监控和排障利器
当你需要追踪某个进程产生和接收的系统调用时,首先浮现在你脑海中的是什么?你可能会想到strace,那么你是对的。你会使用什么样的命令行工具来监控原始网络通信呢?如果你想到了tcpdump,你又作出了一个极佳的选择。而如果你碰到必须追踪打开的文件(在Unix意义上:一切皆文件)的需求,可能你会使用lsof。
星哥玩云
2022/07/03
1K0
系统之锹sysdig:Linux服务器监控和排障利器
一个Python开源项目-哈勃沙箱源码剖析(下)
在上一篇中,我们讲解了哈勃沙箱的技术点,详细分析了静态检测和动态检测的流程。本篇接着对动态检测的关键技术点进行分析,包括strace,sysdig,volatility。volatility的介绍不会太深入,内存取证这部分的研究还需要继续。
七夜安全博客
2019/03/04
1.5K0
一个Python开源项目-哈勃沙箱源码剖析(下)
如何使用Sysdig监视您的Ubuntu 16.04系统
Sysdig是一个全面的开源系统活动监控,捕获和分析应用程序。它具有强大的过滤语言和可自定义的输出,以及可以使用称为chisels 的Lua脚本扩展的核心功能。
乌鸦
2018/07/31
2.8K0
如何使用Sysdig监视您的Ubuntu 16.04系统
Docker安全入门与实战(三)
入侵检测和漏洞扫描可谓是主动发现安全问题的“内功外功”,在容器技术应用越来越广泛的今天,也需要被给予同样的重视。本文将探讨Docker入侵检测工具Sysdig Falco的基础知识以及如何检测容器的异常行为等问题。 Sysdig Falco是一种旨在检测异常活动开源的系统行为监控程序。作为Linux主机入侵检测系统,对待Docker依旧特别有用,因为它支持容器上下文,如container.id,container.image或其规则的命名空间。
0xtuhao
2022/06/21
8040
Docker安全入门与实战(三)
探索Sysdig Falco:容器环境下的异常行为检测工具
随着容器技术的兴起,容器运行时的安全监控也成为各方关注的焦点。在各行各业积极上云的今天,如何及时准确发现容器环境内部的安全威胁并进行告警和处置,是容器平台开发运维和应急响应团队必须考虑的问题。Falco作为一款为云原生平台设计的进程异常行为检测工具,支持接入系统调用事件和Kubernetes审计日志,与其他工具相比具有独特优势,能够在前述问题上带给我们很多有益思考。本文希望通过两个场景来探索Falco的特性。
绿盟科技研究通讯
2019/12/11
4.3K0
探索Sysdig Falco:容器环境下的异常行为检测工具
Docker
与其他介绍Docker的文章不同,由本文开启的系列文章将专注于Docker安全研究,一共分为6部分。
扬起
2022/06/24
1.3K0
Docker
Openstack侦探故事2
在Episode1的Openstack侦探故事中,我被叫到犯罪现场:我们的基于OpenStack的私有云中心器件。什么人或什么东西造成了我们的虚拟负载均衡可以拍动高度可用的IP地址。tcpdump显示我有个VRRP包具有时间延迟。这些延迟源于第一个平衡器,主负载均衡器。
ZHaos
2019/02/27
3800
如何阻止云中的DDoS攻击
从2022年1月到7月,Sysdig威胁研究团队实施了一个全球蜜网系统,通过多个攻击载体捕获了大量漏洞。Sysdig在《2022年云原生威胁报告》中指出,相较2021年,2022年的攻击类型已经从加密挖矿明显转向分布式拒绝服务(DDoS)活动。 如果组织希望通过检测与此威胁相关的早期迹象,来了解如何在云环境中预防DDoS攻击,那么本文将介绍保护云基础设施所需的大多数最佳实践。 云中DoS攻击的技术和方法 在OSI(Open Systems Interconnection)模型中,DDoS攻击的模式和行为
FB客服
2023/02/24
2K0
如何阻止云中的DDoS攻击
Linux服务器如何实时查看哪些文件正在被读写
通过iotop或者top命令看到某个进程有大量的读写io ,但是不清楚具体是哪个文件产生的读写io。
隔壁没老王
2024/11/28
4410
云原生运行时安全Falco入门
云原生时代Kubernetes技术解决了基础架构平台Day 1 Operation问题,而Day 2 Operation包含了monitor,maintain,和 troubleshoot等一系列运行时工作,其中「云原生安全问题」已经引起越来越多的注意,今天的主角「Falco」就是保障云原生运行时安全。 Falco,云原生时代的安全保镖 Falco,开源的云原生运行时安全项目,目前是威胁Kubernetes平台监测引擎的事实标准,还可以监测意外的应用行为和运行时发出的威胁警告。Falco也是第一个加入云原生
nevermosby
2020/05/11
2.4K0
详解运行时安全检测神器:Falco
在当今快速发展的云计算和容器技术时代,安全已成为组织面临的一大挑战。随着云原生应用的普及,传统的安全措施已不足以应对复杂的分布式环境。在这样的背景下,Falco应运而生,成为云原生安全领域的一颗新星。目前在github中,该项目已经拥有了7.3k的star,众多的企业级运行时安全检测引擎也基于该工具二次开发。
星尘安全
2024/09/23
1K0
详解运行时安全检测神器:Falco
io复用之poll源码分析(基于linux2.6.13.1)
poll系统调用是io复用早期的实现,和select、epoll类似。今天来分析一下他的原理。先看一下poll的声明。
theanarkh
2020/04/14
7380
io复用之poll源码分析(基于linux2.6.13.1)
从Falco看如何利用eBPF检测系统调用
eBPF是一项革命性的技术,可以在操作系统内核中运行沙盒程序。它用于安全有效地扩展内核的功能,而无需更改内核源代码或加载内核模块。通过允许在操作系统中运行沙箱程序,应用程序开发人员可以运行eBPF程序,以便在运行时向操作系统添加额外的功能。然后,操作系统保证安全性和执行效率,就像在实时(JIT)编译器和验证引擎的帮助下进行本机编译一样。这导致了一波基于eBPF的项目,涵盖了广泛的用例,包括下一代网络、可观察性和安全功能。
绿盟科技研究通讯
2022/06/06
2.9K0
从Falco看如何利用eBPF检测系统调用
手拿放大镜深究文件I/O
linux系统下一切皆文件,我们几乎无时无刻不在跟文件打交道。内核对文件I/O做了很好的封装,使得开发人员便捷地操作文件,但也因此隐藏了很多细节。如果对其不求甚解,在实际开发中可能会碰到一些意想不到的问题。这次,让我们手拿放大镜,一起窥探文件I/O的全貌。
用户7016586
2022/08/12
9520
手拿放大镜深究文件I/O
【Linux】————进程间通信(匿名管道)
1.一个冷知识: 屏蔽力是一个人最顶级的能力,任何消耗你的人和事,多看一眼都是你的不对。
用户11036582
2024/10/29
2090
【Linux】————进程间通信(匿名管道)
【网络编程】十五、多路转接之 select
​ 系统提供 select 函数来实现多路复用输入/输出模型,这个函数是用来让我们的程序监视多个文件描述符的状态变化的,程序会停在 select 函数中等待,直到被监视的文件描述符有一个或多个发生了状态改变。
利刃大大
2025/05/23
1640
【网络编程】十五、多路转接之 select
从redis原理的角度认知Set命令的执行过程
本篇文章主要讲解 ,从redis原理的角度了解一个 set 命令从redis client发出到 redis server端接收到客户端请求的时候,到底经历了哪些过程?
付威
2024/01/02
2930
从redis原理的角度认知Set命令的执行过程
相关推荐
超级系统工具Sysdig,比 strace、tcpdump、lsof 加起来还强大
更多 >
LV.2
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档