全栈级系统调用跟踪工具sysdig使用指南

目录

1. 安装方法

2. 核心功能操作

2.1 基础命令格式

2.1.1 核心选项

2.1.2 常用过滤字段

3. 应用场景

3.1 基础应用

3.1.1 实时监控所有系统调用

3.1.2 按进程名过滤

3.1.3 按系统调用类型过滤

3.1.4 数据保存与回放

3.1.4.1 捕获到文件

3.1.4.2 离线分析

3.2 高级过滤与分析

3.2.1 组合过滤条件

3.2.2 输出字段定制

3.2.3 统计高频调用

3.3 容器环境跟踪

3.3.1 监控特定容器

3.3.2 监控容器网络流量

3.3.3  跟踪目标容器的文件活动

3.3.4 显示CPU使用率最高的容器

3.3.5 跟踪容器内文件访问

3.3.6 容器内进程CPU排名

3.4 定位文件泄露

3.5 分析慢SQL查询

3.6 追踪网络连接问题

3.7 自定义聚合分析--捕获延迟>1ms的读写

3.8 离线分析与性能审计

3.8.1 捕获数据供深度分析

3.8.2 离线分析热点

3.9 典型问题定位流程

案例:Nginx容器CPU飙升


        Sysdig 是一款功能强大的 Linux 系统监控与分析工具,专为实时跟踪系统调用(system calls)和诊断系统故障设计。它整合了 strace、tcpdump、lsof 等多个传统工具的功能,提供统一的命令行接口,广泛应用于系统监控、资源优化和故障排查场景,尤其在容器环境(如 Docker 和 Kubernetes)中表现出色。

1. 安装方法

  • 官方脚本安装(推荐)
    curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash
    • 注意:网络不稳定时可多次尝试,脚本支持主流Linux发行版(如Ubuntu/CentOS)。

2. 核心功能操作

2.1 基础命令格式

sysdig [选项] [过滤表达式]

2.1.1 核心选项

选项作用
-s 字节数限制每行输出字节数(避免日志过大)
-w 文件.scap捕获系统状态并保存为文件(仅sysdig可解析)
-r 文件.scap读取已保存的捕获文件进行分析
-c 凿子名称调用预设的分析脚本(Chisel)
-l列出所有可用凿子脚本

2.1.2 常用过滤字段

字段示例值用途
proc.namenginx按进程名过滤
evt.typeread, write按系统调用类型过滤
fd.port80, 3306按网络端口过滤
fd.directory/etc按文件目录过滤
container.idabcd1234按容器ID过滤

3. 应用场景

3.1 基础应用

3.1.1 实时监控所有系统调用

sudo sysdig
  • 输出说明:每行显示一个系统调用事件,包含进程名、CPU、文件/网络操作等原始数据(按 Ctrl+C 停止)。

3.1.2 按进程名过滤

sudo sysdig proc.name=nginx  # 只跟踪Nginx进程

3.1.3 按系统调用类型过滤

sudo sysdig evt.type=open    # 仅跟踪文件打开操作
sudo sysdig evt.type=connect # 仅跟踪网络连接

3.1.4 数据保存与回放

3.1.4.1 捕获到文件
sudo sysdig -w trace.scap  # 保存为.scap文件
  • 注意:文件较大时用 -s 1024 限制每事件记录大小。
3.1.4.2 离线分析
sudo sysdig -r trace.scap "proc.name=python"  # 从文件过滤数据

3.2 高级过滤与分析

3.2.1 组合过滤条件

sudo sysdig "proc.name=nginx and evt.type=accept and fd.port=80"
  • 解释:监控Nginx进程在80端口的连接接受事件。

3.2.2 输出字段定制

sudo sysdig -p"%evt.time %proc.name %fd.name" evt.type=read
  • 字段说明
    • %evt.time:事件时间戳
    • %proc.name:进程名
    • %fd.name:操作的文件/网络描述符

3.2.3 统计高频调用

sudo sysdig -c topscalls  # 显示最频繁的系统调用

3.3 容器环境跟踪

3.3.1 监控特定容器

sudo sysdig -p  container.name=my_container

3.3.2 监控容器网络流量

  • 选项-p 自动解析容器信息。
sudo sysdig -c topprocs_net container.name=容器名

3.3.3  跟踪目标容器的文件活动

sudo sysdig -c topfiles_bytes container.name=容器名

3.3.4 显示CPU使用率最高的容器

sudo  sysdig -c bottlenecks
sudo  sysdig -c topcontainers_cpu    

  • 对整体系统:优先用 bottlenecks
  • 对容器集群:先用 topcontainers_cpu 筛选容器,再用 bottlenecks 细化。

3.3.5 跟踪容器内文件访问

sudo sysdig -p "container.id=abcd1234 and evt.type=open"

3.3.6 容器内进程CPU排名

sudo sysdig  -c topprocs_cpu container.name=<容器名> 

3.4 定位文件泄露

sudo sysdig "evt.type=open and proc.name!=lsof and fd.name contains /tmp"
  • 作用:监控非 lsof 进程对 /tmp 目录的异常文件访问。

3.5 分析慢SQL查询

sudo sysdig -c fileslower 1000  # 显示耗时>1秒的文件I/O

3.6 追踪网络连接问题

sudo sysdig "evt.type=connect and fd.port=3306 and proc.name=app"
  • 用途:排查应用连接MySQL(3306端口)的失败请求。

3.7 自定义聚合分析--捕获延迟>1ms的读写

sudo sysdig -p"%proc.name %fd.name %evt.latency" "evt.type in (read,write) and evt.latency > 1000000"

3.8 离线分析与性能审计

3.8.1 捕获数据供深度分析

sudo sysdig -s 4096 -w cpu_high.scap  # 保存完整调用数据
  • 参数说明
    • -s 4096:增大捕获缓冲区
    • -w:保存为Sysdig专用格式

3.8.2 离线分析热点

sudo sysdig -r cpu_high.scap -c topscalls_time

sudo sysdig -r cpu_high.scap -c spectrogram  # 生成CPU负载时间分布图

3.9 典型问题定位流程

案例:Nginx容器CPU飙升
  1. 定位问题容器
    sudo sysdig -pc -c topcontainers_cpu
  2. 分析容器内进程
    sudo sysdig -pc -c topprocs_cpu container.name=nginx
  3. 追踪具体调用
    sudo sysdig -pc "container.name=nginx and proc.name=worker" \
    -p"%syscall.type %evt.latency %fd.name"
  4. 发现瓶颈
    1. 若输出显示epoll_wait延迟高 → 网络连接数过多
    2. write调用频繁 → 检查日志写入量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值