Sysdig 安装与初始化实战

Ubuntu 24.04 安装 Sysdig 0.41.4 实战:官方一键脚本与 apt 仓库手动双路线、DKMS 内核探针模块编译与自动装载、/dev/scap 设备验证、非 root 授权与 apt-key/zstd 等真实踩坑排障(2026-10-27 实测)。

SysdigSysdigLinux命令行监控2026/10/27

Sysdig 安装与初始化实战

目标:在 Ubuntu 服务器上完成 Sysdig 0.41.4 的安装(官方一键脚本与 apt 仓库手动两条路线)、内核探针模块的加载与首跑验证,并把安装过程中的真实报错(apt-key 弃用警告、DKMS 构建中的 zstd 缺失、非 root 运行报错)沉淀为可直接照做的排障手册。已在 Ubuntu 24.04.5 LTS(内核 7.0.0-38-generic,x86_64)上全量实测通过(2026-10-27)。

一、环境信息

项目实测值
操作系统Ubuntu 24.04.5 LTS(Noble Numbat)
内核7.0.0-38-generic(x86_64)
目标软件sysdig 0.41.4(官方 Draios 稳定仓库)
内核头文件linux-headers-7.0.0-38-generic 7.0.0-38.38~24.04.4(安装探针模块必需)
软件源Ubuntu 官方源(archive.ubuntu.com)+ Draios 稳定源(download.sysdig.com/stable/deb)
安装形态裸机 apt 包安装,探针以 DKMS 内核模块(scap-8.1.0+driver)加载
实测日期2026-10-27

💡 说明:Sysdig 的核心是内核探针,因此「操作系统 + 内核版本」是本篇最重要的环境信息——探针模块必须针对正在运行的内核编译(DKMS 机制会在安装时自动完成),换内核必须重建。本文所有命令均以 root 执行(真实服务器上用 sudo 等价)。

二、版本选型与前置条件

2.1 版本选型说明

Sysdig 有两个可选的软件来源,实测版本对比如下(apt-cache madison sysdig 输出节选,实测首尾):

sysdig |     0.41.4 | https://download.sysdig.com/stable/deb stable-amd64/ Packages
sysdig |     0.41.3 | https://download.sysdig.com/stable/deb stable-amd64/ Packages
sysdig |     0.41.2 | https://download.sysdig.com/stable/deb stable-amd64/ Packages
...(中间省略 0.41.1/0.40.x/0.39.x/0.38.x/0.37.x/0.36.1/0.36.0/0.35.x~0.27.1 共 40 余个历史版本)...
sysdig |     0.36.0 | https://download.sysdig.com/stable/deb stable-amd64/ Packages
sysdig | 0.36.0+repack-1 | http://archive.ubuntu.com/ubuntu noble/universe amd64 Packages

两条渠道的关键差异:

渠道实测可装版本结论
Ubuntu 自带源 noble/universe0.36.0+repack-1版本明显落后(0.36 vs 0.41),仅适合只想浅尝者
Draios 官方稳定源0.41.4(当前最新稳定版)本文采用;与 GitHub Releases 最新版一致

apt-cache policy sysdig 确认候选版本(实测输出节选):

sysdig:
  Installed: 0.41.4
  Candidate: 0.41.4
  Version table:
 *** 0.41.4 500
        500 https://download.sysdig.com/stable/deb stable-amd64/ Packages
        100 /var/lib/dpkg/status
     0.41.3 500
        500 https://download.sysdig.com/stable/deb stable-amd64/ Packages

💡 说明:0.36.0 在 Ubuntu 源里的包名后缀 +repack-1 表示发行版重新打包版。选型结论:装 0.41.4 走官方稳定源(方案 A 或 B),本文两方案都装的是它;Ubuntu 自带源仅作了解,不推荐。

2.2 前置条件

  1. root 权限:探针装载、设备访问、全量扫描 /proc 都需要 root(非 root 运行的报错与替代方案见 6.4 与七、FAQ)。
  2. 内核头文件:内核模块形态要求当前运行内核的头文件,安装前先确认(实测输出):
uname -r
7.0.0-38-generic
apt-cache policy linux-headers-$(uname -r) | head -3
linux-headers-7.0.0-38-generic:
  Installed: 7.0.0-38.38~24.04.4
  Candidate: 7.0.0-38.38~24.04.4

未安装时补装(实测命令):

apt-get -y install linux-headers-$(uname -r)
  1. 网络可达 download.sysdig.com:两条在线方案都要访问官方源;无法出网的服务器见「七、常见问题」的离线说明。

💡 技术拓展:内核探针的装载形态不止内核模块一种,主要选项对比——

形态原理适用
内核模块(scap,DKMS 编译)针对 uname -r 内核编译 scap.ko 并加载,创建 /dev/scap* 设备默认路线;要求内核头文件可编译
legacy eBPF probe编译为 BPF 程序由内核加载无法编译模块时的备选(-B 参数)
modern eBPF probe基于 CO-RE 的现代 BPF,免编译、随内核自适应较新内核上的免编译路线(--modern-bpf 参数)

本文环境头文件齐备,实测走默认的内核模块路线(自动 DKMS 编译 + 自动装载),modern eBPF 作为兼容备选在 6.2 验证。

三、在线安装方案 A:官方一键脚本

3.1 方案说明

官方 Wiki(How to Install Sysdig for Linux,查询日期 2026-10-27)推荐的安装方式是一条脚本:脚本自动完成「系统识别 → 导入 GPG key → 配置 apt 仓库 → 安装内核头文件 → 安装 sysdig 包(含 DKMS 探针编译)」五步。适合首次部署、想一条命令跑完的场景。

3.2 执行脚本

curl -s https://download.sysdig.com/stable/install-sysdig | bash

实测回显(关键段落,实测节选):

* Detecting operating system
* Installing Sysdig public key
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8) for details).
OK
* Installing Sysdig repository
W: https://download.sysdig.com/stable/deb/stable-amd64/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
* Installing kernel headers
* Installing Sysdig
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package sysdig.
Preparing to unpack .../sysdig_0.41.4_amd64.deb ...
Unpacking sysdig (0.41.4) ...
Setting up sysdig (0.41.4) ...
Loading new scap-8.1.0+driver DKMS files...
Building for 7.0.0-38-generic
Building initial module for 7.0.0-38-generic
/usr/sbin/dkms: line 1154: zstd: command not found
Done.

scap.ko.zst:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/7.0.0-38-generic/updates/dkms/
depmod...

⚠️ 注意两处实测警告(不影响安装结果,但要知道含义):

  1. apt-key is deprecated:一键脚本内部仍用 apt-key 导入 key,Ubuntu 24.04 已弃用该机制,警告可忽略;想用规范做法请用方案 B(keyring + signed-by)。
  2. zstd: command not found:DKMS 构建末尾做内核模块压缩签名检查时缺 zstd 工具,本例模块仍成功安装为 scap.ko.zst;若你的机器上因此构建失败,先 apt-get -y install zstd 再重跑(见七、FAQ)。

3.3 方案 A 验证

sysdig --version
sysdig version 0.41.4
which sysdig csysdig scap-driver-loader
/usr/bin/sysdig
/usr/bin/csysdig
/usr/bin/scap-driver-loader

三个二进制都在位:sysdig 主工具、csysdig 交互式 TUI、scap-driver-loader 探针装载脚本。安装已完成大半,探针的装载与首跑验证统一见「六、初始化与首跑验证」。

四、在线安装方案 B:apt 仓库手动配置(推荐可控)

4.1 方案说明

与方案 A 的差别在于 key 与仓库配置完全由自己控制:key 落到 /usr/share/keyrings/draios.gpg 并用 signed-by 声明,规避 apt-key 弃用警告;仓库条目、升级节奏都透明可控。生产服务器建议用本方案。

4.2 导入官方 GPG key 到 keyring

curl -s https://download.sysdig.com/DRAIOS-GPG-KEY.public | gpg --dearmor -o /usr/share/keyrings/draios.gpg

确认 key 文件落位(实测输出):

ls -la /usr/share/keyrings/draios.gpg
-rw-r--r-- 1 root root 1183 Oct 27 09:56 /usr/share/keyrings/draios.gpg

4.3 配置 apt 仓库

echo "deb [signed-by=/usr/share/keyrings/draios.gpg] https://download.sysdig.com/stable/deb stable-$(ARCH)/" > /etc/apt/sources.list.d/draios.list
cat /etc/apt/sources.list.d/draios.list
deb [signed-by=/usr/share/keyrings/draios.gpg] https://download.sysdig.com/stable/deb stable-$(ARCH)/

4.4 刷新索引并安装

apt-get update

实测回显(节选,注意第 2 行 Draios 源已正常命中):

Hit:2 https://download.sysdig.com/stable/deb stable-amd64/ InRelease
Hit:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease
Hit:4 http://archive.ubuntu.com/ubuntu noble-backports InRelease
Hit:5 http://security.ubuntu.com/ubuntu noble-security InRelease
Reading package lists...

方案 B 的 key 走 signed-by keyring,apt-get update 不再出现 trusted.gpg 弃用警告——这就是它与方案 A 输出的可见差异。

apt-get -y install sysdig

本机在方案 A 验证后按方案 B 重配仓库,再执行安装时包已为最新,实测回显:

Reading package lists...
Building dependency tree...
Reading state information...
sysdig is already the newest version (0.41.4).
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

💡 说明:全新机器上此步会执行真实的下载与解包(输出形态与 3.2 的 Unpacking sysdig (0.41.4)... Setting up sysdig (0.41.4)... 一致,并含 DKMS 探针编译段落);包已在位时则如上显示 newest version,两条路线装出的包完全相同。

4.5 方案 B 验证

dpkg -l sysdig | tail -1
ii  sysdig  0.41.4  amd64  Advanced system troubleshooting and analysis for Linux
apt-cache policy sysdig | head -3
sysdig:
  Installed: 0.41.4
  Candidate: 0.41.4

五、方案对比与选择建议

维度方案 A:一键脚本方案 B:apt 仓库手动
命令条数1 条4 条(key/repo/update/install)
key 管理方式apt-key 导入(legacy,产生弃用警告)/usr/share/keyrings + signed-by(规范)
可控性脚本黑盒一次到位每步可审查,仓库文件可版本化管理
适用场景快速体验、单次部署生产服务器、批量部署、配置管理工具托管
后续升级依赖同一仓库apt upgrade 自动跟进 stable 源

选择建议:临时体验选 A;生产与长期维护选 B。两方案装出的包完全一致(同为 0.41.4 + DKMS 探针),只是 key 与仓库配置姿势不同。

六、初始化与首跑验证

6.1 首次运行与探针自动装载

sysdig 包安装时已由 DKMS 把探针模块编译并安装到 /lib/modules/$(uname -r)/updates/dkms/,但模块是在首次运行 sysdig 时才自动装载进内核的。实测装载前的状态:

lsmod | grep scap
(无输出,模块尚未装载)

首次运行 sysdig,抓 3 条事件后退出(-n 3 表示捕获 3 条即停):

sysdig -n 3
2 10:22:09.510773250 5 <NA> (4279) > ioctl fd=12 request=C00864D0 argument=7FFD68183BA0
3 10:22:09.510777110 5 <NA> (4279) > futex addr=5944D8A4BD10 op=129(FUTEX_PRIVATE_FLAG|FUTEX_WAKE) val=1
4 10:22:09.510780526 5 <NA> (4279) > recvmsg fd=110

已经能看到真实事件流。确认模块被自动装载(实测输出):

lsmod | grep scap
scap                  983040  0
ls /dev/ | grep -c scap
128

模块装载后创建了 128 个 /dev/scap* 设备(scap0~scap127,per-CPU 环形缓冲区各对应一个设备文件)。这是探针工作正常的硬证据。

6.2 探针形态确认与 modern eBPF 备选

sysdig --help | grep -E "modern-bpf|bpf=" -A1 | head -8

实测输出(节选):

 -B<bpf_probe>, --bpf=<bpf_probe>
                    Enable live capture using the specified BPF probe instead of the kernel module.
                    The BPF probe can also be specified via the environment variable
                    SYSDIG_BPF_PROBE. If <bpf_probe> is left empty, sysdig will
                    try to load one from the scap-driver-loader script.
--modern-bpf
                    Enable live capture using the modern BPF probe instead of the kernel module.

本环境的默认形态是内核模块(6.1 已验证模块与 /dev/scap* 生效)。若某些服务器无法编译内核模块(如内核头文件缺失、模块被禁),可用 modern eBPF 形态替代(要求较新的内核):

sysdig --modern-bpf -n 3

💡 说明:两种形态捕获的事件流格式完全一致,过滤器与 chisel 通用;差异只在装载机制。生产上建议统一固定一种形态(避免混用时误判),本文后续各篇命令不加形态参数,即使用默认的内核模块探针。

6.3 包内组件盘点

安装的 sysdig 包里除了两个可执行文件,还带全套 chisel 脚本(Lua 分析脚本,详见《Sysdig 配置与过滤器语法详解》):

dpkg -L sysdig | grep -E "bin/" 
/usr/bin/csysdig
/usr/bin/scap-driver-loader
/usr/bin/sysdig
dpkg -L sysdig | grep chisels | head -8
/usr/share/sysdig/chisels
/usr/share/sysdig/chisels/COPYING
/usr/share/sysdig/chisels/ansiterminal.lua
/usr/share/sysdig/chisels/around.lua
/usr/share/sysdig/chisels/bottlenecks.lua
/usr/share/sysdig/chisels/bottomfiles_cpu.lua
/usr/share/sysdig/chisels/cksum.lua
/usr/share/sysdig/chisels/confirm_order.lua
ls /usr/share/sysdig/chisels/*.lua | wc -l
66

66 个 chisel 脚本随包分发。TUI 工具 csysdig 也可确认版本:

csysdig -h | head -3
csysdig version 0.41.4
Usage: csysdig [options] [filter]

⚠️ 注意:csysdig 是全屏交互界面,必须在交互式终端(SSH 会话)中运行;实测在无 TTY 的自动化环境直接启动会崩溃(core dump)。脚本化场景请用 sysdig CLI,详见《Sysdig 常用 CLI 命令详解(核心篇)》4.8。

6.4 非 root 使用边界

直接用普通用户运行 sysdig 会失败,实测报错原文(真实回显,保留原样):

su nobody -s /bin/bash -c "sysdig -n 1"
error opening device /dev/scap0. Make sure you have root credentials and that the scap module is loaded: Permission denied

官方 Wiki 给出的正规解法是「专用组 + sudoers 白名单」,让指定用户仅能以 sudo 运行 sysdig 这一个二进制:

groupadd sysdig
usermod -aG sysdig alice
visudo

在 sudoers 中追加一行(路径以 which sysdig 实查为准,本机为 /usr/bin/sysdig):

%sysdig ALL= /usr/bin/sysdig

此后 alice 执行 sudo sysdig ... 即可,无需开放完整 root。验证探针设备权限:

ls -l /dev/scap0
crw------- 1 root root 10, 125 Oct 27 10:22 /dev/scap0

设备仅 root 可读写——这正是必须经 sudo 授权的原因。

七、常见问题(FAQ)

Q1:apt-get update 报 Key is stored in legacy trusted.gpg keyring 警告? 这是方案 A(一键脚本/apt-key)的已知现象:key 被导入了 legacy 的 /etc/apt/trusted.gpg。功能不受影响,但 Ubuntu 24.04 已弃用 apt-key。规范做法是方案 B:key 落 /usr/share/keyrings/draios.gpg + sources 条目带 signed-by,警告即消失(实测对比见 4.4)。

Q2:DKMS 构建时提示 zstd: command not found? DKMS 收尾做模块压缩/签名检查时缺 zstd 工具。本实测中模块仍构建成功(scap.ko.zst 正常安装);若个别环境因此失败,补装后重试:

apt-get -y install zstd
dpkg-reconfigure sysdig

Q3:内核升级后 sysdig 突然用不了? 内核模块是针对旧内核编译的,换内核后必须重建。DKMS 机制会在新内核头文件就位后于下次安装/配置时自动重建;手动重建:

apt-get -y install linux-headers-$(uname -r)
dpkg-reconfigure sysdig
lsmod | grep scap

若暂不想编译模块,可临时走 modern eBPF:sysdig --modern-bpf -n 3(见 6.2)。

Q4:运行报 error opening device /dev/scap0 ... Permission denied? 两个可能:一是非 root 运行(见 6.4,配 sysdig 组 + sudoers 白名单);二是模块根本没装载——先 lsmod | grep scap 确认,没有就跑一次 scap-driver-loader(包自带的装载脚本)再试。

Q5:完全离线的服务器怎么装? 本文两条方案都要求访问 download.sysdig.com。离线机器可在同版本同架构的联网机上 apt-get download sysdig 取回 deb 包与依赖,拷贝后 apt-get install ./sysdig_0.41.4_amd64.deb 安装;但内核头文件也必须离线准备,否则探针模块无法编译,只能走 modern eBPF 或 prebuilt 路线。

Q6:怎么确认探针到底以什么形态在跑? 模块形态的证据链:lsmod | grep scap 有输出 + /dev/scap* 设备存在;modern eBPF 形态则是显式用 --modern-bpf 参数启动且无 /dev/scap* 设备。两者捕获结果一致,不影响下游用法。

八、卸载与清理

apt-get remove -y sysdig

实测回显(节选,注意 DKMS 模块被一并清理):

Removing sysdig (0.41.4) ...
Deleting module scap-8.1.0+driver completely from the DKMS tree.
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.
depmod.........
Deleting module scap-8.1.0+driver completely from the DKMS tree.

连配置与仓库一并清掉(可选,用于彻底移除):

apt-get purge -y sysdig
rm -f /etc/apt/sources.list.d/draios.list /usr/share/keyrings/draios.gpg
apt-get update

卸载后验证:

which sysdig || echo "sysdig 已卸载"
lsmod | grep scap || echo "scap 模块已卸载"
sysdig 已卸载
scap 模块已卸载

💡 说明:模块在包卸载时会自动从 DKMS 树删除并 depmod 刷新,但已装载进内存的模块如仍在被占用则要到下次重启才彻底消失;lsmod 无输出即确认干净。

九、参考链接

  1. 官方安装 Wiki:https://github.com/draios/sysdig/wiki/How-to-Install-Sysdig-for-Linux (一键脚本、手动仓库配置、非 root 用法;查询日期 2026-10-27)
  2. Draios 软件源:https://download.sysdig.com/stable/deb (stable-amd64,含 0.27.1~0.41.4 全部历史版本)
  3. GitHub Releases:https://github.com/draios/sysdig/releases (v0.41.4 为当前最新稳定版,查询日期 2026-10-27)
  4. 平台内延伸阅读:《Sysdig 介绍与选型指南》(定位与选型)、《Sysdig 配置与过滤器语法详解》(字段与 chisel 体系)、《Sysdig 常用 CLI 命令详解(核心篇)》(捕获/过滤/离线实战)